CocoaPods版本升级

作者:代培
地址:http://daipei.me/posts/update_cocoaspods_version/
转载请注明出处
我的博客搬家了,新博客地址:daipei.me

前言

今天pod install的时候提示我pod版本低于Podfile.lock要求的版本,这样可能会造成一些兼容的问题,没办法赶紧去更新pod。

正文

准备

首先看一下自己pod的版本

$ pod --version
1.1.0

目前我的pod版本是1.1.0,现在我需要将pod版本更新为1.1.1

安装pod需要用到gem,先看一下自己的gem源

$ gem sources -l
*** CURRENT SOURCES ***

https://ruby.taobao.org/

我的gem源已经切换到了国内,如果你的gem源是https://rubygems.org/而且你没法科学上网的话那就用下面的方法切换自己的gem源

$ gem sources --remove https://rubygems.org/ 
$ gem sources -a https://ruby.taobao.org/

更新

如果你不加版本号应该会给你安装最新版

$ sudo gem install cocoapods

我想要更新到1.1.1,所以我执行以下命令

$ sudo gem install cocoapods -v 1.1.1

如果你想尝试预览版,那就用以下命令

$ sudo gem install cocoapods --pre

如果你看到以下提示,那么恭喜你更新成功

Successfully installed cocoapods-1.1.1
Parsing documentation for cocoapods-1.1.1
Installing ri documentation for cocoapods-1.1.1
1 gem installed

那么下面你就可以执行pod setup去把pod的远程仓库克隆下来或是把更新这个克隆。

问题

现实总是不让你开心,各种各样的问题都会出现,今天我在更新pod的时候就遇到了下面的问题。

$ sudo gem install cocoapods -v 1.1.1
Password:
Fetching: cocoapods-core-1.1.1.gem (100%)
Successfully installed cocoapods-core-1.1.1
Fetching: cocoapods-1.1.1.gem (100%)
ERROR:  While executing gem ... (Errno::EPERM)
    Operation not permitted - /usr/bin/pod

从提示可以看出是因为没有权限在/usr/bin/这个目录写入,经过搜索发现原因是OS X 10.11的新安全机制:System Integrity Protection也叫作:rootless,这个默认的安全机制用于保护下面三个目录,所以无法在/usr/bin/中安装pod

/System
/sbin
/usr (with the exception of /usr/local subdirectory)

这个问题网上给出了两种解决方案,一个是关闭这个安全机制,另一个是绕过这个机制安装在别的位置。

  • 关闭该机制
$ sudo nvram boot-args="rootless=0"; sudo reboot

执行该命令后会重启电脑,保证设置生效

然后再进行正常的安装

$ sudo gem install cocoapods
  • 绕开该机制
$ sudo gem install -n /usr/local/bin cocoapods

这样呢就把pod安装在了/usr/local/bin目录下

对于这两种方法,第二种会好一些,因为自己的可执行程序确实应该放在/usr/local/bin目录下,而且苹果既然有这项设置那肯定有他的道理,没有必要非要关闭这个设置,多个防护多点安全。

总结

其实这篇博客主要是写给自己看的,以后难免还要升级pod,搜索不如直接看自己写的东西来的快些,当然也希望能够帮到别人!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值