Ruby Gems تحت RVM على Ubuntu (فشل) تثبيت في الموقع الخطأ

StackOverflow https://stackoverflow.com/questions/3626701

  •  26-09-2019
  •  | 
  •  

سؤال

أقوم بتشغيل 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/

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top