gem install 问题 (not found ruby/config.h 和You don‘t have write permissions into the /usr/bin/directo)

not found ruby/config.h 和You don't have write permissions into the /usr/bin/directory

macOS Catalina 15.6 + ruby 2.6.3p62 (2019-04-16 revision 67580)

现在运行成功了,log找不到了。

大概是在运行sudo gem install xxx的时候

第一个问题报的是 什么extension问题,然后打开指定路径的log (mkmf.log)

会发现里面有句话,大致就是说 哪一个文件里的ruby.h 调用哪个文件夹下的ruby/config.h

好像是这个文件夹(/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/include/ruby-2.6.0/ruby )

跟同事对比了一下,发现我这个目录下面是darwin20,但是同样的ruby版本,同事的是darwin19

然后copy了过来

(这个参考的是: https://blog.youkuaiyun.com/weixin_43974890/article/details/103289838)

第二个问题是权限问题,即便是sudo gem也会报You don't have write permissions into the /usr/bin/directory

sudo gem install xxx -n /usr/local/bin就oK了

(这个参考的是:https://stackoverflow.com/questions/2893889/how-do-i-fix-the-you-dont-have-write-permissions-into-the-usr-bin-directory)

### 权限不足问题修复方案 在 macOS 上执行 `gem install` 时,若系统尝试将 Ruby Gem 安装至 `/Library/Ruby/Gems/2.6.0` 或 `/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/gems/2.6.0` 路径,通常会因权限限制而失败,提示 `You don't have write permissions for the /Library/Ruby/Gems/2.6.0 directory` 或类似错误信息[^1]。这是由于系统路径受 SIP(System Integrity Protection)保护,普通用户无法直接写入内容。 #### 使用 RVM 或 rbenv 管理 Ruby 环境 推荐使用 Ruby 版本管理工具(如 RVM 或 rbenv)创建本地用户级 Ruby 环境,避免对系统 Ruby 路径进行修改。通过该方式安装的 Gem 会被写入用户目录下的路径,无需管理员权限。 以 `rbenv` 为例: 1. 安装 rbenv ruby-build 插件: ```bash brew install rbenv ruby-build ``` 2. 初始化 rbenv: ```bash rbenv init ``` 3. 根据提示将初始化脚本添加到 shell 配置文件(如 `.zshrc` 或 `.bash_profile`)中: ```bash echo 'eval "$(rbenv init -)"' >> ~/.zshrc ``` 4. 重新加载配置并安装 Ruby 版本: ```bash source ~/.zshrc rbenv install 3.1.2 rbenv global 3.1.2 ``` 5. 安装所需 Gem: ```bash gem install cocoapods ``` 所有 Gem 将被安装在 `~/.rbenv/versions/3.1.2/lib/ruby/gems/` 目录下,避免权限冲突[^2]。 #### 使用 `sudo` 手动安装(不推荐) 如果仍希望将 Gem 安装至系统路径,可使用 `sudo` 提升权限执行安装命令: ```bash sudo gem install cocoapods ``` 系统将提示输入管理员密码,并允许在受保护路径中写入数据。此方法虽简单,但存在安全风险,且可能干扰系统 Ruby 环境,不建议长期使用。 #### 自定义 Gem 安装路径 通过设置 `GEM_HOME` `GEM_PATH` 环境变量,可指定 Gem 安装目录至用户可写路径: 1. 创建本地 Gem 存储目录: ```bash mkdir -p ~/.gem/ruby/2.6.0 ``` 2. 设置环境变量: ```bash export GEM_HOME="$HOME/.gem/ruby/2.6.0" export PATH="$GEM_HOME/bin:$PATH" ``` 3. 将上述配置写入 shell 配置文件以持久化: ```bash echo 'export GEM_HOME="$HOME/.gem/ruby/2.6.0"' >> ~/.zshrc echo 'export PATH="$GEM_HOME/bin:$PATH"' >> ~/.zshrc source ~/.zshrc ``` 4. 安装 Gem: ```bash gem install cocoapods ``` 该方式允许在不修改系统路径的前提下安装使用 Ruby Gem,适合需要与项目绑定特定 Gem 环境的场景。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值