多个Cocoapods如何共存并自由切换?

Cocoapods多版本共存并自由切换?

亲,我的简书已不再维护和更新了,所有文章都迁移到了我的个人博客:https://mikefighting.github.io/,欢迎交流。

Cocoapods是IOS中的第三方框架管理工具,一台电脑为什么要安装多个版本的Cocoapods呢?在公司里可能存在不同的IOS开发团队分别对不同的业务线进行开发,各个团队之间所用的Cocoapod版本不同,这时你被外派到另外一个团队做开发。

Rubyems:简称gems是一个用于对rails组建近些年个打包的ruby打包系统,它提供了一个分发ruby程序喝库的标准格式,还提供了一个管理程序包的工具。Rubyems的功能类似于linux下的apt-get,是个包管理器,可以从远程下载所需的包。

gem:你可以这样理解,gem是一系列文件和包的总称,是一些rails项目依赖的软件或者环境,或者是依赖的关系库,当你的项目中缺少的时候,你可以用gem install 来进行安装,这种安装是通过RubyGems这个包管理工具来安装的,当然你也可以通过bundleer来安装。

RVM:Ruby Version Manager,ruby版本管理工具,利用它可以很方便的安装多个版本的Ruby。

实现的原理

通过RVM来安装多个版本的ruby,再根据不同版本的ruby来安装相应版本的cocoapods,最后使用rvm use命令切换不同的ruby环境来使用不同版本的cocoapods.

一、常用的几个指令:

  • ruby -v查看rugy的版本()
  • rvm -v (查看rvm的版本)
  • gem sources -l(查看gem shources)
  • rvm list(查看已安装的所有版本:ruby)
  • rvm use rubyVersion(使用某个版本的ruby),例如:rvm use ruby-2.3.3
  • rvm install rubyVersion(安装某个版本的ruby),例如:rvm install 2.3.3
  • rvm use rubyVersion --default(将某个版本的ruby设置为默认版本),例如rvm use 1.9.3 --default
  • rvm remove rubyVersion(删除某个版本的ruby),例如:rvm remove 1.9.3
  • rvm list known查看所有可用的ruby版本
  • sudo gem install cocoapods -v <Version> -n /usr/local/bin安装cocoapod
  • gem list查看当前gem下的所有安装包

实现步骤:

步骤一、 执行rvm -v,如果发现没有rvm则执行curl -L get.rvm.io | bash -s stable && source ~/.rvm/scripts/rvm安装rvm.
步骤二、 执行rvm list known查看所有可用的ruby版本,然后执行rvm install someVersion来执相应版本的ruby; 或者从ruby官网上下载不同版本Ruby时,一定要下载osx操作系统的,否则在执行rvm mount ~/Downloads/ruby-2.3.3.tar.bz2时,将会出现Libraries missing for ruby-2.3.3: xcrun. Refer to your system manual for installing libraries,下载完之后到响应的目录下执行rvm mount ruby-2.2.3.tar.bz2就可以安装对应的ruby。
步骤三、重复执行步骤二,安装不同版本的ruby,

各种错误及处理方式:

  1. 执行完:rvm use ruby-2.3.3sudo gem install cocoapods之后出现:/Users/a58/.rvm/rubies/ruby-2.3.3/bin/ruby: /Users/a58/.rvm/rubies/ruby-2.3.3/bin/ruby: cannot execute binary file这种错误。
  2. 执行完rvm use ruby-2.2.3,出现Gemset '' does not exist, 'rvm ruby-2.2.3 do rvm gemset create ' first, or append '--create'.这种错误是由于没有设置default,在执行rvm list的时候会出现如下# Default ruby not set. Try 'rvm alias create default <ruby>'.
    这样的提示。使用rvm --create ruby-2.1.9 之后这种提示消失。逐个将其他版本的ruby也使用rvm --create rubyVersion这个指令,然后就可以切换至不同版本的ruby了。
  3. 在执行sudo gem install cocoapods来安装cocoapods 的时候,ERROR: Could not find a valid gem 'cocoapods' (>= 0), here is why: Unable to download data from https://ruby.taobao.org/ - SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (https://ruby.taobao.org/specs.4.8.gz),这是因为淘宝镜像最近出问题了,使用gem sources -a http://rubygems-china.oss.aliyuncs.com再安装一个镜像,然后可以执行sudo gem install cocoapods了,但是在执行pod -v,pod search AFNetworking,pod setup时却发现:/Users/a58/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/rubygems/dependency.rb:315:in 'to_specs': Could not find 'cocoapods' (>= 0) among 6 total gem(s) (Gem::LoadError)
  4. 在执行rvm install 2.1.0时报错xcrun: error: active developer path ("/Applications/Xcode.app/Contents/Developer") does not exist, use 'xcode-select --switch path/to/Xcode.app' to specify the Xcode that you wish to use for command line developer tools (or see 'man xcode-select')这是因为rvm寻找的路径是/Applications/Xcode.app/Contents/Developer,而我的Xcode被我修改成了Xcode8.0,找不到路径了,所以把Xcode的名字改过来就好了。
  5. Error running 'requirements_osx_brew_update_system ruby-2.1.0', showing last 15 lines of /Users/a58/.rvm/log/1487732911_ruby-2.1.0/update_system.log,这个时候需要更新Homebrew,执行brew update来更新Homebrew,这时却发现Error: /usr/local must be writable!,然后点击Command + Shift + G,然后输入/usr这个时候就看到usr目录,找到下面的local文件夹,右击"Get Info",将最下面的权限中的everyone改为可读写的,这时就可以执行brew update指令了。执行完之后再执行rvm install ruby 2.2.2,就可看到如下图所示,就说明ruby安装成功了: 执行sudo gem install cocoapods这个指令就可以成安装cocoapods了,接着执行pod --version,就可以查看当前的pod版本号了:/Users/a58/.rvm/gems/ruby-2.2.2@global/gems/cocoapods-1.2.0/lib/cocoapods/executable.rb:89: warning: Insecure world writable dir /usr/local in PATH, mode 040777 1.2.0;
  6. 在执行完brew update之后再执行有关pod的指令还是会报错/Users/a58/.rvm/rubies/ruby-2.2.3/lib/ruby/2.2.0/rubygems/dependency.rb:315:in 'to_specs': Could not find 'cocoapods' (>= 0) among 6 total gem(s) (Gem::LoadError)这样的错误。然后把现有的cocoapod卸载,执行sudo gem uninstall cocoapods,卸载完之后执行sudo gem install cocoapods -v 1.2.0 -n /usr/local/bin,这时依然会出现这个错误
  7. 在使用2.0.0版本的ruby安装pod的时候出现如下错误ERROR: SSL verification error at depth 1: unable to get local issuer certificate (20) ERROR: You must add /O=Digital Signature Trust Co./CN=DST Root CA X3 to your local trusted store ERROR: SSL verification error at depth 2: self signed certificate in certificate chain (19) ERROR: Root certificate is not trusted (/C=US/O=GeoTrust Inc./CN=GeoTrust Global CA) ERROR: While executing gem ... (Errno::EPERM) Operation not permitted - /usr/bin/pod
  8. 在osx是10.11.6的时候,gem update --system会出错,ERROR: While executing gem ... (Errno::EPERM) Operation not permitted - /usr/bin/update_rubygems,这时候需要到rubyGem的官网现在最新的zip文件,解压进入到rubygems-2.6.10文件中,然后执行ruby setup.rb就可以安装gem了。
  9. 删除某个版本的ruby的时候,出现ruby-2.2.3 [ missing bin/ruby ],这时前往/Users/用户名/.rvm/rubies/ruby-2.2.3,然后删除对应的ruby-2.2.3即可。
  10. rvm instlall 2.2.3 报错Empty path passed to certificates update, functions stack: requirements_osx_update_openssl_cert_run rvm_requiremnts_fail_or_run_action __rvm_osx_ssl_certs_ensure_for_ruby __rvm_osx_ssl_certs_ensure_for_ruby_except_jruby external_import_setup external_import main,这时执行rvm reinstall 2.2.3 --disable-binary。这个时候又出现错误dyld: lazy symbol binding failed: Symbol not found: _clock_gettime dyld: Symbol not found: _clock_gettime,其原因在于没有安装Xcode的CommandLineTools工具
    执行下面的代码:xcode-select --install即可。
  11. 安装pod时候出现 ERROR: While executing gem ... (TypeError) no implicit conversion of nil into String执行:gem update --system
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容