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安装

打开TerminalMac电脑自带的终端),然后按照以下提示操作即可:

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.  CocoaPodsiOS程序的依赖管理


以上是关于MAC电脑安装cocoapods ruby 2.6.0 权限问题的主要内容,如果未能解决你的问题,请参考以下文章

CocoaPods安装过程中的大坑

手把手教你CocoaPods安装教程和使用

mac 10.11.6,Xcode8下,ruby2.3安装,Cocoapods安装~

在Mac上安装ruby环境

iOS模块化管理之CocoaPods实战

iOS开发之进阶篇(15)—— CocoaPods