我在运行命令
bundle install
在项目文件夹中。在某些项目文件夹中,它将产生错误,在其他项目文件夹中,它不会产生错误。错误是:
您的用户帐户不允许安装到系统RubyGems
我知道这可以通过遵循建议的建议来解决:
bundle install --path vendor/bundle
我的问题是为什么行为不一致?
就我而言,我解决了错误消息的建议:
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
。
通常如果您使用RVM,rbenv或chruby来安装Ruby,所有的gem都将安装在~/.rbenv/ruby-version/...
下的home文件夹中
如果您正在使用您的系统Ruby(默认情况下安装的那个),那么宝石就会安装在您没有sudo
的情况下无法访问的位置。
我的猜测是你的版本管理器默认使用系统Ruby,但是你的一些项目中有一个.ruby-version文件,告诉它使用你可以访问的不同版本的Ruby。
至少对我来说,问题是我的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)
使用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
在我的情况下,我有一个现有的$BUNDLE_PATH
没有足够的权限来捆绑用户写入。
Your user account isn't allowed to install to the system RubyGems
bundle install --path vendor/bundle
最近面临同样的问题。我用rvm
sudo chown -R $USER ~/.rvm
帮助了我
删除
sudo mv ~/.bundle /tmp
尝试重新安装
bundle install