Подтвердить что ты не робот

Как установить драгоценные камни без 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
4b9b3361

Ответ 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 это работает для меня...

  1. Добавьте GEM_HOME в свой .bash_profile

Например, nano ~/.bash_profile и добавьте export GEM_HOME=/Users/Michael/.gem где путь к вашей собственной домашней папке

  1. Добавьте исполняемые файлы 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"