Как установить драгоценные камни без sudo
На всех моих установках gem я должен делать sudo? Итак,
sudo gem установить рельсы
будет работать, а только
gem install rails
не будет работать. Как это исправить?
У меня установлен rvm -
[email protected]:~$ which rvm
/home/murtaza/.rvm/bin/rvm
[email protected]:~$ which gem
/home/murtaza/.rvm/rubies/ruby-1.9.3-p194/bin/gem
Однако я также получаю это предупреждение, когда выполняю какие-либо операции с gem -
[email protected]:~$ gem
/home/murtaza/.rvm/rubies/ruby-1.9.3-p194/bin/gem:4: warning: Insecure world writable dir /opt in PATH, mode 040777
ИЗМЕНИТЬ
Я переустановил rvm, используя curl -L get.rvm.io | bash -s stable --auto
(без sudo).
Однако, когда я пытаюсь установить gem, это дает мне следующую ошибку -
[email protected]:~$ gem install rails
/home/murtaza/.rvm/rubies/ruby-1.9.3-p194/bin/gem:4: warning: Insecure world writable dir /opt in PATH, mode 040777
ERROR: While executing gem ... (Errno::EACCES)
Permission denied - /home/murtaza/.gem/specs
ИЗМЕНИТЬ
Я пробовал все это, но все еще получаю ошибку -
[email protected]:~$ sudo chown murtaza.murtaza -R ~/.rvm/*
[email protected]:~$ gem install rails
/home/murtaza/.rvm/rubies/ruby-1.9.3-p194/bin/gem:4: warning: Insecure world writable dir /opt in PATH, mode 040777
ERROR: While executing gem ... (Errno::EACCES)
Permission denied - /home/murtaza/.gem/specs
Ответы
Ответ 1
Используйте chown
в целом каталоги .rvm
и .gem
для вашего пользователя. Вероятно, вы использовали sudo
раньше, и это зависело от разрешений.
sudo chown -R username:group ~/.rvm
sudo chown -R username:group ~/.gem
Конечно, измените имя пользователя на свое имя пользователя и группу в своей группе.
Ответ 2
Когда вы устанавливаете их без sudo, Ruby не знает, где они установлены. Я не могу вспомнить, где он устанавливает их по умолчанию, вероятно, где-то вроде ~/.gems или что-то еще. В любом случае, вы можете указать Ruby, где они установлены, установив переменную среды GEM_HOME.
$ # assuming your gems are stored in ~/.gems
$ GEM_HOME="$HOME/.gems" ruby my_program.rb
Если это сработает, вы можете поместить его в свой файл ~/.bashrc(в зависимости от вашей системы может быть несколько возможных файлов)
Ответ 3
Вы должны установить Ruby Version Manager. Он хранит установленные рубины и драгоценные камни в домашнем каталоге, поэтому теперь вам не нужно использовать sudo
для установки драгоценных камней. Помимо этого, у него есть намного больше возможностей.:)
Ответ 4
Для пользователей Mac это работает для меня...
- Добавьте GEM_HOME в свой
.bash_profile
Например, nano ~/.bash_profile
и добавьте export GEM_HOME=/Users/Michael/.gem
где путь к вашей собственной домашней папке
- Добавьте исполняемые файлы gem в системный путь
Также в .bash_profile
добавьте export PATH="$GEM_HOME/bin:$PATH"
Источник: http://michaelehead.com/2016/02/06/install-gems-without-sudo.html
Ответ 5
Я решил свою проблему следующим образом: (у меня Ubuntu 17.10)
Откройте терминал и введите:
echo "gem: --user-install" >> ~/.gemrc
Затем добавьте путь ruby bin в файл .bashrc
export PATH="$PATH:$HOME/.gem/ruby/x.x.x/bin"
Ответ 6
попробуйте gem install package --install-dir $HOME/.gem
.
Не забудьте установить путь, как было упомянуто до export PATH="$PATH:$HOME/.gem/bin"
.
Что-то, что вы должны рассмотреть, это изменить порядок PATH, например, export PATH="$HOME/.gem/bin:$PATH"
. Это может произойти, например, если вы пытаетесь установить rails в локальный каталог в системе OS X, но встроенный исполняемый файл уже встроен. В этом случае, если вы не измените порядок пути, вы также получите следующий вывод:
Rails в настоящее время не установлен в этой системе. Чтобы получить последнюю версию, просто введите:
$ sudo gem install rails
Затем вы можете запустить команду "rails".
И установить переменную GEM_HOME
например, export GEM_HOME="$HOME/.gems"
Ответ 7
MacOS
brew install ruby
отредактируйте ~/.zshrc
для zsh (для Bash может быть что-то вроде ~/.bash_aliases
)
# By default, binaries installed by gem will be placed into:
# /usr/local/lib/ruby/gems/2.6.0/bin
export GEM_HOME="/usr/local/lib/ruby/gems/"
export PATH="$GEM_HOME/bin:$PATH"