多個(gè)Cocoapods如何共存并自由切換?

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

親,我的簡書已不再維護(hù)和更新了,所有文章都遷移到了我的個(gè)人博客:https://mikefighting.github.io/,歡迎交流。

Cocoapods是IOS中的第三方框架管理工具,一臺電腦為什么要安裝多個(gè)版本的Cocoapods呢?在公司里可能存在不同的IOS開發(fā)團(tuán)隊(duì)分別對不同的業(yè)務(wù)線進(jìn)行開發(fā),各個(gè)團(tuán)隊(duì)之間所用的Cocoapod版本不同,這時(shí)你被外派到另外一個(gè)團(tuán)隊(duì)做開發(fā)。

Rubyems:簡稱gems是一個(gè)用于對rails組建近些年個(gè)打包的ruby打包系統(tǒng),它提供了一個(gè)分發(fā)ruby程序喝庫的標(biāo)準(zhǔn)格式,還提供了一個(gè)管理程序包的工具。Rubyems的功能類似于linux下的apt-get,是個(gè)包管理器,可以從遠(yuǎn)程下載所需的包。

gem:你可以這樣理解,gem是一系列文件和包的總稱,是一些rails項(xiàng)目依賴的軟件或者環(huán)境,或者是依賴的關(guān)系庫,當(dāng)你的項(xiàng)目中缺少的時(shí)候,你可以用gem install 來進(jìn)行安裝,這種安裝是通過RubyGems這個(gè)包管理工具來安裝的,當(dāng)然你也可以通過bundleer來安裝。

RVM:Ruby Version Manager,ruby版本管理工具,利用它可以很方便的安裝多個(gè)版本的Ruby。

實(shí)現(xiàn)的原理

通過RVM來安裝多個(gè)版本的ruby,再根據(jù)不同版本的ruby來安裝相應(yīng)版本的cocoapods,最后使用rvm use命令切換不同的ruby環(huán)境來使用不同版本的cocoapods.

一、常用的幾個(gè)指令:

  • ruby -v查看rugy的版本()
  • rvm -v (查看rvm的版本)
  • gem sources -l(查看gem shources)
  • rvm list(查看已安裝的所有版本:ruby)
  • rvm use rubyVersion(使用某個(gè)版本的ruby),例如:rvm use ruby-2.3.3
  • rvm install rubyVersion(安裝某個(gè)版本的ruby),例如:rvm install 2.3.3
  • rvm use rubyVersion --default(將某個(gè)版本的ruby設(shè)置為默認(rèn)版本),例如rvm use 1.9.3 --default
  • rvm remove rubyVersion(刪除某個(gè)版本的ruby),例如:rvm remove 1.9.3
  • rvm list known查看所有可用的ruby版本
  • sudo gem install cocoapods -v <Version> -n /usr/local/bin安裝cocoapod
  • gem list查看當(dāng)前gem下的所有安裝包

實(shí)現(xiàn)步驟:

步驟一、 執(zhí)行rvm -v,如果發(fā)現(xiàn)沒有rvm則執(zhí)行curl -L get.rvm.io | bash -s stable && source ~/.rvm/scripts/rvm安裝rvm.
步驟二、 執(zhí)行rvm list known查看所有可用的ruby版本,然后執(zhí)行rvm install someVersion來執(zhí)相應(yīng)版本的ruby; 或者從ruby官網(wǎng)上下載不同版本Ruby時(shí),一定要下載osx操作系統(tǒng)的,否則在執(zhí)行rvm mount ~/Downloads/ruby-2.3.3.tar.bz2時(shí),將會出現(xiàn)Libraries missing for ruby-2.3.3: xcrun. Refer to your system manual for installing libraries,下載完之后到響應(yīng)的目錄下執(zhí)行rvm mount ruby-2.2.3.tar.bz2就可以安裝對應(yīng)的ruby。
步驟三、重復(fù)執(zhí)行步驟二,安裝不同版本的ruby,

各種錯誤及處理方式:

  1. 執(zhí)行完:rvm use ruby-2.3.3sudo gem install cocoapods之后出現(xiàn):/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. 執(zhí)行完rvm use ruby-2.2.3,出現(xiàn)Gemset '' does not exist, 'rvm ruby-2.2.3 do rvm gemset create ' first, or append '--create'.這種錯誤是由于沒有設(shè)置default,在執(zhí)行rvm list的時(shí)候會出現(xiàn)如下# Default ruby not set. Try 'rvm alias create default <ruby>'.
    這樣的提示。使用rvm --create ruby-2.1.9 之后這種提示消失。逐個(gè)將其他版本的ruby也使用rvm --create rubyVersion這個(gè)指令,然后就可以切換至不同版本的ruby了。
  3. 在執(zhí)行sudo gem install cocoapods來安裝cocoapods 的時(shí)候,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),這是因?yàn)樘詫氱R像最近出問題了,使用gem sources -a http://rubygems-china.oss.aliyuncs.com再安裝一個(gè)鏡像,然后可以執(zhí)行sudo gem install cocoapods了,但是在執(zhí)行pod -v,pod search AFNetworking,pod setup時(shí)卻發(fā)現(xiàn):/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. 在執(zhí)行rvm install 2.1.0時(shí)報(bào)錯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')這是因?yàn)閞vm尋找的路徑是/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,這個(gè)時(shí)候需要更新Homebrew,執(zhí)行brew update來更新Homebrew,這時(shí)卻發(fā)現(xiàn)Error: /usr/local must be writable!,然后點(diǎn)擊Command + Shift + G,然后輸入/usr這個(gè)時(shí)候就看到usr目錄,找到下面的local文件夾,右擊"Get Info",將最下面的權(quán)限中的everyone改為可讀寫的,這時(shí)就可以執(zhí)行brew update指令了。執(zhí)行完之后再執(zhí)行rvm install ruby 2.2.2,就可看到如下圖所示,就說明ruby安裝成功了: 執(zhí)行sudo gem install cocoapods這個(gè)指令就可以成安裝cocoapods了,接著執(zhí)行pod --version,就可以查看當(dāng)前的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. 在執(zhí)行完brew update之后再執(zhí)行有關(guān)pod的指令還是會報(bào)錯/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)這樣的錯誤。然后把現(xiàn)有的cocoapod卸載,執(zhí)行sudo gem uninstall cocoapods,卸載完之后執(zhí)行sudo gem install cocoapods -v 1.2.0 -n /usr/local/bin,這時(shí)依然會出現(xiàn)這個(gè)錯誤
  7. 在使用2.0.0版本的ruby安裝pod的時(shí)候出現(xiàn)如下錯誤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的時(shí)候,gem update --system會出錯,ERROR: While executing gem ... (Errno::EPERM) Operation not permitted - /usr/bin/update_rubygems,這時(shí)候需要到rubyGem的官網(wǎng)現(xiàn)在最新的zip文件,解壓進(jìn)入到rubygems-2.6.10文件中,然后執(zhí)行ruby setup.rb就可以安裝gem了。
  9. 刪除某個(gè)版本的ruby的時(shí)候,出現(xiàn)ruby-2.2.3 [ missing bin/ruby ],這時(shí)前往/Users/用戶名/.rvm/rubies/ruby-2.2.3,然后刪除對應(yīng)的ruby-2.2.3即可。
  10. rvm instlall 2.2.3 報(bào)錯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,這時(shí)執(zhí)行rvm reinstall 2.2.3 --disable-binary。這個(gè)時(shí)候又出現(xiàn)錯誤dyld: lazy symbol binding failed: Symbol not found: _clock_gettime dyld: Symbol not found: _clock_gettime,其原因在于沒有安裝Xcode的CommandLineTools工具
    執(zhí)行下面的代碼:xcode-select --install即可。
  11. 安裝pod時(shí)候出現(xiàn) ERROR: While executing gem ... (TypeError) no implicit conversion of nil into String執(zhí)行:gem update --system
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 第一次安裝CocoaPods也遇到了一些坑,但是 那個(gè)時(shí)候時(shí)間比較緊,沒有抽出時(shí)間整理,最近因?yàn)殡娔X還原從新做了系...
    幸福的尾巴__閱讀 8,618評論 7 9
  • CocoaPods 是什么? CocoaPods 是一個(gè)負(fù)責(zé)管理 iOS 項(xiàng)目中第三方開源庫的工具。CocoaPo...
    朝洋閱讀 25,978評論 3 50
  • 寫了一堆字又刪了。這里不是說我個(gè)人生活的地方。
    妙MeowMooo閱讀 610評論 3 4
  • 我收到遠(yuǎn)方的一封信 小巷消逝了叮當(dāng)?shù)拟徛?山那邊,有一只手 拽走晚霞的面紗 夜色點(diǎn)亮平原深處的小城 你聽見背后的門...
    達(dá)斐閱讀 623評論 2 5

友情鏈接更多精彩內(nèi)容