You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何仅更新用户目录中安装的Ruby Gems?

只更新用户目录下的Ruby Gems(无需rbenv/rvm)

你现在的困扰很典型:默认gem update会碰系统级Gems导致权限报错,而gem update --user-install又会把所有Gems重复装到用户目录。下面给你两种直接的解决办法,完全不需要额外版本管理工具:

方法一:临时单次生效方案

在终端里直接执行这条命令,临时让RubyGems只聚焦你的用户目录:

GEM_HOME=/Users/USERNAME/.gem/ruby/2.3.0 GEM_PATH=/Users/USERNAME/.gem/ruby/2.3.0 gem update

这条命令通过临时覆盖环境变量,让gem update只扫描和更新你用户目录下已有的Gems,完全不会触碰系统级的Gems,自然也就不会出现权限问题。

方法二:永久配置方案(一劳永逸)

如果不想每次都敲长命令,可以把配置写到.bash_profile里,让终端每次启动都自动生效:

  1. 打开你的.bash_profile文件:
open ~/.bash_profile
  1. 添加以下内容(记得把USERNAME替换成你的实际用户名):
# 让RubyGems默认使用用户目录,避免系统权限问题
export GEM_HOME=/Users/USERNAME/.gem/ruby/2.3.0
export GEM_PATH=/Users/USERNAME/.gem/ruby/2.3.0
export PATH=$PATH:$GEM_HOME/bin
  1. 保存文件后,让配置立即生效:
source ~/.bash_profile

之后你直接敲gem update就只会更新用户目录下的Gems,而且以后装新Gems时,默认也会安装到用户目录(不用每次加--user-install参数)。

验证配置是否生效

执行gem env命令,检查输出里的关键路径:

gem env

你应该能看到类似这样的结果(核心部分):

INSTALLATION DIRECTORY: /Users/USERNAME/.gem/ruby/2.3.0
GEM PATHS:

  • /Users/USERNAME/.gem/ruby/2.3.0

为什么之前的方法行不通?

  • 默认gem update会遍历所有GEM PATHS里的目录,包括系统的/Library/Ruby/Gems/2.3.0,但你没有修改系统目录的权限,所以触发报错。
  • gem update --user-install的逻辑是把所有更新后的Gems都安装到用户目录,不管原本是不是系统自带的,这就导致了不必要的重复安装,不符合你的需求。

而上面的方法通过限制GEM_HOMEGEM_PATH的范围,让RubyGems只处理你的用户目录,完美解决了这两个问题。

内容的提问来源于stack exchange,提问作者dsoreilly

火山引擎 最新活动