Ruby Gems تحت RVM على Ubuntu (فشل) تثبيت في الموقع الخطأ
سؤال
أقوم بتشغيل Ubuntu 10.04 وأثبت أصلاً Ruby 1.9.1 (من المصدر). لقد قررت للتو تجربة Ruby 1.9.2 و Rails 3 ، ويبدو أنه وقت مناسب لاستخدام RVM للتعامل مع تثبيتات Ruby المتعددة والأحجار الكريمة.
تم تثبيت RVM ويبدو أنه يعمل ، قمت بتثبيت Ruby 1.9.2 في RVM وجعلت أن روبي الافتراضي. ومع ذلك ، في كل مرة أحاول تثبيت جوهرة تحت Ruby 1.9.2 أرى هذا الخطأ.
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>
ولكن إذا كانت مسارات التثبيت الصحي /home/mark/.gem
؟ جميع المتغيرات والمسارات التي تظهرها env
انظروا بشكل صحيح ، ولا يمكنني العثور على ملف .gemrc
ملف في أي مكان على نظامي قد يحتوي على إعدادات مسار متضاربة.
لذلك أعتقد أن سؤالي هو ما قد يتسبب في محاولة التثبيت على Rubygems /home/mark/.gems
بدلا من المسارات الصحيحة التي تحددها RVM؟
ردا على السؤال أدناه:
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
لاحظ أنني قمت بتحرير الاستجابة من env
قليلاً - ببساطة للحفاظ على حجم هذا المنشور تحت السيطرة - عن طريق إزالة جميع الإدخالات المتعلقة بـ X و Gnome و SSH.
المحلول
متابعة الخلفية من الجري gem install -V --backtrace --debug haml
(شكرًا Zzzhc) وإلقاء نظرة فاحصة على /home/mark/.gem
دليل وجدت أنه لم يتم تثبيت الأحجار الكريمة هناك ، فقط ملفات Gemspec وملفات مصدر الأحجار الكريمة. بروح التجريب التي قمت بحذفها /home/mark/.gem
و RE ركض gem install
القيادة وفجأة كان يعمل. وأنه قد أعاد إنشاء /home/mark/.gem
تحتوي على الأحجار الكريمة للأحجار الكريمة التي قمت بتثبيتها للتو.
من الواضح الآن أنني أسيء تفسير رسالة الخطأ في السؤال الأصلي ؛ لم يفشل Rubygems أثناء محاولة تثبيت الأحجار الكريمة /home/mark/.gem
, ، كان ببساطة يستخدم هذا الدليل كمتجر مؤقت لـ Gemspecs من الأحجار الكريمة التي تم تنزيلها حديثًا على وشك تثبيتها. قبل تثبيت RVM كنت أقوم بتثبيت الأحجار الكريمة على النظام باستخدام sudo gem install...
التي من شأنها أن خلق /home/mark/.gem
دليل مع أذونات الجذر. لذا rubygems
ركض بدون sudo
لم يتمكن من الوصول إلى دليل TEMP لتخزين الأحجار الكريمة وتم إحباطه قبل أن يتمكن من تثبيت الأحجار الكريمة. دوه!
نصائح أخرى
هناك طريقة أخرى هي النوع الذي يحمل الجوهرة بعد الدخول في إصدار Ruby. سوف تحصل على شيء مثل هذا - /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 العمل بشكل جيد.
تحقق من السطر الأول من /home/mark/.rvm/rubies/ruby-1.9.2-p0/bin/gem
وانظر إلى http://yehudakatz.com/2010/08/24/a-tale-of-aBort-traps-or-always-question-your- complishts/