Как исправить ошибку «У вас нет прав на запись в каталог / usr / bin» при установке Rails?

133

Я пытаюсь установить Rails 3 на совершенно новый MacBook Pro под управлением OS X 10.6.3, Ruby 1.8.7 и Rails 2.3.5, и мне интересно, не заморачивался ли я. Пока что я выполнил эти команды:

$ gem update --system
$ gem install arel tzinfo builder memcache-client rack rack-test rack-mount erubis mail text-format thor bundler i18n
$ gem install rails --pre

Однако когда я запускаю последнюю команду, я получаю такую ​​ошибку:

ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions into the /usr/bin directory.

Я думаю, он хочет, чтобы я запустил команду, sudoчтобы она могла перезаписать /usr/bin/rails. Но если я сделаю это, не буду ли я перезаписывать исполняемый файл Rails 2.3.5? Я не хочу этого делать. Вместо этого я хотел бы сохранить обе версии Rails. Как я могу это сделать?

луч
источник
5
Я получал ту же ошибку при первой команде, используйте эту командуsudo gem update --system -n /usr/local/bin
nitish005
1
Что такое -n?
Скотт Ромак
Просто хочу сказать, что простой перезапуск терминала решил эту проблему для меня.
Ashwood

Ответы:

14

Я бы посоветовал использовать RVM, он позволяет вам иметь несколько версий Ruby / Rails, установленных с профилями гемов, и в основном хранить все ваши драгоценные камни друг от друга. Возможно, вы захотите ознакомиться с аналогичным постом Как я могу установить Ruby on Rails 3 на OSX

Tarellel
источник
только это решило для меня аналогичную проблему с тем же сообщением об ошибке
Rich Stone
481

используйте -nпараметр для установки, как для коконоподов:

sudo gem install cocoapods -n /usr/local/bin
Прадип Качхаваха
источник
7
Зачем нам это вообще нужно?
nenchev
28
Не работает в MacOS, если вы не укажете -n / usr / local / bin. Спасибо за решение
Sacky San
3
Что означает -n?
allenlinli
7
согласно guides.rubygems.org/command-reference/#gem-install , -n указывает каталог, в котором находятся двоичные файлы. Мне тоже нужно было -n /usr/local/binна моем Mac. Я побежал which podопределить его существующее местоположение, прежде чем использовать параметр -n, который действительно был / usr / local / bin
mwu
3
Я уверен, что RVM - это здорово, но это лучший ответ, который напрямую решает непосредственную проблему, не отправляя меня в кроличью нору.
Уэйн
62

Использование флага -n / usr / local / bin действительно работает, НО мне приходилось возвращаться на эту страницу каждый раз, когда я хотел снова обновить пакет. Итак, я придумал постоянное исправление для этого.

Для тех, кто заинтересован в том, чтобы исправить это навсегда :

Создайте файл ~ / .gemrc

vim .gemrc

Со следующим содержанием:

:gemdir:
   - ~/.gem/ruby
install: -n /usr/local/bin

Теперь вы можете запускать свою команду в обычном режиме без флага -n.

Наслаждайтесь!

Франсуа Надо
источник
vim .gemrcкак написать этот cmd
Chandni
Я не уверен, что это сработает в Window $, но я думаю, вы могли бы использовать Блокнот.
Francois
Спасибо, как и вы, я устал искать этот суффикс каждый раз, когда мне нужно было сделать обновление!
Поль-Этьен,
51
sudo gem install cocoapods --pre -n /usr/local/bin

У меня это работает.

Тонг Сюй
источник
У меня была эта проблема, и этот ответ сработал для меня! Я заменил cocoapodsнужную мне зависимость
Крис,
34

Ты можешь использовать sudo gem install -n /usr/local/bin cocoapods

У меня это работает.

Дамини
источник
6

Чтобы исправить вашу конкретную ошибку, вам нужно запустить эту команду как sudo, то есть:

sudo gem install rails --pre
Эндрю Несбитт
источник
1
NO. Используйте rvm или rbenv ... не просто sudo.
doublejosh
5

Эта ошибка поразила меня после правильной установки RVM. Решение: перезагрузите Терминал.

См. Руководство по установке RVM RailsCast .

Akorn
источник
Не ровно 7 лет спустя, но это работает также, если вы работаете над подсистемой Windows bash. Просто выйдите из bash и запустите его снова. Спасибо.
Педро Мадрид
0

Для меня сработало что-то другое, что я нашел в этом ответе из аналогичного вопроса. Возможно, OP не поможет, но, возможно, у кого-то вроде меня была аналогичная проблема.

Вы действительно должны использовать rvm , но, поскольку никто не объяснил вам, как это сделать без rvm , вот и все:

sudo gem install tzinfo builder memcache-client rack rack-test rack-mount \
  abstract erubis activesupport mime-types mail text-hyphen text-format   \
  thor i18n rake bundler arel railties rails --prerelease --force
Себастьян Д'Агостино
источник
-2

В macOS High Sierra это решило мою проблему:

sudo gem update --system -n /usr/local/bin/gem
Субхан Ахмед
источник