Gau*_*rav 546 ruby macos rubygems
尝试安装gem(gem install mygem)或更新RubyGems(gem update --system)失败,出现此错误:
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.
Run Code Online (Sandbox Code Playgroud)
任何人都知道如何解决这个问题?
nat*_*why 403
尝试添加--user-install而不是使用sudo:
gem install mygem --user-install
Run Code Online (Sandbox Code Playgroud)
the*_*Man 311
您没有写入/Library/Ruby/Gems/1.8目录的权限.
就是说,你没有在那里写的权限.
这是Apple安装的Ruby版本,供自己使用.如果您知道自己在做什么,可以对其进行微小修改,但由于您不确定权限问题,我会说继续沿着这条轨道进行不是一个好主意.
相反,我强烈建议您使用rbenv或RVM来管理安装在主目录中的沙箱中的单独的Ruby,您可以修改/折叠/转换/更改而不必担心弄乱系统Ruby.
在两者之间,我使用rbenv,尽管我过去常常使用RVM.rbenv采用更"不干涉"的方法来管理Ruby安装.RVM具有很多功能并且功能非常强大,但结果却更具侵入性.在任何一种情况下,在开始安装之前,请阅读几次安装文档,无论您选择哪个.
l3x*_*l3x 90
你真的应该使用Ruby版本管理器.
正确使用一个可以防止并可以在执行gem update命令时解决您的权限问题.
我推荐rbenv.
但是,即使您使用Ruby版本管理器,您仍可能会收到相同的错误消息.
如果您这样做,并且您正在使用rbenv,只需验证该~/.rbenv/shims目录是否在系统Ruby的路径之前.
$ echo $PATH 将显示您的加载路径的顺序.
如果您发现shims目录位于系统Ruby bin目录之后,则编辑您的~/.bashrc文件并将其作为最后一个export PATH命令: export PATH=$HOME/.rbenv/shims:$PATH
$ ruby -v 向您展示您正在使用的Ruby版本
这表明我目前正在使用Ruby的系统版本(通常不好)
$ ruby -v
ruby 1.8.7 (2012-02-08 patchlevel 358) [universal-darwin12.0]
Run Code Online (Sandbox Code Playgroud)
$ rbenv global 1.9.3-p448 将我转换为更新的预装版本(参见下面的参考资料).
这表明我使用的是更新版本的Ruby(可能不会导致Gem :: FilePermissionError)
$ ruby -v
ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-darwin12.4.0]
Run Code Online (Sandbox Code Playgroud)
您通常不需要在sudo前面添加gem命令.如果您觉得有必要这样做,可能会出现配置错误的情况.
有关rbenv的详细信息,请参阅以下内容:
Bob*_*obz 75
你为什么不这样做:
sudo gem update --system
Run Code Online (Sandbox Code Playgroud)
Fme*_*ina 35
这将以一种干净的方式解决MacOs Mojave上的问题:
brew install ruby
Run Code Online (Sandbox Code Playgroud)
然后将GEM_HOME设置为您的用户目录.在终端上:
Bash:
echo '# Install Ruby Gems to ~/gems' >> ~/.bashrc
echo 'export GEM_HOME=$HOME/gems' >> ~/.bashrc
echo 'export PATH=$HOME/gems/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
Run Code Online (Sandbox Code Playgroud)
或如果在Zsh:
echo '# Install Ruby Gems to ~/gems' >> ~/.zshrc
echo 'export GEM_HOME=$HOME/gems' >> ~/.zshrc
echo 'export PATH=$HOME/gems/bin:$PATH' >> ~/.zshrc
source ~/.zshrc
Run Code Online (Sandbox Code Playgroud)
Hen*_*rik 34
对我来说,问题是由于使用rbenv和忘记在全局设置正确的版本.
所以我不得不设置它 rbenv global xxx
在我的情况下,我安装,2.0.0-p247所以我不得不发出命令:
rbenv global 2.0.0-p247
rbenv rehash
Run Code Online (Sandbox Code Playgroud)
然后一切都很好.
Jus*_*eck 23
你需要纠正你的路径
要确定此修复程序是否可行,请运行以下命令:
which gem
Run Code Online (Sandbox Code Playgroud)
这应输出您没有权限的目录:
/usr/bin/gem
Run Code Online (Sandbox Code Playgroud)
要解决此问题,请执行以下步骤.
确定复制到配置文件所需的路径:
rbenv init -
Run Code Online (Sandbox Code Playgroud)输出的第一行是您需要复制到配置文件的行:
export PATH="/Users/justin/.rbenv/shims:${PATH}" #path that needs to be copied
source "/usr/local/Cellar/rbenv/0.4.0/libexec/../completions/rbenv.zsh"
rbenv rehash 2>/dev/null
rbenv() {
typeset command
command="$1"
if [ "$#" -gt 0 ]; then
shift
fi
case "$command" in
rehash|shell)
eval `rbenv "sh-$command" "$@"`;;
*)
command rbenv "$command" "$@";;
esac
}
Run Code Online (Sandbox Code Playgroud)
将路径复制到您的配置文件并保存
重新加载你的个人资料(来源〜/ .zshenv)
跑 source ~/.zshenv
现在,当您运行时,rbenv rehash您应该获得一个您有权访问的本地路径:
/Users/justin/.rbenv/shims/gem
Run Code Online (Sandbox Code Playgroud)
小智 17
sudo gem update --system
sudo gem install (gemfile)
Run Code Online (Sandbox Code Playgroud)
the*_*ski 16
这对我有用.另外,如果您之前以root身份安装了gem,它会通过将所有权更改回给您来解决该问题(更好的安全性).
sudo chown -R `whoami` /Library/Ruby/Gems
Run Code Online (Sandbox Code Playgroud)
Jez*_*ezC 15
有两种方法:使用rbenv或RVM.下面有两个食谱.在此之前,您可能想要关闭宝石的本地文档安装.
echo "gem: --no-ri --no-rdoc" >> ~/.gemrc
Run Code Online (Sandbox Code Playgroud)
然后:
跑:
rbenv install 2.1.2 (or whatever version you prefer)
rbenv global 2.1.2
gem update --system
Run Code Online (Sandbox Code Playgroud)
这将在您的本地目录中安装最新版本的gem系统.这意味着您不会干扰系统配置.如果你问这个问题,你不应该搞乱系统安全性,而且你会花更多的时间来理解你可能遇到的问题,而不仅仅是有一个简单的方法来避免你开始的问题.当您对操作系统和编程有更多了解时,请稍后学习InfoSec.
替代使用'RVM'代替:安装rvm run:
rvm install 2.1.2
rvm use 2.1.2
gem update --system
Run Code Online (Sandbox Code Playgroud)
这有相同的结果,您最终得到的本地Ruby和Gem系统不会干扰系统版本.不需要Homebrew,或者需要覆盖系统库等.
gop*_*pek 13
我找到了这个sudo减少宝石的方法:
brew install rbenv ruby-buildsudo gem update --system添加导出到.bashrc:
export RBENV_ROOT="$(brew --prefix rbenv)"
export GEM_HOME="$(brew --prefix)/opt/gems"
export GEM_PATH="$(brew --prefix)/opt/gems"
Run Code Online (Sandbox Code Playgroud)最后将此添加到您的~/.gemrc:
gem: -n/usr/local/bin
Run Code Online (Sandbox Code Playgroud)gem update --system
Mic*_*ael 13
在使用下面的原始答案之前,请尝试nathanwhy的答案.他的建议--user-install应该达到同样的目的,而不必捣乱你的.bash_profile或确定你的红宝石版本.
如果您不关心特定的ruby版本,可以跳过繁重的ruby环境管理器选项,只需将这些行添加到~/.bash_profile:
export GEM_HOME="$HOME/.gem/ruby/2.0.0"
export GEM_PATH="$HOME/.gem/ruby/2.0.0"
Run Code Online (Sandbox Code Playgroud)
该路径从原始输出中被盗gem env:
RubyGems Environment:
- RUBYGEMS VERSION: 2.0.14
- RUBY VERSION: 2.0.0
- INSTALLATION DIRECTORY: /Library/Ruby/Gems/2.0.0
- RUBY EXECUTABLE: /System/Library/.../2.0/usr/bin/ruby
- EXECUTABLE DIRECTORY: /usr/bin
- RUBYGEMS PLATFORMS:
- ruby
- universal-darwin-14
- GEM PATHS:
- /Library/Ruby/Gems/2.0.0
- /Users/mylogin/.gem/ruby/2.0.0 # <-- This guy, right here.
- /System/Library/.../usr/lib/ruby/gems/2.0.0
...
Run Code Online (Sandbox Code Playgroud)
没有sudo必要,你可以使用已经安装的红宝石,礼貌的苹果.
bob*_*sol 12
我需要这样做rbenv rehash,它会指向我当地的宝石图书馆.
看起来你已经让你的gem管理器指向系统库,因此,不要乱用权限,而是为你的经理做一个"rehash",以使事情指向本地.
Bre*_*dly 12
年龄更大,更聪明
不要做我在这里说的话,只要知道在你使用的时候要小心sudo.您可能想要使用类似的东西rbenv来隔离您正在做的任何工作.
我不知道您是否喜欢命令行,但这将使任何项目都可以轻松地将任何工具安装到您的系统中.
chown 据我所知,代表变更所有权.
我之所以寻找这个答案的原因是因为gem install今天向我提出了这个错误:
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions into the /var/lib/gems/1.9.1 directory.
Run Code Online (Sandbox Code Playgroud)
这是一个绝佳的使用机会chown.你看到Ruby给了我们需要访问的目录,看起来它是一个经常使用的目录.
在这种情况下,解决问题只需要知道三件事,但chown功能要强得多,并且给予你比我现在演示的更多的灵活性.有关更多信息,请参阅底部的来源.
如果你在shell中发现用户名很简单.看看提示.我看起来像:
breadly@breadly-desktop:~\Desktop
Run Code Online (Sandbox Code Playgroud)
当前用户只是之前的名字@.我们知道错误消息中的目录,但您有两个选择.您可以通过使用来限制对当前版本的许可../gems/1.9.1,或者通过使用为自己写入所有版本的gems的写权限../gems.
实际更改所有权的命令看起来像这样.
chown -R $(whoami) /absolute/path/to/directory
Run Code Online (Sandbox Code Playgroud)
它-R被称为标志,-R标志通常告诉命令以递归方式执行某些操作,或者换句话说,对目录中包含的每个事物执行命令,以及包含在其中的所有内容,依此类推,直到没有别的.
Her*_*ini 11
我已经格式化了我的Mac,许多建议的解决方案对我不起作用.对我来说有用的是这些命令的顺序正确:
安装Homebrew:
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
Run Code Online (Sandbox Code Playgroud)安装Ruby:
brew install ruby
Run Code Online (Sandbox Code Playgroud)安装指南针:
sudo gem install compass
Run Code Online (Sandbox Code Playgroud)为我工作:
sudo gem uninstall cocoapods
sudo gem install cocoapods
Run Code Online (Sandbox Code Playgroud)
小智 5
安装 rbenv brew install rbenv;
然后放在eval "$(rbenv init -)"~/.bash_profile(或MacOS的~/.zshrc)的末尾;
打开一个新终端并运行即可gem install ***!
解决问题的步骤:
第1步:使用homebrew检查并安装cocoapods
brew install cocoapods
Run Code Online (Sandbox Code Playgroud)
步骤2:这是最重要的,要解决所有问题,请安装具有稳定ruby版本的rvm包,否则您将在没有权限的系统文件夹中访问ruby版本。
\curl -sSL https://get.rvm.io | bash -s stable --ruby
Run Code Online (Sandbox Code Playgroud)
步骤3:将rvm命令路径添加到.zshrc文件以全局访问它
export PATH="$PATH:$HOME/.rvm/scripts/rvm"
Run Code Online (Sandbox Code Playgroud)
步骤 4:检查 rvm 是否在全局命令行中正常运行
rvm --version
Run Code Online (Sandbox Code Playgroud)
第5步:现在您可以在用户bin中安装cocoapods包,因为这将从rvm文件夹访问ruby文件,无需任何权限。
sudo gem install -n /usr/local/bin cocoapods
Run Code Online (Sandbox Code Playgroud)
第 6 步:现在您还可以使用以下命令检查 pod
pod install
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
463630 次 |
| 最近记录: |