`bundle install` не удалось из-за отказа в доступе
Я установил gem на мой новый сервер, и когда я пытаюсь выполнить bundle install
, он не смог выполнить эту ошибку:
Unfortunately, a fatal error has occurred. Please see the Bundler troubleshooting documentation at http://bit.ly/bundler-issues. Thanks!
/usr/lib/ruby/1.9.1/fileutils.rb:247:in `mkdir': Permission denied - /var/lib/gems (Errno::EACCES)
Мой сервер - это Debian wheezy (7.1) с установленным пакетом ruby 1.9.3 по умолчанию. Я сконфигурировал /etc/gemrc
следующим образом: gem: --user-install
, чтобы пользователи могли локально устанавливать камни.
Драгоценный камень связки был установлен внутри моего gem dir ~/.gem
, как я хочу, с помощью этой команды: gem install bundler
(no sudo). Но bundler хочет установить драгоценные камни в /var/lib/gems
вместо моего каталога драгоценных камней: (
Я не понимаю, что случилось с bundler... Почему он не пытается установить gem, где я хочу (в моем локальном каталоге gems)?
ps: в моем ноутбуке, с установленным пакетом archlinux и стандартным ruby 2.0.0, у меня нет проблем с установщиком для установки пользовательских камней.
Ответы
Ответ 1
Я нашел!
Я обновил свой rubygem следующим образом gem update --system
. Но только мои локальные драгоценные камни обновлялись из-за ограничения gem: --user-install
в моем /etc/.gemrc
. Когда связка работает, он использует глобальный рубигем, а не мой.
Чтобы устранить эту проблему, я обновил глобальные rubygems с помощью sudo gem update --system --no-user-install
.
И все работает отлично!
Ответ 2
bundle install
не использует настройки gemrc. (Хотя возможно, изменилось в недавнем обновлении, но обновление, похоже, загружает только ~/.gemrc, а не /etc/gemrc )
Вы можете делать то, что хотите, с помощью bundle install --path ~/.gem
Однако я бы очень рекомендовал работать с Rbenv или RVM. Вы сказали, что у вас был "тот же результат" с rbenv. Если ваши драгоценные камни пытались установить в /var/lib/gems
, когда вы установили rbenv, тогда это была не рубиновая Rbenv, которая выполняла эту команду. Либо rbenv все еще использовал систему Ruby (которая будет, пока вы не установите Rbenv, установленный Ruby, чтобы стать стандартным), или у вас не было корректного запуска rbenv.
Ответ 3
В соответствии с документацией поставщика пакетов, можно установить переменную $BUNDLE_PATH
или $GEM_HOME
env, чтобы сделать ее местом записи по умолчанию.
export BUNDLE_PATH=~/.gems
bundle install
Это очень удобно, если вы {не имеете/не хотите использовать} root-доступ.