web-dev-qa-db-ja.com

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

私は私の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.

任意の助けは大歓迎です!

73
derek

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

それから、ドキュメントに従って rbenvRuby-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

それから楽しんでください!

デレク

127
derek

Rb-env/rvmの代わりにRubyディストリビューションを使用したい場合は、現在のユーザにGEM_HOMEを設定することができます。 your userのための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 gemsをインストールできるはずです。私はこれをUbuntu 18.04でRuby 2.5.1で動作させることができました。 Bash以外のシェルを使用している場合は、bashrcの代わりにそのシェルの起動スクリプトを編集する必要があります。

24
James

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

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

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

8
minnow

他のローカルユーザーをロックアウトする可能性がある所有者を変更するのではなく、または - ある日 - あなた自身のRubyサーバー/デプロイ - 他のユーザーの下で実行している...

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

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

(私はあなたのエラーにも遭遇した。だからこれはかなり確認されている。)

8
Frank Nocke

(2019年1月)Rbenvスクリプトを使用してRubyをインストールするには、次の手順に従います。

1。まず、パッケージのインデックスを更新し、ソースからRubyをビルドするためのRubyビルドツールに必要なパッケージをインストールします。

Sudo apt-get remove Ruby
Sudo apt update
Sudo apt install git curl libssl-dev libreadline-dev zlib1g-dev autoconf bison build-essential libyaml-dev libreadline-dev libncurses5-dev libffi-dev libgdbm-dev

2。次に、次のcurlコマンドを実行して、rbenvとRuby-buildの両方をインストールします。

curl -sL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-installer | bash -

3。システムパスに$ HOME/.rbenv/binを追加します。

あなたがBashを使っているなら、以下を実行してください:

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bashrc
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
source ~/.bashrc

Zshを使っているのなら:

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.zshrc
echo 'eval "$(rbenv init -)"' >> ~/.zshrc
source ~/.zshrc

4。最新の安定版のRubyをインストールし、それをデフォルトのバージョンとして設定します。

rbenv install 2.5.1
rbenv global 2.5.1

利用可能なすべてのRubyバージョンを一覧表示するには、次のようにします。rbenv install -l

5。バージョン番号を印刷して、Rubyが正しくインストールされたことを確認します。

Ruby -v

# Output
Ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]

SOURSE: buntu 18.04にRubyをインストールするには

編集:rubygemsのインストール:

Sudo apt-get install rubygems
7
Achraf JEDAY

上記のderekの答えに基づいて、システムツールはRubyインストールの特定のバージョンまたは場所に依存するかもしれないので、あなた自身の開発作業のためにシステム提供のRubyインスタンスを使用することは一般的に推奨されません。 Mac OS Xの場合はこの回答 と同様に、rbenv( RVM も同様の方法です)のようなものを使用してderekの指示に従うと、自分のRubyインスタンスをインストールできます。

ただし、システムバージョンのRubyをアンインストールする必要はありません。rbenvのインストール手順は、シェルで利用可能なRubyのインスタンスがシステムインスタンスではなくrbenvインスタンスであることを確認するためのメカニズムを提供します。これは

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

derekの答えに並ぶ。

3
Sean Ray