rubygems - パーミッションエラー - you don't have write permissions for the/var/lib/gems/2.5.0 directory




/var/lib/gems/2.3.0ディレクトリに対する書き込み権限がありません (4)

ubuntu 16.04にrubyをインストールしています。

$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.

どんな助けも大歓迎です!


rb-env / rvmの代わりにRubyディストリビューションを使用する場合は、現在のユーザーの GEM_HOME を設定できます。 ユーザーのRuby gemを保存するディレクトリを作成することから始めます。

$ mkdir ~/.ruby

次に、シェルを更新して GEM_HOME ディレクトリを使用し、 PATH 変数を更新してRuby gem binディレクトリを含めます。

$ echo 'export GEM_HOME=~/.ruby/' >> ~/.bashrc
$ echo 'export PATH="$PATH:~/.ruby/bin"' >> ~/.bashrc
$ source ~/.bashrc

(その最後の行は、現在のシェルの環境変数を再ロードします。)

これで、 gem コマンドを使用してユーザーの下にRuby gemをインストールできるはずです。 Ubuntu 18.04でRuby 2.5.1でこれを動作させることができました。 Bash以外のシェルを使用している場合、 bashrc 代わりにそのシェルの起動スクリプトを編集する必要があります。


まず、 sudo apt-get remove ruby ようなものでUbuntuによってインストールされたrubyをアンインストールする必要があります。

次に、ドキュメントに従って rbenv ruby-build を使用してrubyを再インストールします。

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

その後お楽しみください!

デレク


他のローカルユーザーをロックアウトする可能性のある所有者を変更するのではなく、あるいはいつか別のユーザーの下で実行する独自のrubyサーバー/展開...

私はむしろ、その特定のフォルダの権利を...みんなに単純に拡張したいと思います。

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

(私もあなたのエラーに遭遇しました。したがって、これはかなり検証されています。)


var/lib/gems ディレクトリーで chown -R を使用してみてください。この例では、gemsを使用してインストールおよび開発を行うユーザー[ rubyusername ]に所有権を割り当てます。

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

これにより、 gems ディレクトリの下のすべてが 再帰的に 変更されます。 マルチユーザーシステムのセキュリティを強化するために、個々のrubyusernameを変更せずにグループを作成し、そのグループにユーザーを追加することもできます。