不使用`sudo`安装Ruby gem

时间:2018-11-10 09:14:52

标签: ruby macos path rubygems homebrew

以下不带sudo的Ruby gem安装曾经可以正常工作:

xcode-select --install
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
export PATH=/usr/local/bin:$PATH
launchctl setenv PATH “/usr/local/bin:$PATH”
brew install ruby
gem install jekyll

但是现在在最后一步,我得到了:

  

错误:执行gem时...(Gem :: FilePermissionError)   您对/Library/Ruby/Gems/2.3.0目录没有写权限。

我已经尝试过此解决方案-https://gist.github.com/DirtyF/5d2bde5c682101b7b5d90708ad333bf3。而且,它确实可行,但是现在我的$PATH搞砸了。 echo $PATH返回-/Users/username/.rbenv/shims:/Users/username/.rbenv/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

我有fully removed rbenv并已清除.bash_profile。现在我的$ PATH看起来像这样/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin,这使我回到了第一点:

  

错误:执行gem时...(Gem :: FilePermissionError)   您对/Library/Ruby/Gems/2.3.0目录没有写权限。

任何人都可以共享正确的最新方式来安装Ruby gem而不使用sudo并弄乱$PATH吗?

macOS 10.14.1

ruby -v
ruby 2.3.7p456 (2018-03-28 revision 63024) [universal.x86_64-darwin18]

gem env    
RubyGems Environment:
      - RUBYGEMS VERSION: 2.5.2.3
      - RUBY VERSION: 2.3.7 (2018-03-28 patchlevel 456) [universal.x86_64-darwin18]
      - INSTALLATION DIRECTORY: /Library/Ruby/Gems/2.3.0
      - USER INSTALLATION DIRECTORY: /Users/username/.gem/ruby/2.3.0
      - RUBY EXECUTABLE: /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby
      - EXECUTABLE DIRECTORY: /usr/local/bin
      - SPEC CACHE DIRECTORY: /Users/username/.gem/specs
      - SYSTEM CONFIGURATION DIRECTORY: /Library/Ruby/Site
      - RUBYGEMS PLATFORMS:
        - ruby
        - universal-darwin-18
      - GEM PATHS:
         - /Library/Ruby/Gems/2.3.0
         - /Users/username/.gem/ruby/2.3.0
         - /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/gems/2.3.0
      - GEM CONFIGURATION:
         - :update_sources => true
         - :verbose => true
         - :backtrace => false
         - :bulk_threshold => 1000
      - REMOTE SOURCES:
         - https://rubygems.org/
      - SHELL PATH:
         - /usr/local/bin
         - /usr/bin
         - /bin
         - /usr/sbin
         - /sbin

4 个答案:

答案 0 :(得分:1)

在遇到相同的问题以及您在答案中描述的步骤后,对我有用的方法无法解决问题,为了能够安装红宝石宝石(在本例中为jekyll),请附加{{3 }}使用终端进入我的shell配置文件:

echo 'export GEM_HOME=$HOME/gems' >>~/.bash_profile
echo 'export PATH=$HOME/gems/bin:$PATH' >>~/.bash_profile

请务必使用两个>>而不是一个two lines mentioned in the jekyll installation guide

免责声明:这对我有用,但是我对使用CLI还是陌生的,所以我不知道上面的几行是否可能对安全性有任何影响……

答案 1 :(得分:0)

如果要使用ruby版本管理器(即rbevn),请不要在自制软件中安装ruby。

这时我会推荐brew uninstall ruby

如果已经可以使用rbenv安装红宝石版本,则使用它。

但是,如果您感到困惑并且不确定自己在做什么,您可能想考虑使用RVM而不是RBENV,因为安装/设置更加容易。

如果是,请参见How do you uninstall rbenv on OSX?

然后参见https://rvm.io/rvm/install

看你的要点 echo "export PATH=$HOME/gems/bin:$PATH" >> ~/.bashrc

您可能需要编辑~/.bashrc并删除该导出行

执行上述任何操作之前,您可能需要关闭并重新打开终端。在重启终端之前,对~/.bashrc进行任何更改的操作都不会生效

答案 2 :(得分:0)

感谢有用的link lacostenycoder。我设法通过以下方式安装了没有sudo的Ruby gem:

xcode-select --install
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
brew install rbenv
echo 'eval "$(rbenv init -)"' >> ~/.bash_profile
rbenv install 2.5.1
rbenv global 2.5.1
gem install jekyll

答案 3 :(得分:0)

在 Mac 上安全安装任何 Ruby gem 的关键是配置正确的 Ruby 环境。使用 Homebrew 安装 Ruby 是一种方法,尽管使用 Ruby 管理器更好。正如其他人所提到的,您还必须确保 PATH 设置正确,并重新启动终端(或打开一个新选项卡,或 source shell 文件)以查看 shell 中的更改文件生效。

概括地说,在 Mac 上设置工作的 Ruby 开发环境包括六个步骤:

  1. 安装 Homebrew(它还安装必备的 Apple 命令行工具)
  2. 安装 Ruby 管理器(例如 chruby、rbenv、asdf、RVM)——其中大部分都可以通过 Homebrew 安装
  3. 通过向您的 shell 文件(~/.bash_profile~/.zshrc)添加适当的行来配置 Ruby 管理器 - 每个管理器都会有执行此操作的说明,这是人们遗漏的典型步骤
  4. 重新启动终端以使 shell 更改生效 - 另一个经常被忽视的步骤
  5. 使用 Ruby 管理器安装特定版本的 Ruby
  6. 使用 Ruby 管理器切换到该版本的 Ruby

我的个人偏好是 chrubyruby-install。有关更多详细信息和可以自动化整个过程的脚本,请在此处查看我的答案: https://stackoverflow.com/a/54873916/928191