您没有 /var/lib/gems/2.3.0 目录的写入权限
You don't have write permissions for the /var/lib/gems/2.3.0 directory
我的 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.
尝试在 var/lib/gems
目录上使用 chown -R
,在本例中将所有权分配给用户 [rubyusername
],该用户将使用 gems 安装和开发。
# chown -R rubyusername:rubyusername /var/lib/gems
这递归地 改变了gems 目录下的所有内容。为了在多用户系统上获得额外的安全性,您还可以创建一个组,而不是 chowning 个人 rubyusername,并将用户添加到该组。
您首先需要使用 sudo apt-get remove ruby
.
之类的东西卸载 Ubuntu 安装的 ruby
然后根据他们的文档使用 rbenv and 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 libxml2-dev libxslt1-dev libcurl4-openssl-dev 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
基于上述 derek 的回答,通常不建议使用系统提供的 Ruby 实例进行您自己的开发工作,因为系统工具可能取决于 [=18= 的特定版本或位置] 安装。类似于 this answer for Mac OSX, you will want to follow derek's instructions on using something like rbenv (RVM 是一个类似的替代方案)来安装您自己的 Ruby 实例。
但是,不需要卸载Ruby的系统版本,rbenv安装说明提供了一种机制来确保Ruby的实例在您的shell中可用是 rbenv 实例,而不是系统实例。这是
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
德里克回答中的一行。
而不是改变所有者,这可能会锁定其他本地用户,或者 – 有一天 – 您自己的 ruby server/deployment-things... 运行 在不同的用户下...
我宁愿简单地将特定文件夹的权限扩展到...好吧,每个人:
cd /var/lib
sudo chmod -R a+w gems/
(我也确实遇到了你的错误,所以这个比较靠谱。)
如果您想使用分配 Ruby 而不是 rb-env/rvm,您可以为当前用户设置一个 GEM_HOME
。首先为你的用户创建一个目录来存储Rubygem:
$ mkdir ~/.ruby
然后更新您的 shell 以将该目录用于 GEM_HOME
并更新您的 PATH
变量以包含 Ruby gem bin 目录。
$ echo 'export GEM_HOME=~/.ruby/' >> ~/.bashrc
$ echo 'export PATH="$PATH:~/.ruby/bin"' >> ~/.bashrc
$ source ~/.bashrc
(最后一行将重新加载当前 shell 中的环境变量。)
现在您应该可以使用 gem
命令在您的用户下安装 Ruby gems。我能够在 Ubuntu 18.04 下与 Ruby 2.5.1 一起使用。如果您使用的 shell 不是 Bash,那么您将需要为 shell 而不是 bashrc
编辑启动脚本。
(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/main/bin/rbenv-installer | bash -
3。将 $HOME/.rbenv/bin 添加到系统 PATH.
如果您使用的是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
To list all available Ruby versions you can use: rbenv install -l
5.通过打印版本来验证 Ruby 是否已正确安装
人数:
ruby -v
# Output
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
来源:How To Install Ruby on Ubuntu 18.04
编辑:安装ruby宝石:
sudo apt-get install rubygems
重新安装 Compass 对我有用..太神奇了!
sudo gem install -n /usr/local/bin compass
我在 GitHub 操作中遇到了同样的错误。添加 sudo
解决了问题。
sudo gem install bundler
Ubuntu 20.04:
选项 1 - 为您的用户帐户设置 gem 安装目录
对于bash(对于zsh,我们当然会使用.zshrc
)
echo '# Install Ruby Gems to ~/gems' >> ~/.bashrc
echo 'export GEM_HOME="$HOME/gems"' >> ~/.bashrc
echo 'export PATH="$HOME/gems/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
选项 2 - 使用快照
卸载 apt 版本 (ruby-full
) 并使用 snap
重新安装
sudo apt-get remove ruby
sudo snap install ruby --classic
您在安装捆绑器之前尝试过 运行 rbenv rehash
吗?
我 运行 使用 WSL2 运行 Ubuntu 20.04.
我通过 GitHub 安装了 rbenv 和 ruby-build 并继续安装 ruby 3.0.1 并将其设置为全球版本。
➜ ~ rbenv install 3.0.1
Downloading ruby-3.0.1.tar.gz...
-> https://cache.ruby-lang.org/pub/ruby/3.0/ruby-3.0.1.tar.gz
Installing ruby-3.0.1...
Installed ruby-3.0.1 to /home/kayla/.rbenv/versions/3.0.1
➜ ~ rbenv global 3.0.1
➜ ~ ruby -v
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux-gnu]
➜ ~ gem install bundler
Fetching bundler-2.2.20.gem
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /var/lib/gems/2.7.0 directory.
我的 ruby 安装在同一位置:
➜ ~ which ruby
/usr/bin/ruby
我没有完全重新安装 rbenv 和 ruby-build,而是在安装捆绑器之前重新哈希:
➜ ~ rbenv rehash
➜ ~ gem install bundler
Fetching bundler-2.2.20.gem
Successfully installed bundler-2.2.20
Parsing documentation for bundler-2.2.20
Installing ri documentation for bundler-2.2.20
Done installing documentation for bundler after 3 seconds
1 gem installed
之前可能已经暗示过这一点的一个线索是,在我重新哈希之前 ruby -v
的 return 值是 ruby 2.7.0,而不是 3.0.1。
使用 Ruby 的 snap 版本 解决了我的问题:
删除默认版本:
sudo apt-get remove ruby
使用 snap 安装另一个:
sudo snap install ruby --classic
您现在可以运行gem install bundler
我的 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.
尝试在 var/lib/gems
目录上使用 chown -R
,在本例中将所有权分配给用户 [rubyusername
],该用户将使用 gems 安装和开发。
# chown -R rubyusername:rubyusername /var/lib/gems
这递归地 改变了gems 目录下的所有内容。为了在多用户系统上获得额外的安全性,您还可以创建一个组,而不是 chowning 个人 rubyusername,并将用户添加到该组。
您首先需要使用 sudo apt-get remove ruby
.
然后根据他们的文档使用 rbenv and 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 libxml2-dev libxslt1-dev libcurl4-openssl-dev 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
基于上述 derek 的回答,通常不建议使用系统提供的 Ruby 实例进行您自己的开发工作,因为系统工具可能取决于 [=18= 的特定版本或位置] 安装。类似于 this answer for Mac OSX, you will want to follow derek's instructions on using something like rbenv (RVM 是一个类似的替代方案)来安装您自己的 Ruby 实例。
但是,不需要卸载Ruby的系统版本,rbenv安装说明提供了一种机制来确保Ruby的实例在您的shell中可用是 rbenv 实例,而不是系统实例。这是
echo 'eval "$(rbenv init -)"' >> ~/.bashrc
德里克回答中的一行。
而不是改变所有者,这可能会锁定其他本地用户,或者 – 有一天 – 您自己的 ruby server/deployment-things... 运行 在不同的用户下...
我宁愿简单地将特定文件夹的权限扩展到...好吧,每个人:
cd /var/lib
sudo chmod -R a+w gems/
(我也确实遇到了你的错误,所以这个比较靠谱。)
如果您想使用分配 Ruby 而不是 rb-env/rvm,您可以为当前用户设置一个 GEM_HOME
。首先为你的用户创建一个目录来存储Rubygem:
$ mkdir ~/.ruby
然后更新您的 shell 以将该目录用于 GEM_HOME
并更新您的 PATH
变量以包含 Ruby gem bin 目录。
$ echo 'export GEM_HOME=~/.ruby/' >> ~/.bashrc
$ echo 'export PATH="$PATH:~/.ruby/bin"' >> ~/.bashrc
$ source ~/.bashrc
(最后一行将重新加载当前 shell 中的环境变量。)
现在您应该可以使用 gem
命令在您的用户下安装 Ruby gems。我能够在 Ubuntu 18.04 下与 Ruby 2.5.1 一起使用。如果您使用的 shell 不是 Bash,那么您将需要为 shell 而不是 bashrc
编辑启动脚本。
(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/main/bin/rbenv-installer | bash -
3。将 $HOME/.rbenv/bin 添加到系统 PATH.
如果您使用的是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
To list all available Ruby versions you can use:
rbenv install -l
5.通过打印版本来验证 Ruby 是否已正确安装 人数:
ruby -v
# Output
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-linux]
来源:How To Install Ruby on Ubuntu 18.04
编辑:安装ruby宝石:
sudo apt-get install rubygems
重新安装 Compass 对我有用..太神奇了!
sudo gem install -n /usr/local/bin compass
我在 GitHub 操作中遇到了同样的错误。添加 sudo
解决了问题。
sudo gem install bundler
Ubuntu 20.04:
选项 1 - 为您的用户帐户设置 gem 安装目录
对于bash(对于zsh,我们当然会使用.zshrc
)
echo '# Install Ruby Gems to ~/gems' >> ~/.bashrc
echo 'export GEM_HOME="$HOME/gems"' >> ~/.bashrc
echo 'export PATH="$HOME/gems/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
选项 2 - 使用快照
卸载 apt 版本 (ruby-full
) 并使用 snap
sudo apt-get remove ruby
sudo snap install ruby --classic
您在安装捆绑器之前尝试过 运行 rbenv rehash
吗?
我 运行 使用 WSL2 运行 Ubuntu 20.04.
我通过 GitHub 安装了 rbenv 和 ruby-build 并继续安装 ruby 3.0.1 并将其设置为全球版本。
➜ ~ rbenv install 3.0.1
Downloading ruby-3.0.1.tar.gz...
-> https://cache.ruby-lang.org/pub/ruby/3.0/ruby-3.0.1.tar.gz
Installing ruby-3.0.1...
Installed ruby-3.0.1 to /home/kayla/.rbenv/versions/3.0.1
➜ ~ rbenv global 3.0.1
➜ ~ ruby -v
ruby 2.7.0p0 (2019-12-25 revision 647ee6f091) [x86_64-linux-gnu]
➜ ~ gem install bundler
Fetching bundler-2.2.20.gem
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /var/lib/gems/2.7.0 directory.
我的 ruby 安装在同一位置:
➜ ~ which ruby
/usr/bin/ruby
我没有完全重新安装 rbenv 和 ruby-build,而是在安装捆绑器之前重新哈希:
➜ ~ rbenv rehash
➜ ~ gem install bundler
Fetching bundler-2.2.20.gem
Successfully installed bundler-2.2.20
Parsing documentation for bundler-2.2.20
Installing ri documentation for bundler-2.2.20
Done installing documentation for bundler after 3 seconds
1 gem installed
之前可能已经暗示过这一点的一个线索是,在我重新哈希之前 ruby -v
的 return 值是 ruby 2.7.0,而不是 3.0.1。
使用 Ruby 的 snap 版本 解决了我的问题:
删除默认版本:
sudo apt-get remove ruby
使用 snap 安装另一个:
sudo snap install ruby --classic
您现在可以运行
gem install bundler