проблема з дозволом на встановлення gem - -


90
qichunren@zhaobak:~> gem install hpricot
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions into the /opt/ruby-enterprise-1.8.7/lib/ruby/gems/1.8 directory.

Поточним користувачем для входу є qichunren, а користувач qichunre має дозвіл на запис із директорією .gem. Я хотів би знати, чому gem спочатку не встановлює файли у свій домашній каталог .gem? Чому мій gem common спочатку хоче встановити файли в /opt/ruby-enterprise-1.8.7/lib/ruby/gems/1.8

Відповіді:


52

Для загальносистемної установки Ruby станьте root. Наприклад:

$ sudo gem install hpricot

Однак сучасний підхід у багатьох обставинах, в тому числі і в розробці, полягає у використанні інструменту, який дозволяє легко встановлювати та використовувати Ruby як звичайного користувача. Це дозволяє уникнути необхідності отримувати root. Є кілька таких інструментів, і я використовую RVM .

# install rvm into your ~
$ \curl -sSL https://get.rvm.io | bash -s stable

# install latest version of ruby into your ~
$ rvm install ruby

# installs a gem into your ~
$ gem install $SOME_GEM_NAME

40
Не використовуйте sudo, оскільки ви встановите їх як root і не матимете до них доступу, коли використовуєте свого звичайного користувача. Використовуйте RVM та gemsets.
Райан

4
напр.rvm gem install hpricot
AJP

4
Ви можете видалити цю відповідь. Ви збережете очки і врятуєте людям багато головного болю.
Ольховський

172

Спробуйте встановити GEM_HOMEі GEM_PATHдо ~/.gem,

Для поточного термінального сеансу просто введіть:

export GEM_HOME=~/.gem
export GEM_PATH=~/.gem

Якщо ви хочете, щоб їх встановлювали щоразу, коли ви відкриваєте термінал, додайте вищезазначені команди у свій ~/.bashrcфайл.

Більш вичерпне рішення щодо налаштування користувальницького середовища ruby ​​див. У цьому посібнику від Site5KB , де описано використання .gemrcфайлу.


11
Це фактично правильна відповідь. Не використовуйте sudo, щоб встановлювати речі, якщо вам цього не потрібно.
Джессі О'Брайен

Здається, посилання у відповіді змінилося. Перший крок із цього посібника зробив для мене те саме: kb.site5.com/ruby-on-rails/…
Mike S

@MikeSlutsky Дякую, що вказали на це. У майбутньому, якщо ви знайдете непрацююче посилання (або посилання, яке змінилося і більше не є актуальним), сміливо надсилайте пропозицію "редагувати", якщо вважаєте, що маєте гідну заміну.
meagar

@meagar Я оновив посилання @ Mike-Slutsky, але помітив, що це документація для .gemrcконфігурації. Для початківців рубінових самоцвітів це лякає, коли я розумію, що ваше рішення набагато простіше, що я додав. Рішення працює для мене, але як новачок із рубіном, будь ласка, підтвердьте, що мої зміни відповідають вашим намірам.
David LeBauer

1
Не забудьте додати свій GEM_PATH до глобального PATH. Це я роблю:PATH=$HOME/.gems/bin:$HOME/bin:$PATH GEM_HOME=$HOME/.gems GEM_PATH=$HOME/.gems:/var/lib/gems/2.1.0:/usr/lib/ruby/gems/2.1.0 export PATH GEM_HOME GEM_PATH
Споне

8

Я отримував цю помилку на своєму спільному сервері через 1and1 хостинг. моє рішення було додати --user-installопцію, яка просто встановлює її для вашого зареєстрованого користувача (а це все, що вам потрібно в середовищі спільного сервера); встановлення sass

gem install sass --user-install

Цікаво, що я отримую цю помилку , хоча я вже визначено --user-install.
sschuberth

4

Якщо ви використовуєте rbenv, і це трапляється, вам потрібно додати наступне у свій .bash_profile:

export RBENV_ROOT="$HOME/.rbenv"

if [ -d $RBENV_ROOT ]; then
  export PATH="$RBENV_ROOT/bin:$PATH"
  eval "$(rbenv init -)"
fi

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.