2016-06-09 2 views
31

У меня есть рубин, установленный на моем ubuntu 16.04.У вас нет разрешений на запись в каталог /var/lib/gems/2.3.0

$which ruby 

/usr/bin/ruby 

$ruby -v 

ruby 2.3.0p0 (2015-12-25) [x86_64-linux-gnu] 

$gem install bundler 

ERROR: While executing gem ... (Gem::FilePermissionError) 
    You don't have write permissions for the /var/lib/gems/2.3.0 directory. 

Любая помощь будет принята с благодарностью!

+0

Вы можете попробовать установить RVM и установить новую версию рубина, как 2.3.3 –

+0

Для комментариев 3: пакет «свойства-python-software-properties» недоступен, вы должны заменить для программных свойств-common –

+0

Опция RVM и imho еще лучше и просто [установить как чистую «пользовательскую установку»] (https: //stackoverflow.com/a/18294746/444255) (в отличие от глобальной, требующей прав) может быть намного лучше, чем заниматься правами! –

ответ

71

Сначала вам нужно удалить рубин, установленный Ubuntu, с чем-то вроде sudo apt-get remove ruby.

Затем установите рубин используя rbenv и ruby-build в соответствии с их документы:

cd $HOME 
sudo apt-get update 
sudo apt-get install git-core curl zlib1g-dev build-essential libssl-dev libreadline-dev libyaml-dev libsqlite3-dev sqlite3 libxml2-dev libxslt1-dev libcurl4-openssl-dev python-software-properties libffi-dev 

git clone https://github.com/rbenv/rbenv.git ~/.rbenv 
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc 
echo 'eval "$(rbenv init -)"' >> ~/.bashrc 
exec $SHELL 

git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build 
echo 'export PATH="$HOME/.rbenv/plugins/ruby-build/bin:$PATH"' >> ~/.bashrc 
exec $SHELL 

rbenv install 2.3.1 
rbenv global 2.3.1 
ruby -v 

Последний шаг заключается в установке Bundler:

gem install bundler 
rbenv rehash 

Тогда наслаждайтесь!

Дерек

+2

Инструкция по установке рубина (на рельсах) находится здесь https://gorails.com/setup/ubuntu/16.04 – Hoto

+0

Я нахожусь на ubuntu после того, как следующие шаги не помогают ... –

+1

Я немного сдержан, чтобы сделать удалить, так как для этого требуется деинсталлировать зависимые программы (например, vim-gnome). Думаю, я предпочел бы знать _why_, в первую очередь, ему нужно писать в '/ var/lib/...' для установки пользователя ... Я не делал «sudo gem install», когда это не нужно? – PlasmaBinturong

7

Попробуйте использовать chown -R в каталоге var/lib/gems, присваивая пользователю [rubyusername] в этом примере пользователь, который будет устанавливать и разрабатывать с помощью драгоценных камней.

# chown -R rubyusername:rubyusername /var/lib/gems 

Это рекурсивно все меняет под драгоценных камней каталогов. Для обеспечения дополнительной безопасности в многопользовательских системах вы также можете создать группу, а не управлять отдельным именем rubyus и добавлять пользователей в эту группу.

+2

Он может решить эту проблему, но возникает другая проблема: ОШИБКА: при выполнении gem ... (Gem :: FilePermissionError) У вас нет прав на запись для каталога/usr/local/bin ; поэтому я предполагаю, что что-то другое неправильно, а не разрешение. – derek

-5

Попробуйте sudo chmod 777 -R /var/lib/gems. Он предоставит разрешения на чтение и запись. Это не очень рекомендуется. Но решает проблему проще.

2

Основываясь на ответе Дерека выше, обычно не рекомендуется использовать предоставленный системой экземпляр Ruby для собственной разработки, поскольку системные инструменты могут зависеть от конкретной версии или местоположения установки Ruby. Подобно this answer for Mac OSX, вы захотите следовать инструкциям Дерека по использованию чего-то вроде rbenv (RVM - аналогичная альтернатива), чтобы установить свой собственный экземпляр Ruby.

Однако, нет необходимости удалять системную версию Ruby, инструкции по установке rbenv предоставляют механизм, гарантирующий, что экземпляр Ruby, доступный в вашей оболочке, является экземпляром rbenv, а не экземпляром системы. Это

echo 'eval "$(rbenv init -)"' >> ~/.bashrc 

линия in derek ответ.

1

Вместо того, чтобы менять владельцев, которые могут блокировать других локальных пользователей или -Некоторые на сутки свой собственный сервер рубин/развертывание-то ... работает под другим пользователем ...

я предпочел бы просто расширить права конкретной папки ... ну, все:

cd /var/lib 
sudo chmod -R a+w gems/ 

(я столкнуться вашей ошибка, а так это достаточно проверить.).