MAC电脑安装cocoapods ruby 2.6.0 权限问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MAC电脑安装cocoapods ruby 2.6.0 权限问题相关的知识,希望对你有一定的参考价值。
参考技术A 报这个ERROR: While executing gem ... (Gem::FilePermissionError)You don't have write permissions for the /Library/Ruby/Gems/2.6.0 directory.
权限错误的解决办法
因为ruby环境系统自带,所以Mac系统为了保证自身环境的问题,对权限进行了限制,最终导致一般用户无法对系统的ruby环境相关的文件读写内容。所以解决点也就在这了
解决办法: 1第一种修改权限(不建议这么做,因为是root权限,修改权限可能对系统造成影响,这里不提供修改方法了)
2第二种 两套ruby 环境
第二种方案大体也就分成三步了:
安装针对于用户所使用的ruby环境
导入新的ruby环境的环境变量
查看是否ruby环境是否安装成功
进行安装之前,我们通过以下命令进行排查,查看当前的ruby环境是否是用的系统自带的环境
whichruby
如果ruby使用的路径如下,那么此时就是用的系统自带的ruby环境了
/usr/bin
推荐使用homebrew安装ruby环境,如果没有安装homebrew`,可以通过以下命令安装:
/bin/bash -c"$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
假定已经安装了homebrew环境了,使用以下命令进行ruby的安装
brew install ruby
此时可能默认安装到了系统自带的路径,在执行,建议当前安装的最新版本 把2.7.0换成你安装成的最先版本 如果不知道最新版本 可以执行 ruby -v 查看
echo 'export PATH="/usr/local/opt/ruby/bin:/usr/local/lib/ruby/gems/2.7.0/bin:$PATH"' >> ~/.zshrc
然后在执行
source ~/.zshrc
继续执行which ruby
此时能看到路径已经不是系统路径了,退出终端重新执行安装cocoapods,问题解决
CocoaPods 的安装
CocoaPods是什么?
CocoaPods应该是iOS最常用最有名的类库管理工具了.
CocoaPods的安装
CocoaPods可以方便地通过Mac自带的RubyGems安装
打开Terminal(Mac电脑自带的终端),然后按照以下提示操作即可:
1.设置ruby的软件源
这是因为ruby的软件源rubygems.org因为使用亚马逊的云服务,被我天朝屏蔽了,需要更新一下ruby的源,过程如下:
$ gem sources -l
出现的结果:
*** CURRENT SOURCES ***
https://gems.ruby-china.org/
https://ruby.taobao.org/
http://rubygems-china.oss.aliyuncs.com
2.设置gem为最新版本
$ sudo gem update --system
出现的结果:
Latest version currently installed. Aborting.
添加一个source
$ gem sources --a https://ruby.taobao.org/
删除一个source
$ gem sources --remove https://rubygems.org/
更新source cache
gem sources -u
3.执行安装CocoaPods命令
注意:OS X 10.11 升级,虽然官方声称只是一个小的升级,但对于开发者而言,cocoapods需要重新安装
$ sudo gem install cocoapods
如果报以下错误:
ERROR:While executing gem.…(Erno:EPERM)
Operation not permitted -/usr/bin/xcodeproj
解决方案1:
执行下面的命令并重启
$ sudo nvram boot-args=“rootless=0”
$ sudo reboot
重启之后,执行这个命令检查
$ sudo gem install cocoapods -v
如果依旧有错误,使用第二个方案
解决方案2:
$ sudo gem install-n/usr/local/bin cocoapods
$ pod setup
还有一点需要注意,pod setup在执行时,会输出Setting up CocoaPods master repo,
但是会等待比较久的时间。这步其实是Cocoapods在将它的信息下载到~/.cocoapod:
目录下,如果你等太久,可以试着cd到那个目录,用du-sh*来查看下载进度。
安装成功后,你会看到:Setup completed
你也可以参考本文接下来的使用 cocoapods 的镜像索引一节的内容来提高下载速度。
使用 CocoaPods 的镜像索引
所有的项目的 Podspec 文件都托管在https://github.com/CocoaPods/Specs。
第一次执行pod setup时,CocoaPods 会将这些podspec索引文件更新到本地的 ~/.cocoapods/目录下,这个索引文件比较大,有 80M 左右。
所以第一次更新时非常慢,笔者就更新了将近 1 个小时才完成。
一个叫 akinliu 的朋友在 gitcafe 和 oschina 上建立了 CocoaPods 索引库的镜像,
因为 gitcafe 和 oschina 都是国内的服务器,所以在执行索引更新操作时,会快很多。
如下操作可以将 CocoaPods 设置成使用 gitcafe 镜像:
pod repo remove master pod repo add master https://gitcafe.com/akuandev/Specs.git pod repo update |
将以上代码中的 https://gitcafe.com/akuandev/Specs.git 替换成 http://git.oschina.net/akuandev/Specs.git 即可使用 oschina 上的镜像。
原理
大概研究了一下 CocoaPods 的原理,它是将所有的依赖库都放到另一个名为 Pods 项目中,然后让主项目依赖 Pods 项目,这样,源码管理工作都从主项目移到了 Pods 项目中。
发现的一些技术细节有:
Pods 项目最终会编译成一个名为 libPods.a 的文件,主项目只需要依赖这个 .a 文件即可。
对于资源文件,CocoaPods 提供了一个名为 Pods-resources.sh 的 bash 脚本,该脚本在每次项目编译的时候都会执行,将第三方库的各种资源文件复制到目标目录中。
CocoaPods 通过一个名为 Pods.xcconfig 的文件来在编译时设置所有的依赖和参数。
参考资料:
1. 用CocoaPods做iOS程序的依赖管理
以上是关于MAC电脑安装cocoapods ruby 2.6.0 权限问题的主要内容,如果未能解决你的问题,请参考以下文章