在macOS Ventura的M2 MacBook Pro上安装CocoaPods遇权限错误求助
在M2芯片MacBook Pro(macOS Ventura 13.1)上解决CocoaPods安装权限问题
问题场景
我在搭载M2芯片的MacBook Pro上安装CocoaPods,系统为macOS Ventura 13.1,已安装Xcode 14.2及Xcode命令行工具14.2。执行以下命令:
sudo gem install cocoapods
出现如下权限错误:
Fetching rexml-3.2.5.gem Fetching nanaimo-0.3.0.gem Fetching colored2-3.1.2.gem Fetching claide-1.1.0.gem Fetching atomos-0.1.3.gem Fetching ruby-macho-2.5.1.gem Fetching xcodeproj-1.22.0.gem Fetching nap-1.1.0.gem Fetching molinillo-0.8.0.gem Fetching gh_inspector-1.1.3.gem Fetching fourflusher-2.3.1.gem Fetching escape-0.0.4.gem Fetching cocoapods-try-1.2.0.gem Fetching netrc-0.11.0.gem Fetching cocoapods-trunk-1.6.0.gem Fetching cocoapods-search-1.0.1.gem Fetching cocoapods-plugins-1.0.0.gem Fetching cocoapods-downloader-1.6.3.gem Fetching cocoapods-deintegrate-1.0.5.gem Fetching ffi-1.15.5.gem Fetching ethon-0.16.0.gem Fetching typhoeus-1.4.0.gem Fetching public_suffix-4.0.7.gem Fetching fuzzy_match-2.0.4.gem Fetching concurrent-ruby-1.1.10.gem Fetching json-2.6.3.gem Fetching httpclient-2.8.3.gem Fetching algoliasearch-1.27.5.gem Fetching addressable-2.8.1.gem Fetching zeitwerk-2.6.6.gem Fetching tzinfo-2.0.5.gem Fetching minitest-5.17.0.gem Fetching cocoapods-1.11.3.gem Fetching i18n-1.12.0.gem Fetching activesupport-6.1.7.gem Fetching cocoapods-core-1.11.3.gem **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.** /Library/Ruby/Site/2.6.0/rubygems/installer.rb:712:in `verify_gem_home' /Library/Ruby/Site/2.6.0/rubygems/installer.rb:902:in `pre_install_checks' /Library/Ruby/Site/2.6.0/rubygems/installer.rb:302:in `install' /Library/Ruby/Site/2.6.0/rubygems/resolver/specification.rb:104:in `install' /Library/Ruby/Site/2.6.0/rubygems/request_set.rb:194:in `block in install' /Library/Ruby/Site/2.6.0/rubygems/request_set.rb:182:in `each' /Library/Ruby/Site/2.6.0/rubygems/request_set.rb:182:in `install' /Library/Ruby/Site/2.6.0/rubygems/commands/install_command.rb:214:in `install_gem' /Library/Ruby/Site/2.6.0/rubygems/commands/install_command.rb:230:in `block in install_gems' /Library/Ruby/Site/2.6.0/rubygems/commands/install_command.rb:223:in `each' /Library/Ruby/Site/2.6.0/rubygems/commands/install_command.rb:223:in `install_gems' /Library/Ruby/Site/2.6.0/rubygems/commands/install_command.rb:169:in `execute' /Library/Ruby/Site/2.6.0/rubygems/command.rb:323:in `invoke_with_build_args' /Library/Ruby/Site/2.6.0/rubygems/command_manager.rb:251:in `invoke_command' /Library/Ruby/Site/2.6.0/rubygems/command_manager.rb:191:in `process_args' /Library/Ruby/Site/2.6.0/rubygems/command_manager.rb:149:in `run' /Library/Ruby/Site/2.6.0/rubygems/gem_runner.rb:51:in `run' /usr/bin/gem:21:in `<main>'
随后尝试执行以下命令,仍出现相同权限错误:
sudo gem uninstall ffi && sudo gem install ffi -- --enable-libffi-alloc
错误输出:
Gem 'ffi' is not installed 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.** /Library/Ruby/Site/2.6.0/rubygems/installer.rb:712:in `verify_gem_home' /Library/Ruby/Site/2.6.0/rubygems/installer.rb:902:in `pre_install_checks' /Library/Ruby/Site/2.6.0/rubygems/installer.rb:302:in `install' /Library/Ruby/Site/2.6.0/rubygems/resolver/specification.rb:104:in `install' /Library/Ruby/Site/2.6.0/rubygems/request_set.rb:194:in `block in install' /Library/Ruby/Site/2.6.0/rubygems/request_set.rb:182:in `each' /Library/Ruby/Site/2.6.0/rubygems/request_set.rb:182:in `install' /Library/Ruby/Site/2.6.0/rubygems/commands/install_command.rb:214:in `install_gem' /Library/Ruby/Site/2.6.0/rubygems/commands/install_command.rb:230:in `block in install_gems' /Library/Ruby/Site/2.6.0/rubygems/commands/install_command.rb:223:in `each' /Library/Ruby/Site/2.6.0/rubygems/commands/install_command.rb:223:in `install_gems' /Library/Ruby/Site/2.6.0/rubygems/commands/install_command.rb:169:in `execute' /Library/Ruby/Site/2.6.0/rubygems/command.rb:323:in `invoke_with_build_args' /Library/Ruby/Site/2.6.0/rubygems/command_manager.rb:251:in `invoke_command' /Library/Ruby/Site/2.6.0/rubygems/command_manager.rb:191:in `process_args' /Library/Ruby/Site/2.6.0/rubygems/command_manager.rb:149:in `run' /Library/Ruby/Site/2.6.0/rubygems/gem_runner.rb:51:in `run' /usr/bin/gem:21:in `<main>'
问题原因
macOS Ventura及后续版本启用了严格的系统完整性保护(SIP),系统自带Ruby所在的/System/Library/Frameworks/Ruby.framework目录属于系统核心区域,即使使用sudo也无法修改该目录的写入权限,因此直接通过系统Ruby安装CocoaPods会触发权限错误。
解决方案
方法一:使用Homebrew安装CocoaPods(推荐,操作最简单)
- 若未安装Homebrew,执行以下命令完成安装:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" - 安装CocoaPods:
brew install cocoapods - 验证安装成功:
pod --version
方法二:使用rbenv管理独立Ruby环境
这种方法会创建一个用户级别的Ruby环境,完全避开系统Ruby的权限限制:
- 安装rbenv和ruby-build:
brew install rbenv ruby-build - 初始化rbenv,执行命令:
根据提示,将初始化命令添加到你的shell配置文件(比如rbenv init~/.zshrc,M系列Mac默认使用zsh),添加后执行:source ~/.zshrc - 查看可用的Ruby版本:
rbenv install --list - 安装一个较新的Ruby版本(例如3.2.2):
rbenv install 3.2.2 - 设置全局Ruby版本为刚安装的版本:
rbenv global 3.2.2 - 验证Ruby版本是否切换成功:
ruby -v - 无需
sudo,直接安装CocoaPods:gem install cocoapods - 验证安装:
pod --version
内容的提问来源于stack exchange,提问作者WeCan
相关产品推荐
相关产品推荐

