3

私はUbuntu10.04を実行していて、元々はruby 1.9.1(ソースから)をインストールしました。私はruby1.9.2とrails3を試してみることにしましたが、rvmを使用して複数のrubyインストールとgemsetを処理するのに良い時期のようでした。

rvmがインストールされ、機能しているようです。rvmにruby 1.9.2をインストールし、それをデフォルトのrubyにしました。ただし、ruby 1.9.2でgemをインストールしようとするたびに、このエラーが表示されます。

mark@Steve-Austins-Penguin:~$ gem install haml  
ERROR:  While executing gem ... (Errno::EACCES)  
Permission denied - /home/mark/.gem/specs

gem environment戻り値:

RubyGems Environment:  
- RUBYGEMS VERSION: 1.3.7  
- RUBY VERSION: 1.9.2 (2010-08-18 patchlevel 0) [x86_64-linux]  
- INSTALLATION DIRECTORY: /home/mark/.rvm/gems/ruby-1.9.2-p0  
- RUBY EXECUTABLE: /home/mark/.rvm/rubies/ruby-1.9.2-p0/bin/ruby  
- EXECUTABLE DIRECTORY: /home/mark/.rvm/gems/ruby-1.9.2-p0/bin  
- RUBYGEMS PLATFORMS:  
- ruby  
- x86_64-linux  
- GEM PATHS:  
 - /home/mark/.rvm/gems/ruby-1.9.2-p0  
 - /home/mark/.rvm/gems/ruby-1.9.2-p0@global  
<snip>

しかし、正しいインストール、rubyおよびgemパスがここに表示されている場合、なぜrubyがgemをインストールしようとしているの/home/mark/.gemですか?で示されているすべての変数とパスは正しく表示されますが、パス設定が競合している可能性のあるファイルがシステムのどこにもenv見つかりません。.gemrc

だから私の質問は、/home/mark/.gemsrvmによって設定された正しいパスの代わりにrubygemsがインストールしようとする原因は何でしょうか?


以下の質問への回答:

mark@Steve-Austins-Penguin:~$ echo $PATH
/home/mark/.rvm/gems/ruby-1.9.2-p0/bin:/home/mark/.rvm/gems/ruby-1.9.2-p0@global/bin:/home/mark/.rvm/rubies/ruby-1.9.2-p0/bin:/home/mark/.rvm/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games  
mark@Steve-Austins-Penguin:~$ which gem
/home/mark/.rvm/rubies/ruby-1.9.2-p0/bin/gem
mark@Steve-Austins-Penguin:~$ rvm list

rvm rubies

   ruby-1.8.7-p302 [ x86_64 ]
=> ruby-1.9.2-p0 [ x86_64 ]

mark@Steve-Austins-Penguin:~$ env
rvm_gemsets_path=/home/mark/.rvm/gemsets
MANPATH=:/home/mark/.rvm/man
rvm_scripts_path=/home/mark/.rvm/scripts
rvm_bin_path=/home/mark/.rvm/bin
GEM_HOME=/home/mark/.rvm/gems/ruby-1.9.2-p0
rvm_patchsets_path=/home/mark/.rvm/patchsets
SHELL=/bin/bash
IRBRC=/home/mark/.rvm/rubies/ruby-1.9.2-p0/.irbrc
rvm_patches_path=/home/mark/.rvm/patches
MY_RUBY_HOME=/home/mark/.rvm/rubies/ruby-1.9.2-p0
rvm_selfcontained=1
USER=mark
__shell_array_start=0
rvm_gems_cache_path=/home/mark/.rvm/gems/cache
rvm_config_path=/home/mark/.rvm/config
rvm_path=/home/mark/.rvm
USERNAME=mark
rvm_gemset_separator=@
rvm_ruby_args=
rvm_rubies_path=/home/mark/.rvm/rubies
PWD=/home/mark
rvm_hooks_path=/home/mark/.rvm/hooks
rvm_version=1.0.1
rvm_src_path=/home/mark/.rvm/src
HOME=/home/mark
rvm_gems_path=/home/mark/.rvm/gems
rvm_ruby_string=ruby-1.9.2-p0
BUNDLE_PATH=/home/mark/.rvm/gems/ruby-1.9.2-p0
rvm_tmp_path=/home/mark/.rvm/tmp
LOGNAME=mark
GEM_PATH=/home/mark/.rvm/gems/ruby-1.9.2-p0:/home/mark/.rvm/gems/ruby-1.9.2-p0@global
rvm_action=list
rvm_log_path=/home/mark/.rvm/log
rvm_interactive=1
RUBY_VERSION=ruby-1.9.2-p0
rvm_archives_path=/home/mark/.rvm/archives
rvm_repo_path=/home/mark/.rvm/repos
_=/usr/bin/env

envX、GNOME、SSHに関連するすべてのエントリを削除することで、応答を少し編集しました(この投稿のサイズを制御できるようにするため)。

4

3 に答える 3

7

実行からのバックトレースをフォローアップしgem install -V --backtrace --debug haml(zzzhcに感謝)、/home/mark/.gemディレクトリを詳しく調べたところ、そこにはgemがインストールされておらず、gemspecファイルとgemソースファイルだけであることがわかりました。実験の精神で、コマンドを削除/home/mark/.gemして再実行すると、突然機能しました。gem installそして、/home/mark/.gemインストールしたばかりのgemのgemspecを含むものが再作成されたこと。

元の質問のエラーメッセージを誤って解釈したことは明らかです。にgemをインストールしようとしても、rubygemsは失敗しませんでし/home/mark/.gemた。単に、インストールしようとしている新しくダウンロードされたgemのgemspecの一時ストアとしてそのディレクトリを使用していました。rvmをインストールする前は、root権限でディレクトリをsudo gem install...作成するためにgemをシステムにインストールしていました。そのため、実行せずに実行すると、 /home/mark/.gemgemspecを格納するための一時ディレクトリにアクセスできず、gemをインストールする前に中止されていました。ドー!rubygemssudo

于 2010-09-03T13:02:35.250 に答える
1

もう1つの方法は、ルビーバージョンに入った後に宝石を入力することです。あなたはこのようなものを手に入れるでしょう- /home/username/.rvm/rubies/ruby-1.9.2-p180/bin/gem。ここで、と入力するだけですsudo /home/username/.rvm/rubies/ruby-1.9.2-p180/bin/gem install gem_name

完全なパスを指定し、sudoを追加すると問題なく動作します。

于 2011-04-27T09:51:26.203 に答える
0

の最初の行を確認し、http: //yehudakatz.com/2010/08/24/a-tale-of-abort-traps-or-always-question-your-assumptions//home/mark/.rvm/rubies/ruby-1.9.2-p0/bin/gem を見てください。

于 2010-09-02T17:25:19.277 に答える