最新消息:iOS编程开发交流群(6906921) ,Mac.Cocoa开发交流群(7758675) 欢迎iOS/macOS开发编程爱好及学习者加入!

RubyGems及CocoaPods安装与版本升级

macOS 天狐 15320浏览 2评论

RubyGems简介

b3a31b74-1091-4270-8ec5-14178b70b462

RubyGems是一个方便而强大的Ruby程序包管理器,Ruby的第三方插件是用gem方式来管理,非常容易发布和共享,一个简单的命令就可以安装上第三方的扩展库。特点:能远程安装包,包之间依赖关系的管理,简单可靠的卸载,查询机制,能查询本地和远程服务器的包信息,能保持一个包的不同版本,基于Web的查看接口,能查看你安装的gem的信息。

安装RubyGems

  • https://rubygems.org/pages/download 下载压缩包
  • 解压到一个文件并且cd进去
  • 通过运行ruby setup.rb安装 (你可能需要admin/root权限)

更新RubyGems镜像源

确保gem sources -l只有一个源

当然所有gem配置最后都是写入到了配置文件~/.gemrc中:

SSL证书问题

rubygems.org需要翻墙,而ruby chinahttps://gems.ruby-china.org/http://gems.ruby-china.org/均可,但是https的地址存在证书验证问题。

笔者使用ruby china源最高升级到了gem到了2.6.7,使用httphttps地址均没有问题,也没有证书错误。

但是使用https://rubygems.org升级gem到了2.6.8之后,因为rubygems经常需要翻墙并且速度还不是那么令人满意,于是把源又切换回了ruby china源,这就意味着以后的软件包安装升级使用的是ruby china https源:

提示证书问题但是在功能上没有发现有什么影响:

升级更新RubyGems

使用gem命令升级rubygems,并不想使用homebrew升级。

会报如下错误

执行命令

会报如下错误

显然macOS10.11之后,有一个新的安全功能称为Rootless,阻止你修改系统文件,如果你安装gems在/usr/local/bin 目录,不会出现问题,因为rootless不会影响这个路径:

解决办法

如果 gem -v还是老版本,执行

测试发现使用ruby-china更新到了2.6.7,而使用https://rubygems.org会更新到2.6.8,我猜测ruby-china源与官方源应该存在同步问题

Rootless

简单的来说,Rootless 机制限制了 Root 账户的权限,使其没有了对系统的完全控制权:

受到权限影响的有以下几点:

  • 禁止直接对 /System, /bin, /sbin, /usr 目录的修改(/usr/local 目录除外),只有通过苹果开发者认证的 app 才有权限对其修改。
  • 禁止注入系统进程.,某些需要注入系统进程(finder, messages 等等系统级别的进程)的程序,debugger 无法使用了。
  • 禁止加载内核扩展(kexts), 除非它们被苹果开发者正确的签名。

这些修改最明显的好处就是:恶意 app 无法通过用户授权的方式从而获得所有系统权限了

当然, 它带来的副作用也是巨大的, 一些合法的 app 也无法获得系统权限了。 比如: HomebrewCocoaPods 以及所有需要在 /usr/bin 目录下有可执行权限的 app

安装或者升级CocoaPods等软件包

同样-n重写rubyGemsbindir目录,跳过rootless的影响

安装CocoaPods

activesupport requires Ruby version >= 2.2.2

有些电脑安装CocoaPods会提示升级:

but我的macOS 10.12并没有遇到

原因是由于CocoaPods依赖库版本配置错误(CocoaPods官方已修正),gem错误的安装了activesupport 5.x,而activesupport 5.x需要Ruby2.2.2支持

最简单的方法是指定兼容的activesupport版本为4.2.6

如果还是不行直接安装Ruby2.2.2即可!这里就不在讲了。

参考文献:Avoid use of activesupport version 5

 

 

转载请注明:天狐博客 » RubyGems及CocoaPods安装与版本升级

微信 OR 支付宝 扫描二维码
为天狐 打赏
非常感谢你的支持,哥会继续努力!
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

网友最新评论 (2)

  1. 升级pod,根本不需要升级ruby。被其他网上的忽悠了。此处照着操作就ok
    kkk8年前 (2017-04-12)回复
    • 66666
      天狐8年前 (2017-04-14)回复