it-swarm.dev

لماذا أحصل على خطأ "تم رفض الإذن" أثناء تثبيت جوهرة؟

أحاول تثبيت Jekyll. بعد تشغيل gem install jekyll أحصل على هذا الخطأ:

ERROR:  While executing gem ... (Errno::EACCES)
    Permission denied - /usr/local/lib/Ruby/gems/2.0.0/gems/jekyll-1.0.3/CONTRIBUTING.md

أستطيع أن أرى أن Jekyll مثبت عندما أركض gem list لذلك أنا في حيرة من أمري:

*** LOCAL GEMS ***

bigdecimal (1.2.0)
classifier (1.3.3)
colorator (0.1)
commander (4.1.3)
directory_watcher (1.4.1)
fast-stemmer (1.0.2)
highline (1.6.19)
io-console (0.4.2)
jekyll (1.0.3)
json (1.7.7)
kramdown (1.0.2)
liquid (2.5.0)
maruku (0.6.1)
minitest (4.3.2)
posix-spawn (0.3.6)
psych (2.0.0)
pygments.rb (0.5.1)
rake (0.9.6)
rdoc (4.0.0)
rubygems-update (2.0.3)
safe_yaml (0.7.1)
syntax (1.0.0)
test-unit (2.0.0.0)
yajl-Ruby (1.1.0)

لقد واجهت الكثير من المشاكل مع مسارات المستخدم الخاصة بي في الماضي ، لذلك أتساءل ما إذا كان هذا الخطأ قد يكون له علاقة بذلك؟

هنا هو إخراج gem env:

RubyGems Environment:
  - RUBYGEMS VERSION: 2.0.3
  - Ruby VERSION: 2.0.0 (2013-02-24 patchlevel 0) [x86_64-darwin12.3.0]
  - INSTALLATION DIRECTORY: /usr/local/Cellar/Ruby/2.0.0-p0/lib/Ruby/gems/2.0.0
  - Ruby EXECUTABLE: /usr/local/Cellar/Ruby/2.0.0-p0/bin/Ruby
  - EXECUTABLE DIRECTORY: /usr/local/Cellar/Ruby/2.0.0-p0/bin
  - RUBYGEMS PLATFORMS:
    - Ruby
    - x86_64-darwin-12
  - GEM PATHS:
     - /usr/local/Cellar/Ruby/2.0.0-p0/lib/Ruby/gems/2.0.0
     - /Users/me/.gem/Ruby/2.0.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/

هنا هو بلدي ".bash_profile":

export PATH="/usr/local/bin:/usr/local/sbin:~/bin:$PATH"

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a Shell session *as a function*
PATH=$PATH:above/path/to/gems

source ~/.rvm/scripts/rvm

هل يمكن أن يساعدني أحدهم في تثبيت Jekyll ، أو على الأقل تجاوز خطأ الأذونات هذا؟

46
okTalk

لديك Ruby مثبت في /usr/local/Cellar/Ruby/....

هذا مسار مقيد ولا يمكن كتابته إلا عند استخدام امتيازات مرتفعة ، إما عن طريق التشغيل كجذر أو باستخدام Sudo. لن أوصيك بتشغيل الأشياء كجذر لأنك لا تفهم كيفية عمل المسارات والأذونات. يمكنك استخدام Sudo gem install jekyll ، والتي سترفع أذوناتك مؤقتًا ، مما يمنح الأمر الحقوق اللازمة لكتابة هذا الدليل.

ومع ذلك ، أوصيك بالتفكير الجاد في عدم القيام بذلك ، وبدلاً من ذلك استخدم RVM لتثبيت Ruby في الدليل الرئيسي الخاص بك ، حيث ستتمكن تلقائيًا من تثبيت Rubies والأحجار الكريمة بدون مشاكل في الإذن. راجع إرشادات التثبيت في صندوق حماية RVM محلي في " عمليات التثبيت من مستخدم فردي ".

لأن لديك RVM في ~/.bash_profile ، لكنه لا يظهر في قائمة بيئة Gem الخاصة بك ، وأظن أنك إما لم تتبع إرشادات تثبيت RVM بشكل صحيح ، أو أنك لم تستخدم الأمر الأكثر أهمية:

rvm use 2.0.0 --default

لتكوين روبي الافتراضي.

بالنسبة لمعظم المستخدمين ، فإن "التثبيت أحادي المستخدم" هو الطريق الصحيح. إذا كان عليك استخدام Sudo مع هذا التكوين ، فقد قمت بشيء خطأ.

65
the Tin Man

كنت أرغب في مشاركة الخطوات التي اتبعتها والتي حددت هذه المشكلة لي على أمل أن يساعد شخصًا آخر (وأيضًا تذكير لي في حالة حدوث شيء مثل هذا مرة أخرى)

قد تكون المشكلات التي كنت أواجهها (والتي كانت نفس المشكلات الخاصة ببرنامج التشغيل) متعلقة باستخدام homebrew لتثبيت Ruby.

لإصلاح هذا ، أولاً قمت بتحديث البيرة:

brew update && brew upgrade
brew doctor

(إذا صادف الطبيب المشروب أية مشكلات ، فقم بإصلاحها أولاً). ثم قمت بإلغاء تثبيت Ruby

brew uninstall Ruby

إذا كان rbenv [~ # ~] لا يتم تثبيت [~ # ~] في هذه المرحلة ، ثم

brew install rbenv
brew install Ruby-build
echo 'export RBENV_ROOT=/usr/local/var/rbenv' >> ~/.bash_profile
echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.bash_profile

ثم اعتدت rbenv لتثبيت روبي. أولاً ، ابحث عن الإصدار المطلوب:

rbenv install -l

قم بتثبيت هذا الإصدار (على سبيل المثال 2.2.2)

rbenv install 2.2.2

ثم قم بتعيين الإصدار العمومي على الإصدار Ruby version:

rbenv global 2.2.2

في هذه المرحلة ، سترى الإصدار المطلوب مضبوطًا على الأوامر التالية:

rbenv versions

و

Ruby --version

الآن يجب أن تكون قادرًا على تثبيت المجمّع:

gem install bundler

ومرة واحدة في مجلد المشروع المطلوب ، يمكنك تثبيت جميع الأحجار الكريمة المطلوبة:

bundle
bundle install
45
Mike Lane

يبدو وكأنه مشكلة أذونات. هذا هو ما عملت لي

Sudo chown -R $(whoami) /Library/Ruby/Gems/*

أو في قضيتك

Sudo chown -R $(whoami) /usr/local/lib/Ruby/gems/2.0.0/gems/
13
Bryan Norden

بعد تعيين دليل الجواهر إلى دليل المستخدم الذي يقوم بتشغيل gem install باستخدام export GEM_HOME=/home/<user>/gems تم حل المشكلة.

6
030

واجهت نفس المشكلة في استخدام rvm on Ubuntu ، تم إصلاحه عن طريق تعيين source على جهاز طرفي كـ قصير الأجل الحل:

source $HOME/.rvm/scripts/rvm

أو

source /home/$USER/.rvm/scripts/rvm

وتكوين افتراضي Ruby Version ، 2.3.3 في حالتي.

rvm use 2.3.3 --default


و طويل الأجل الحل هو إضافة source إلى .bashrc ملف إلى دائم اجعل أوبونتو ينظر في .rvm لجميع الملفات Ruby الملفات.

إضافة:

source .rvm/scripts/rvm

إلى

$HOME/.bashrc الملف.

3
David Ben Dahan

قم بتثبيت rbenv أو rvm كـ Ruby مدير الإصدار (أفضل rbenv) عبر homebrew (أي. brew update & brew install rbenv) ولكن على سبيل المثال في حالة rbenv تأكد من إضافة rbenv إلى PATH $ كما هو موضح هنا و هنا .

للحصول على شرح أعمق حول كيفية عمل rbenv أوصي هذا .

0
urubuz