偶然敲错了命令,偶然间破坏了系统文件,偶然间只能重装一下macOS,偶然间配置开发环境,于是就遇到了标题。。
在iOS日常开发中,CocoaPods 是一个绕不开的三方库,除非大家都已经使用Swift Package了,感觉可能性也不太大。不然的话,安装,配置 Pod 基本每个项目都在发生。
这次就是偶然间重装 Pod,然后就遇到这个问题。
$ sudo gem install cocoapods
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/gems/2.6.0 directory.
解决这个问题
错误描述:
你没有这个目录/System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib/ruby/gems/2.6.0
写入权限。
我怎么会没有这个账户的写入权限?明明已经使用了sudo
。
隐私中添加权限
第一个想到的原因是,因为是新安装的系统,还没有配置相应app隐私权限。那么就去 系统设置 – 隐私和安全性 – 完全的磁盘访问权限 – 添加需要的开发工具。
再次尝试命令,然并卵。。奇怪。。
升级ruby
于是想到的第二个原因,是不是 gem 在哪里出了问题。有时对于未知错误,并没相应经验,只能拜托于搜索,看看能不能有点解决思路或者方法。
找到了几个相关的技术文,大体是说 macOS 的ruby环境版本太低,需要更新一下就可以了。
既然有了方向,那就试一下。
首先要做的是 升级 ruby 版本。
这里找到两个三方库 chruby
和 ruby-install
,可以方便的管理系统ruby版本,这个方法是好的,毕竟可能也需要会用到其他版本的情况。
安装的方式是使用 Homebrew
,这个管理三方包的工具,使用mac的人应该都挺熟悉。安装只需要一个命令
$ brew install chruby ruby-install
# ...
# 输出结果:
# Add the following to the ~/.bash_profile or ~/.zshrc file:
# source /usr/local/opt/chruby/share/chruby/chruby.sh
# To enable auto-switching of Rubies specified by .ruby-version files,
# add the following to ~/.bash_profile or ~/.zshrc:
# source /usr/local/opt/chruby/share/chruby/auto.sh
安装完成之后会有提示,向.zshrc
文件或 .bash_profile
文件 中添加内容。至于使用的是什么?可以用命令获取,
$ echo $SHELL
# 输出结果:/bin/zsh
我使用的zsh,那么就需要向 .zshrc
文件中加添加
source /usr/local/opt/chruby/share/chruby/chruby.sh
source /usr/local/opt/chruby/share/chruby/auto.sh
最后我们就可以是使用如下命令,安装最新版Ruby啦。
$ ruby-install ruby 版本号(可选)
# 输出结果:Successfully installed ruby 3.2.2 into /Users/youwei/.rubies/ruby-3.2.2
如果不设置具体的版本号,默认安装最新版的 Ruby。
使用 chruby
命令,可以手动切换ruby版本环境。
$ chruby ruby-3.2.2
如果一直想使用某个版本,可以向~/.zshrc
或 ~/bash_profile
文件中添加使用ruby的版本。
chruby ruby-3.2.2
现在重新启动一下终端iterm,查看一下ruby的版本。
$ ruby -v
# ruby 3.2.2 (2023-03-30 revision e51014f9c0) [x86_64-darwin22]
很不错,到现在为止,已经更新了 ruby环境。
只要我们重新执行篇头安装 cocoapods 的命令,就可以顺利安装cocopods了。 ?