您的用户帐户不允许安装到系统RubyGems

Wil*_*ken 18 ruby rubygems ruby-on-rails bundler gemfile

我在运行命令

bundle install
Run Code Online (Sandbox Code Playgroud)

在项目文件夹中.在某些项目文件夹中,它将产生错误,在其他项目文件夹中,它不会产生错误.错误是:

您的用户帐户不允许安装到系统RubyGems

我知道这可以通过遵循建议的建议来解决:

bundle install --path vendor/bundle
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么行为不一致?

Ant*_*dei 17

就我而言,我解决了错误消息的建议:

Your user account isn't allowed to install to the system RubyGems.
  You can cancel this installation and run:

      bundle install --path vendor/bundle

  to install the gems into ./vendor/bundle/

所以,而不是:

bundle install
Run Code Online (Sandbox Code Playgroud)

我跑了:

bundle install --path vendor/bundle
Run Code Online (Sandbox Code Playgroud)

那是这个人的解决方案.

该解决方案的缺点是它vendor在当前文件夹中创建了一个文件夹,.gitignore如果要通过Git分发应用程序,可以添加该文件夹.

  • 如果是 [Jekyll](https://jekyllrb.com/) 静态网站,还要在 `_config.yml` 的 `exclude` 设置中添加 `vendor`。有关更多信息,请参阅:https://jekyllrb.com/docs/troubleshooting/#configuration-problems (4认同)

Pro*_*ton 9

我有过类似的经历。我会简单地运行下面的代码来临时修复它

bundle install --path vendor/bundle
Run Code Online (Sandbox Code Playgroud)

这样做的缺点是它不能永久解决问题,因为当您开始使用其他 Ruby on Rails 应用程序时,问题会再次出现。

我试过这个解决方案,但它对我不起作用:

显示 bundler gem 的所有本地 gem 列表

gem list bundler
Run Code Online (Sandbox Code Playgroud)

N/B:上面的命令是针对 rbenv 版本管理器的,针对 rvm 的可能会有所不同

这将显示本地安装的 bundler gem 的版本

bundler (2.0.2, default: 1.17.3, 1.10.6)
Run Code Online (Sandbox Code Playgroud)

然后运行下面的代码来卸载版本 1.10.6

gem uninstall bundler
Run Code Online (Sandbox Code Playgroud)

之后我运行下面的代码来重新哈希rbenv

rbenv rehash
Run Code Online (Sandbox Code Playgroud)

然而,这并没有解决问题。

这是我解决它的方法;

问题是我错误地运行了bundle install具有管理权限的操作,即:

sudo bundle install
Run Code Online (Sandbox Code Playgroud)

为了解决这个问题,我运行了下面的代码来更改文件和目录的所有权。

对于rbenv用户:

sudo chown -R $USER  ~/.rbenv
Run Code Online (Sandbox Code Playgroud)

对于RVM用户

sudo chown -R $USER  ~/.rvm
Run Code Online (Sandbox Code Playgroud)

就是这样。

我希望这有帮助


isa*_*oan 8

通常如果您使用RVM,rbenv或chruby来安装Ruby,所有的gem都将安装在您的home文件夹下 ~/.rbenv/ruby-version/...

如果你正在使用你的系统Ruby(默认情况下安装的那个),那么gems就会安装在你没有访问权限的位置sudo.

我的猜测是你的版本管理器默认使用系统Ruby,但是你的一些项目中有一个.ruby-version文件,告诉它使用你可以访问的不同版本的Ruby.


Mic*_*ant 6

好的 rbenv 修复

  • 避免使用 sudo
  • 避免安装到供应商/捆绑包

至少对我而言,问题在于我的 rbenv ruby​​ 版本中没有安装捆绑程序本身。 即使 bundler 存在并且似乎可用......除了权限错误。

给我提供线索的一件事是,在实际的命令行本身,我可以正常安装 gems 而不会收到错误消息。我这样做了一段时间作为解决方法,直到我决定永久解决问题,如下所示:

为了解决它,我做了:

rbenv local 2.5.0 # Make sure I'm using a local version that exists
gem list | grep bundler # Note no output! Need to fix that!
gem install bundler
rbenv rehash
bundle (within my project that has a Gem file)
Run Code Online (Sandbox Code Playgroud)