安装Cocapods出现Ruby版本过低的问题解决方案新葡

作者:计算机网络

RVM相关介绍: :;

一、在安装CocoaPods之前,首先要在本地安装好Ruby环境:

Ruby升级以后无法指定需要版本(需要将升级好的ruby选为默认“--default”这个太坑了)

RVM (ruby version manager)ruby版本管理工具


最近在安装cocoapods提示一个错误信息,说需要安装Ruby version版本号要>= 2.2.2的;

步骤1 - 安装 RVM

具体RVM 是干什么的,说实话,我也没搞懂,查了一下,应该是第三方安装工具

$ curl -L https://get.rvm.io | bash -s stable

安装过程可能会需要sudo管理员密码也可能不需要管理员密码视个人情况而定,以及自动通过homebrew安装依赖包,等待一段时间后就可以成功安装好 RVM。

然后,载入 RVM 环境(新开 Termal 就不用这么做了,会自动重新载入的)

$ source ~/.rvm/scripts/rvm

检查一下是否安装正确

$ rvm -v

正确安装以后会显示下面一些信息
rvm 1.22.17 (stable) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]

在安装cocoa pods的时候提示版本号低于2.2.2,所以要升级Ruby,查看本地的Ruby版本号rvm-v发现是2.0.0,按照如下方法升级之后,关闭终端再看版本号依旧为2.0.0,解决办法也在下面,需要将下载好的新版本设置为默认,最好再移除旧版本。

检查RVM是否安装

$ rvm -v

若没有安装则会提示:rvm: command not found

若已安装则提示rvm版本号

新葡京8455 1这里写图片描述

步骤2 - 用 RVM 安装 Ruby 环境

使用下面的命令列出已知的ruby版本

$ rvm list known

可以选择现有的rvm版本来进行安装(下面以rvm 2.0.0版本的安装为例)

$ rvm install 2.0.0

同样继续等待漫长的下载,编译过程,完成以后,Ruby, Ruby Gems 就安装好了。

查询已经安装的ruby

$ rvm list

卸载一个已安装版本

$ rvm remove 1.9.2

但是在安装$ rvm install 2.0.0会出现以下错误(也有可能不会出现):

新葡京8455 2

红色是报错信息

这个错误是因为Homebrew发生了not writable的错误,也就是说Homebrew不可写入的错误

解决办法的终端命令是:

$ rvm autolibs read-only # read more here:https://rvm.io/rvm/autolibs

$ rvm install ruby

输入这个终端命令之后,就会进入疯狂的下载模式了

rvm是什么?为什么要安装rvm呢,因为rvm可以让你拥有多个版本的Ruby,并且可以在多个版本之间自由切换。(就是因为它允许拥有多个版本问题就来了)

RVM 安装

$ curl -L get.rvm.io | bash -s stable

$ source ~/.bashrc

$ source ~/.bash_profile

执行以上命令后rvm就安装ok了,rvm -v 可查看版本号

$ echo"ruby_url=; ~/.rvm/user/db

修改 RVM 的 Ruby 安装源,这样能提高安装速度

解决办法:-- 1.查看我们ruby目前的版本号;

步骤3 - 设置 Ruby 版本

RVM 装好以后,需要执行下面的命令将指定版本的 Ruby 设置为系统默认版本

$ rvm 2.3.0 --default

同样,也可以用其他版本号,前提是你有用 rvm install 安装过那个版本

这个时候你可以测试是否正确,查看一下ruby版本:

$ ruby -v

ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin15]

$ gem -v

2.5.1

下面是将ruby的cocoapods.org换成淘宝的,国外的网址有时访问不了

$ gem source -r https://rubygems.com/

$ gem source -a https://ruby.taobao.org

要想验证是否替换成功了,可以执行:

$ gem sources -l

正常的输出结果:

CURRENT SOURCES

http://ruby.taobao.org/

到这里就已经把Ruby环境成功的安装到了Mac OS X上,接下来就可以安装cocoapods了


第一步:安装rvm

利用RVM管理Ruby版本

查看已经安装的ruby

$ rvm list

列出已知的ruby版本

$ rvm list known

安装一个ruby版本

$ rvm install 2.3.4

切换ruby版本号

$ rvm use 2.3.4

设置默认的版本

$ rvm use 2.3.4 --default

卸载已安装的ruby版本

$ rvm remove 2.3.4

新葡京8455 3这里写图片描述

二、安装cocoapods,并使用cocoapods管理第三方框架

安装cocoapods只需一行命令

$ sudo gem install cocoapods

等一会,cocoapods便安装好啦

以下以AFNetWorking为例,说一下cocoapods如何管理第三方框架

首先,搜索一下cocoapods是否支持AFNetWorking

$ pod search AFNetWorking

稍后会列出AFNetWorking的一些信息,还有一些AFN中最新的以及常见的版本,因此可以使用cocoapods来管理

在终端中进入(cd命令)你项目所在目录(可以直接在终端中cd 然后将目标文件直接拖拽到终端去),然后在当前目录下输入:

$ pod init

然后在项目中回多出一个Podfile文件,打开这个文件,是下图样子

新葡京8455 4

这里写图片描述

这个时候以SDWebImage跟AFN为例子,将其文件修改成

新葡京8455 5

这里写图片描述

这时候,你就可以利用CocoPods下载相对应的类库了。还是在终端中的当前项目目录下,运行以下命令:
$ pod install
因为是在你的项目中导入相对应的类库,这就是为什么这个命令需要你进入你的项目所在目录中运行。
运行上述命令之后,小编的终端出现一些信息:(不用管)

最后一句注意下:
[!] From now on use CocoaPodsDemo.xcworkspace.
注意最后一句话,意思是:以后打开项目就用 CocoaPodsDemo.xcworkspace 打开,而不是之前的.xcodeproj文件。

新葡京8455 6

这里写图片描述

至此,就完成了在此项目中使用cocoapods管理三方;
特别提示:如果出现 setting up cocoapods master repo 请等待;


<a>www.baidu.com</a>

更新RVM

$ rvm get stable

-- 2.安装Ruby版本管理器rvm;

三、使用过程中遇到的问题

$curl -Lget.rvm.io| bash -s stable$source ~/.rvm/scripts/rvm

新葡京8455 7这里写图片描述

1 - 卡在Creating search index for spec repo 'master'..,

卡在Creating search index for spec repo 'master'..,千万别着急,这只是因为是你第一次安装使用cocoapods正常卡顿,具体是往~/.cocoapods文件里导库,耐心等待就好,时间不一定;

等待终端加载完毕,后输入:

-- 3.解决上面安装rvm出现的提示信息;

2 - 报“Unable to find a pod with name, author, summary, or descriptionmatching”错误,

请在终端执行“rm ~/Library/Caches/CocoaPods/search_index.json”命令,然后再“pod search AFNetworking”即可。

rvm-v

新葡京8455 8这里写图片描述

3 - 发现有的时候在执行pod init的时候不能正常地创建出来pod File文件,显示的错误如下:
――― MARKDOWN TEMPLATE ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――

### Command

/Users/wangyongwangyongwang/.rvm/rubies/ruby-2.3.0/bin/pod init


### Report

* What did you do?

* What did you expect to happen?

* What happened instead?


### Stack


   CocoaPods : 1.0.1
        Ruby : ruby 2.3.0p0 (2015-12-25 revision 53290) [x86_64-darwin15]
    RubyGems : 2.6.6
        Host : Mac OS X 10.12.6 (16G29)
       Xcode : 9.0 (9A235)
         Git : git version 2.10.1
Ruby lib dir : /Users/wangyongwangyongwang/.rvm/rubies/ruby-2.3.0/lib
Repositories : master - https://github.com/CocoaPods/Specs.git @ 74d8002565cb1b582426b5affef1b97991b4c14c


### Plugins


cocoapods-deintegrate : 1.0.1
cocoapods-plugins     : 1.0.0
cocoapods-search      : 1.0.0
cocoapods-stats       : 1.0.0
cocoapods-trunk       : 1.0.0
cocoapods-try         : 1.1.0


### Error


RuntimeError - [Xcodeproj] Unknown object version.
/Users/wangyongwangyongwang/.rvm/gems/ruby-2.3.0@global/gems/xcodeproj-1.3.0/lib/xcodeproj/project.rb:217:in `initialize_from_file'
/Users/wangyongwangyongwang/.rvm/gems/ruby-2.3.0@global/gems/xcodeproj-1.3.0/lib/xcodeproj/project.rb:102:in `open'
/Users/wangyongwangyongwang/.rvm/gems/ruby-2.3.0@global/gems/cocoapods-1.0.1/lib/cocoapods/command/init.rb:41:in `validate!'
/Users/wangyongwangyongwang/.rvm/gems/ruby-2.3.0@global/gems/claide-1.0.0/lib/claide/command.rb:333:in `run'
/Users/wangyongwangyongwang/.rvm/gems/ruby-2.3.0@global/gems/cocoapods-1.0.1/lib/cocoapods/command.rb:50:in `run'
/Users/wangyongwangyongwang/.rvm/gems/ruby-2.3.0@global/gems/cocoapods-1.0.1/bin/pod:55:in `<top (required)>'
/Users/wangyongwangyongwang/.rvm/rubies/ruby-2.3.0/bin/pod:22:in `load'
/Users/wangyongwangyongwang/.rvm/rubies/ruby-2.3.0/bin/pod:22:in `<main>'
/Users/wangyongwangyongwang/.rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in `eval'
/Users/wangyongwangyongwang/.rvm/gems/ruby-2.3.0/bin/ruby_executable_hooks:15:in `<main>'


――― TEMPLATE END ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――

[!] Oh no, an error occurred.

Search for existing GitHub issues similar to yours:
https://github.com/CocoaPods/CocoaPods/search?q=[Xcodeproj] Unknown object version.&type=Issues

If none exists, create a ticket, with the template displayed above, on:
https://github.com/CocoaPods/CocoaPods/issues/new

Be sure to first read the contributing guide for details on how to properly submit a ticket:
https://github.com/CocoaPods/CocoaPods/blob/master/CONTRIBUTING.md

Don't forget to anonymize any private data!

wangwang:WWTestCocoaPodsError wangyongwangyongwang$ 

执行pod init的时候的错误提示

这里是指pods的版本过低了,只需要将其pods版本更新一样就可以了
gem install cocoapods --pre

如果能显示版本好则安装成功了。

-- 4.安装Ruby2.2.2的版本;

4 - mapping values are not allowed in this context at line 3 column 4
――――――――――MARKDOWN TEMPLATE ――――――――――

### Report

* What did you do?

* What did you expect to happen?

* What happened instead?

### Stack


CocoaPods : 0.29.0

Ruby : ruby 2.0.0p247 (2013-06-27 revision 41674) [universal.x86_64-darwin13]

RubyGems : 2.1.11

Host : Mac OS X 10.9.2 (13C64)

Xcode : 5.1 (5B130a)

Ruby lib dir : /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib

Repositories : master - https://github.com/CocoaPods/Specs.git @ bd6736d07b16c98ab7a1dae04697cae002f25a9b


### Podfile

ruby

platform :ios,'8.0'

pod 'MBProgressHUD', '~> 0.8'

### Error


Psych::SyntaxError - (/Users/MAXJ/.cocoapods/repos/master/CocoaPods-version.yml): mapping values are not allowed in this context at line 3 column 4

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych.rb:205:in `parse'

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych.rb:205:in `parse_stream'

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych.rb:153:in `parse'

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych.rb:129:in `load'

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych.rb:299:in `block in load_file'

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych.rb:299:in `open'

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/psych.rb:299:in `load_file'

/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.29.0/lib/cocoapods/sources_manager.rb:261:in `version_information'

/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.29.0/lib/cocoapods/sources_manager.rb:222:in `repo_compatible?'

/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.29.0/lib/cocoapods/sources_manager.rb:281:in `master_repo_functional?'

/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.29.0/lib/cocoapods/command.rb:39:in `parse'

/Library/Ruby/Gems/2.0.0/gems/claide-0.4.0/lib/claide/command.rb:179:in `parse'

/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.29.0/lib/cocoapods/command.rb:38:in `parse'

/Library/Ruby/Gems/2.0.0/gems/claide-0.4.0/lib/claide/command.rb:211:in `run'

/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.29.0/lib/cocoapods/command.rb:51:in `run'

/Library/Ruby/Gems/2.0.0/gems/cocoapods-0.29.0/bin/pod:24:in `'

/usr/bin/pod:23:in `load'

/usr/bin/pod:23:in `'


―――――――――― TEMPLATE END ――――――――――

[!] Oh no, an error occurred.

Search for existing github issues similar to yours:

https://github.com/CocoaPods/CocoaPods/search?q=(/Users/MAXJ/.cocoapods/repos/master/CocoaPods-version.yml): mapping values are not allowed in this context at line 3 column 4&type=Issues

If none exists, create a ticket, with the template displayed above, on:

https://github.com/CocoaPods/CocoaPods/issues/new

Don't forget to anonymize any private data!

解决方案:

$ sudo rm -rf ~/.cocoapods/repos/master

$ pod setup

第二步:安装ruby

新葡京8455 9这里写图片描述新葡京8455 10这里写图片描述

列出ruby可安装的版本信息

-- 5.安装cocoa pods;

rvm list known

新葡京8455 11这里写图片描述新葡京8455 12这里写图片描述

安装一个ruby版本(这一步需要一会,需要下载)

rvm install 2.3.1

新葡京8455,如果想设置为默认版本,可以用这条命令来完成(这个default非常非常重要,要不然只用use的话,本次操作是没有问题的,终端关闭再打开还是会默认之前的版本)

rvm use 2.3.1 --default

查看已安装的ruby

rvm list

卸载一个已安装ruby版本

rvm remove 2.0.0

本文由新葡京8455发布,转载请注明来源

关键词: