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

问题描述 投票:16回答:7

我在运行命令

bundle install

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

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

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

bundle install --path vendor/bundle

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

ruby-on-rails ruby rubygems bundler gemfile
7个回答
16
投票

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

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

我跑了:

bundle install --path vendor/bundle

那是this guy的解决方案。

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


8
投票

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

如果您正在使用您的系统Ruby(默认情况下安装的那个),那么宝石就会安装在您没有sudo的情况下无法访问的位置。

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


4
投票

好的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)

3
投票

使用RVM:

您必须在rvm目录中为您的单个用户(标准用户/非root用户)安装$HOME(如果您没有/home/youruser/.rvm目录,则不会安装它。

要安装rvm,请运行:

cd
\curl -sSL https://get.rvm.io | bash -s -- --ignore-dotfiles

现在应该安装rvm。在进一步的提示中,刷新rvm(提供您的用户名):

source /home/---YOURUSERNAME---/.rvm/scripts/rvm

要阻止提示安装sudo-need软件包,请运行:

rvm autolibs disable

您可以在2.5版(或rvm list known中列出的任何其他版本)中为您的用户安装Ruby

rvm install 2.5

在“单用户安装位置:〜/ .rvm /”部分下指定on rvm site

说明:

您可能尝试使用sudo安装rvm,也许使用this package for ubuntu,但您没有sudo权限。

此提示告诉您无法在整个系统中全局捆绑宝石,这可能对您的私人家庭计算机有利,但对您的公司用户(计算机)不利,后者通常由其他人管理。

如果rvm将安装在你的$HOME宝石中,将像往常一样捆绑在那里。

行为可能不一致,因为其他用户在rvm目录中安装了$HOME


1
投票

在我的情况下,我有一个现有的$BUNDLE_PATH没有足够的权限来捆绑用户写入。

Your user account isn't allowed to install to the system RubyGems
bundle install --path vendor/bundle

0
投票

最近面临同样的问题。我用rvm

sudo chown -R $USER ~/.rvm帮助了我


-4
投票

删除

sudo mv ~/.bundle /tmp

尝试重新安装

bundle install
© www.soinside.com 2019 - 2024. All rights reserved.