質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

91.73%

  • Ruby

    4602questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • Ubuntu

    719questions

    Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。

UbuntuでRubyのライブラリが導入できない

解決済

回答 4

投稿 2016/11/03 21:22 ・編集 2016/11/04 13:56

  • 評価
  • クリップ 0
  • VIEW 638

dlrowolleh

score 112

前提・実現したいこと→Ubuntu14.04でRubyのライブラリを導入したい

Ubuntu14.04で
Capybara
Anemone
Poltergeist
Nokogiri
等のRubyライブラリを導入したい 

試したこと

$ ruby -v
ruby 2.2.4p230 (2015-12-16 revision 53155) [x86_64-linux]
$ gem list

*** LOCAL GEMS ***

bigdecimal (1.2.6)
io-console (0.4.3)
json (1.8.1)
minitest (5.4.3)
power_assert (0.2.2)
psych (2.0.8)
rake (10.4.2)
rdoc (4.2.0)
test-unit (3.0.8)
$ sudo gem install capybara
Building native extensions.  This could take a while...
ERROR:  Error installing capybara:
    ERROR: Failed to build gem native extension.

        /usr/bin/ruby1.9.1 extconf.rb
/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- mkmf (LoadError)
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from extconf.rb:4:in `<main>'


Gem files will remain installed in /var/lib/gems/1.9.1/gems/nokogiri-1.6.8.1 for inspection.
Results logged to /var/lib/gems/1.9.1/gems/nokogiri-1.6.8.1/ext/nokogiri/gem_make.out

補足情報(言語/FW/ツール等のバージョンなど)

Ubuntu14.04です

追記

$ gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 2.4.5.1
  - RUBY VERSION: 2.2.4 (2015-12-16 patchlevel 230) [x86_64-linux]
  - INSTALLATION DIRECTORY: /home/pc/.rbenv/versions/2.2.4/lib/ruby/gems/2.2.0
  - RUBY EXECUTABLE: /home/pc/.rbenv/versions/2.2.4/bin/ruby
  - EXECUTABLE DIRECTORY: /home/pc/.rbenv/versions/2.2.4/bin
  - SPEC CACHE DIRECTORY: /home/pc/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /home/pc/.rbenv/versions/2.2.4/etc
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /home/pc/.rbenv/versions/2.2.4/lib/ruby/gems/2.2.0
     - /home/pc/.gem/ruby/2.2.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /home/pc/.rbenv/versions/2.2.4/bin
     - /usr/lib/rbenv/libexec
     - /home/pc/.rbenv/plugins/ruby-build/bin
     - /home/pc/.rbenv/shims
     - /home/pc/.rbenv/bin
     - /opt/ros/indigo/bin
     - /usr/local/sbin
     - /usr/local/bin
     - /usr/sbin
     - /usr/bin
     - /sbin
     - /bin
     - /usr/games
     - /usr/local/games
$ rbenv exec gem install capybara
Fetching: nokogiri-1.6.8.1.gem (100%)
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /home/pc/.rbenv/versions/2.2.4/lib/ruby/gems/2.2.0 directory.
$ who am i 
pc       pts/9        2016-11-04 12:45 (:0)


でした.
ごちゃごちゃとして申し訳ありません。
ファイルパーミッションがなんたらかんたらと出ていることに関係あるのでしょうか?

$ ls -la /home/pc/.rbenv
合計 24
drwxrwxr-x  5 pc   pc   4096 113 19:19 .
drwxr-xr-x 33 pc   pc   4096 114 12:45 ..
drwxrwxr-x  3 pc   pc   4096 113 18:52 plugins
drwxr-xr-x  2 root root 4096 113 19:38 shims
-rw-r--r--  1 root root    6 113 20:58 version
drwxrwxr-x  4 pc   pc   4096 113 19:32 versions


です

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • tkmtmkt

    2016/11/04 10:07

    補足情報に gem env の実行結果を加えるとよいでしょう。

    キャンセル

  • hana-da

    2016/11/04 13:18

    $ who am i の結果も見てみたいです

    キャンセル

  • hana-da

    2016/11/04 13:21

    あと $ ls -la /home/pc/.rbenv もお願いします

    キャンセル

  • hana-da

    2016/11/04 13:51

    あとタイトルに全角文字が混っているので直しておいた方が他の人のためだと思います。

    キャンセル

回答 4

+2

二点あります。

  1. Rubyはどうやって入れたでしょうか?rbenvで自分のディレクトリ(~/.rbenv)にいれているのではないでしょうか?もし、そうであれば、sudoをつけずにgemを実行してください。ログを見る限り、どうやらシステムのRuby 1.9.1に入れようとしています。
  2. GCC等のコンパイル等はいれていますか?もしいれていなければsudo apt-get install build-essentialを実行して、コンパイラ等を入れてください。入れようとしているパッケージにはCのネイティブなコードが含まれているため、GCC等のコンパイラが必須です。

上記二点を確認しやり直してもうまく動かない場合は、ログメッセージに出てくるログファイルを確認してください。

投稿 2016/11/03 21:34

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    以下のような回答は評価を下げられます

    • 間違っている回答
    • 質問の回答になっていない投稿
    • 不快な投稿

    評価を下げる際はその理由をコメントに書き込んでください。

  • 2016/11/04 13:10

    ご回答いただきありがとうございます。
    >Rubyはどうやって入れたでしょうか?
    http://qiita.com/dayone/items/b8c3dff003fcfc55cdfeを参考にしました。
    >sudoをつけずにgemを実行
    $ gem install capybara
    ERROR: While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /home/pc/.rbenv/versions/2.2.4/lib/ruby/gems/2.2.0 directory.
    となりました。

    $ sudo apt-get install build-essential
    パッケージリストを読み込んでいます... 完了
    依存関係ツリーを作成しています
    状態情報を読み取っています... 完了
    build-essential はすでに最新版です。
    アップグレード: 0 個、新規インストール: 0 個、削除: 0 個、保留: 42 個。
    でした。
    その後
    $ rbenv exec gem install capybara
    ERROR: While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /home/pc/.rbenv/versions/2.2.4/lib/ruby/gems/2.2.0 directory.
    となりました。

    キャンセル

checkベストアンサー

+1

ユーザ環境のrbenvでrubyを使用しているようなのでsudoは付ける必要ないです。

sudoで実行して作成されたファイルがあるようなので、以下のコマンドでファイルの所有権を自分に戻しておいてください。

$ sudo chown -R $USER:$USER ~/.rbenv ~/.gem

gemの中にはrubyスクリプトだけでなくC言語での実装を含むものがあり、gemのインストール時にコンパイルを行っています。以下のメッセージはコンパイルを行う時に表示されます。(ネイティブ拡張=C言語実装のライブラリをビルドしています。C言語でないものもあるかもしれませんが、あまり詳しくないので。)

Building native extensions.  This could take a while...

何らかの理由で失敗した場合に以下のエラーが表示されます。

ERROR:  Error installing capybara:
    ERROR: Failed to build gem native extension.

        /usr/bin/ruby1.9.1 extconf.rb
/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- mkmf (LoadError)
    from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from extconf.rb:4:in `<main>'

コンパイル中の出力はgem_make.outファイルに記録されています。以下のメッセージにあるgem_make.outの内容を確認すれば、どのような状況で失敗したのかの参考になります。

Gem files will remain installed in /var/lib/gems/1.9.1/gems/nokogiri-1.6.8.1 for inspection.
Results logged to /var/lib/gems/1.9.1/gems/nokogiri-1.6.8.1/ext/nokogiri/gem_make.out

gem_make.outの内容に、makeやgccを実行してCommando not foundとか記録されていれば、raccyさんの回答の2にあるようにコンパイラがインストールされていないと判断できます。

コンパイラをインストールしても別のエラーが出るかもしれませんが、その場合は再度gem_make.outの内容を確認して下さい。よくあるのはxxx.hが見つからないとかのエラーで、これはxxxxx-devやxxxxx-develなどの開発パッケージ(apt-getでインストールする)がインストールされていない場合に出るものです。

メッセージ内から適当な文字を選んで検索すれば何のパッケージをインストールすればよいか見つかると思います。

投稿 2016/11/04 13:21

編集 2016/11/04 13:30

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    以下のような回答は評価を下げられます

    • 間違っている回答
    • 質問の回答になっていない投稿
    • 不快な投稿

    評価を下げる際はその理由をコメントに書き込んでください。

  • 2016/11/04 13:54

    ありがとうございます!!
    $ sudo chown -R $USER:$USER ~/.rbenv ~/.gem
    を実行した後、
    $ rbenv exec gem install nokogiri
    Building native extensions. This could take a while...
    Successfully installed nokogiri-1.6.8.1
    Parsing documentation for nokogiri-1.6.8.1
    Done installing documentation for nokogiri after 2 seconds
    1 gem installed

    $ rbenv exec gem install poltergeist
    Successfully installed poltergeist-1.11.0
    Parsing documentation for poltergeist-1.11.0
    Done installing documentation for poltergeist after 0 seconds
    1 gem installed

    $ rbenv exec gem install anemone
    Successfully installed anemone-0.7.2
    Parsing documentation for anemone-0.7.2
    Done installing documentation for anemone after 0 seconds

    $ rbenv exec gem install poltergeist
    Successfully installed poltergeist-1.11.0
    Parsing documentation for poltergeist-1.11.0
    Done installing documentation for poltergeist after 0 seconds
    1 gem installed

    $ rbenv exec gem install capybara
    Successfully installed capybara-2.10.1
    Parsing documentation for capybara-2.10.1
    Done installing documentation for capybara after 3 seconds
    1 gem installed

    $ gem list

    *** LOCAL GEMS ***

    addressable (2.4.0)
    anemone (0.7.2)
    bigdecimal (1.2.6)
    capybara (2.10.1)
    cliver (0.3.2)
    io-console (0.4.3)
    json (1.8.1)
    mime-types (3.1)
    mime-types-data (3.2016.0521)
    mini_portile2 (2.1.0)
    minitest (5.4.3)
    nokogiri (1.6.8.1)
    poltergeist (1.11.0)
    power_assert (0.2.2)
    psych (2.0.8)
    rack (2.0.1)
    rack-test (0.6.3)
    rake (10.4.2)
    rdoc (4.2.0)
    robotex (1.0.0)
    test-unit (3.0.8)
    websocket-driver (0.6.4)
    websocket-extensions (0.1.2)
    xpath (2.0.0)

    でうまくいきました!

    キャンセル

+1

rbenvでrubyのバージョンを管理されているのでしょうか?
もしそうであれば,

rbenv exec gem install capybara

を試してみてください

投稿 2016/11/03 21:33

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    以下のような回答は評価を下げられます

    • 間違っている回答
    • 質問の回答になっていない投稿
    • 不快な投稿

    評価を下げる際はその理由をコメントに書き込んでください。

  • 2016/11/04 13:16

    >rbenvでrubyのバージョンを管理されているのでしょうか?
    http://qiita.com/dayone/items/b8c3dff003fcfc55cdfe
    を参考に2.2.4にしました。
    $ rbenv exec gem install capybara
    ERROR: While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /home/pc/.rbenv/versions/2.2.4/lib/ruby/gems/2.2.0 directory.
    と出ました。

    キャンセル

  • 2016/11/04 13:18

    rbnev が root 権でインストールされている可能性が高いです.chmod などで,権限を自ユーザーのものにするか,一度消して自ユーザーで入れ直すとうまくいくと思います.

    キャンセル

  • 2016/11/04 13:34

    ご回答いただきありがとうございます。
    $sudo apt-get install -y git rbenv libssl-dev
    を実行しました。
    >権限を自ユーザーのものにするか,一度消して自ユーザーで入れ直すとうまくいくと思います.
    とのことですが、
    sudo apt-get remove rbnev
    の後、
    apt-get install rbenv
    でいいでしょうか?

    キャンセル

+1

rbenv環境化で gem をインストールするには

rbenv exec gem install capybara

です。

そもそも、なぜsudoをつけたのでしょう?
最初から入っているsystemのrubyでgemをinstallする際は確かに sudo gem install とする事がありますが、なぜ sudo をつけるのかは理解されていますか?

前に勉強法について尋ねられた気がしますが、期待どおりの結果が得られたらヨシとするのではなく、すべてのコマンドには必要な理由がありますので、その理由まで理解しないと成長はないですし応用が効かない、まさに付け焼刃の知識になってしまいます。

ぜひ、systemのrubyでgemをinstallする際はsudoが必要な理由、なぜrbenvをつかってrubyを入れるのか、そして、なぜrbenv環境下ではsudoではなくrbenv execをつけるのかを理解してほしいです。


You don't have write permissions for the /home/pc/.rbenv/versions/2.2.4/lib/ruby/gems/2.2.0 directory.

の件。

ls -la /home/pc/.rbenv

の結果のとおり root 所有のファイルが混ってしまっています。
sudo をつけて何かをやってしまった時に混ったのでしょう。

$ sudo chown -R pc:pc /home/pc/.rbenv

して .rbenv 配下の所有権を全て pc:pc に戻してあげてください。

---- 

安易なsudo事故の元です。。。(´・ω・`)ショボーン

投稿 2016/11/04 07:29

編集 2016/11/04 13:49

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    以下のような回答は評価を下げられます

    • 間違っている回答
    • 質問の回答になっていない投稿
    • 不快な投稿

    評価を下げる際はその理由をコメントに書き込んでください。

  • 2016/11/04 13:04

    ご回答いただきありがとうございます。
    http://qiita.com/dayone/items/b8c3dff003fcfc55cdfeを参考に
    Ruby2.2.4にしました。
    これがrbenv環境下ということでしょうか?(自信がないです…)
    rbenv環境下ということなので、
    rbenv exec gem install capybara
    としてみたのですが、
    Fetching: nokogiri-1.6.8.1.gem (100%)
    ERROR: While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions for the /home/pc/.rbenv/versions/2.2.4/lib/ruby/gems/2.2.0 directory.
    と出ました。
    >なぜ sudo をつけるのかは理解されていますか?
    よく分かりません。
    調べて理解しておきます。

    キャンセル

  • 2016/11/04 14:03

    ありがとうございます。
    >sudo をつけて何かをやってしまった時に混った
    >安易なsudo事故の元
    よく分かりました。今後気をつけます(・・;)
    >そもそも、なぜsudoをつけたのでしょう?
    このあたりをきちんと理解できるように勉強します。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

ただいまの回答率

91.73%

関連した質問

同じタグがついた質問を見る

  • Ruby

    4602questions

    Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

  • Ubuntu

    719questions

    Ubuntuは、Debian GNU/Linuxを基盤としたフリーのオペレーティングシステムです。