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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

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

Ubuntu

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

Q&A

解決済

4回答

3917閲覧

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

dlrowolleh

総合スコア120

Ruby

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

Ubuntu

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

0グッド

0クリップ

投稿2016/11/03 12:22

編集2016/11/04 04:56

###前提・実現したいこと→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 11月 3 19:19 . drwxr-xr-x 33 pc pc 4096 11月 4 12:45 .. drwxrwxr-x 3 pc pc 4096 11月 3 18:52 plugins drwxr-xr-x 2 root root 4096 11月 3 19:38 shims -rw-r--r-- 1 root root 6 11月 3 20:58 version drwxrwxr-x 4 pc pc 4096 11月 3 19:32 versions

です

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tkmtmkt

2016/11/04 01:07

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

2016/11/04 04:18

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

2016/11/04 04:21

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

2016/11/04 04:51

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

回答4

0

二点あります。

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

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

投稿2016/11/03 12:34

raccy

総合スコア21735

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dlrowolleh

2016/11/04 04: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. となりました。
guest

0

ベストアンサー

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

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

sh

1$ 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 04:21

編集2016/11/04 04:30
tkmtmkt

総合スコア1800

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dlrowolleh

2016/11/04 04: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) でうまくいきました!
guest

0

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/03 22:29

編集2016/11/04 04:49
hana-da

総合スコア1728

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dlrowolleh

2016/11/04 04: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 をつけるのかは理解されていますか? よく分かりません。 調べて理解しておきます。
dlrowolleh

2016/11/04 05:03

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

0

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

rbenv exec gem install capybara

を試してみてください

投稿2016/11/03 12:33

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dlrowolleh

2016/11/04 04: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 04:18

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

2016/11/04 04:34

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問