首先MAC自带了ruby,他是用rvm 管理的, 如果你用homebrew又安装了一个新版,很可能在升级cocoapods时遇到问题,明明自己用homebrew升级到最新版本了,页配置环境变量了,为什么还是无法升级cocoapods?

  因为系统默认还是用

要用到一个气泡显示器,用了git上面的一个第三方库

执行pod install 命令报错:

$ pod install

Analyzing dependencies

[!] Unable to satisfy the following requirements:

- `LFKit/Component/LFBubbleView` required by `Podfile`

None of your spec sources contain a spec satisfying the dependency: `LFKit/Component/LFBubbleView`.

You have either:

* out-of-date source repos which you can update with `pod repo update` or with `pod install --repo-update`.

* mistyped the name or version.

* not added the source repo that hosts the Podspec to your Podfile.

Note: as of CocoaPods 1.0, `pod repo update` does not happen on `pod install` by default.

然后,我按照提示输入命令:

$pod update --verbose

Update all pods

Preparing

Updating local specs repositories

Updating spec repo `master`

[!] Failed to connect to GitHub to update the CocoaPods/Specs specs repo - Please check if you are offline, or that GitHub is down

后面还吐了一大堆,

/Users/username/.rvm/gems/ruby-2.4.1@global/gems/cocoapods-core-1.3.1/lib/cocoapods-core/github.rb:105:in `rescue in modified_since_commit'

/Users/username/.rvm/gems/ruby-2.4.1@global/gems/cocoapods-core-1.3.1/lib/cocoapods-core/github.rb:100:in `modified_since_commit'

/Users/username/.rvm/gems/ruby-2.4.1@global/gems/cocoapods-core-1.3.1/lib/cocoapods-core/source.rb:445:in `unchanged_github_repo?'

/Users/username/.rvm/gems/ruby-2.4.1@global/gems/cocoapods-core-1.3.1/lib/cocoapods-core/source.rb:334:in `update'

/Users/username/.rvm/gems/ruby-2.4.1@global/gems/cocoapods-1.3.1/lib/cocoapods/sources_manager.rb:88:in `block (2 levels) in update'

/Users/username/.rvm/gems/ruby-2.4.1@global/gems/cocoapods-1.3.1/lib/cocoapods/user_interface.rb:64:in `section'

/Users/username/.rvm/gems/ruby-2.4.1@global/gems/cocoapods-1.3.1/lib/cocoapods/sources_manager.rb:87:in `block in update'

/Users/username/.rvm/gems/ruby-2.4.1@global/gems/cocoapods-1.3.1/lib/cocoapods/sources_manager.rb:86:in `each'

/Users/username/.rvm/gems/ruby-2.4.1@global/gems/cocoapods-1.3.1/lib/cocoapods/sources_manager.rb:86:in `update'

/Users/username/.rvm/gems/ruby-2.4.1@global/gems/cocoapods-1.3.1/lib/cocoapods/installer/analyzer.rb:237:in `block in update_repositories'

/Users/username/.rvm/gems/ruby-2.4.1@global/gems/cocoapods-1.3.1/lib/cocoapods/installer/analyzer.rb:235:in `each'

/Users/username/.rvm/gems/ruby-2.4.1@global/gems/cocoapods-1.3.1/lib/cocoapods/installer/analyzer.rb:235:in `update_repositories'

/Users/username/.rvm/gems/ruby-2.4.1@global/gems/cocoapods-1.3.1/lib/cocoapods/installer.rb:150:in `block in resolve_dependencies'

/Users/username/.rvm/gems/ruby-2.4.1@global/gems/cocoapods-1.3.1/lib/cocoapods/user_interface.rb:64:in `section'

/Users/username/.rvm/gems/ruby-2.4.1@global/gems/cocoapods-1.3.1/lib/cocoapods/installer.rb:149:in `resolve_dependencies'

/Users/username/.rvm/gems/ruby-2.4.1@global/gems/cocoapods-1.3.1/lib/cocoapods/installer.rb:116:in `install!'

/Users/username/.rvm/gems/ruby-2.4.1@global/gems/cocoapods-1.3.1/lib/cocoapods/command/update.rb:81:in `run'

/Users/username/.rvm/gems/ruby-2.4.1@global/gems/claide-1.0.2/lib/claide/command.rb:334:in `run'

/Users/username/.rvm/gems/ruby-2.4.1@global/gems/cocoapods-1.3.1/lib/cocoapods/command.rb:52:in `run'

/Users/username/.rvm/gems/ruby-2.4.1@global/gems/cocoapods-1.3.1/bin/pod:55:in `<top (required)>'

/Users/username/.rvm/rubies/ruby-2.4.1/bin/pod:23:in `load'

/Users/username/.rvm/rubies/ruby-2.4.1/bin/pod:23:in `<main>'

主要意思是说,要么你网络有问题,要么是GitHub挂了。

pod update 命令执行不成功,自然无法更新最新的 cocoapods 库索引了。

从提示信息上看,我的ruby 是 2.4.1, cocoapods 版本是1.3.1,算是比较新的了。

最后发现是Github在不久之前的2018年2月23号移除了一些低加密标准协议,包括TLSv1/TLSv1.1,diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,相关链接在这里:Weak cryptographic standards removed, 看GitHub的官方公告。

stackoverflow上已经有了解决方法:大致流程是:

$ which openssl
/usr/bin/openssl $ openssl version
OpenSSL 0.9.8zh 14 Jan 2016 $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" $ brew update $ brew install openssl $ brew upgrade openssl `` If you need to have this software first in your PATH run: echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile $ echo 'export PATH="/usr/local/opt/openssl/bin:$PATH"' >> ~/.bash_profile
$ source ~/.bash_profile $ which openssl
/usr/local/opt/openssl/bin/openssl $ openssl version
OpenSSL 1.0.2n 7 Dec 2017 $ brew install rbenv ruby-build
//这里可能 会跟你自己安装ruby的方式冲突,请看文章最后, 建议用 rvm 就用rvm, 用rbenv 就卸载rvm 再安装 rbenv,二选一
$ echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~/.bash_profile
$ echo 'if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi' >> ~/.bash_profile
$ source ~/.bash_profile $ rbenv install --list Available versions:
1.8.5-p52
1.8.5-p113
1.8.5-p114
1.8.5-p115
1.8.5-p231
1.8.6
:
2.5.0-rc1
2.5.0
2.6.0-dev
: $ rbenv install 2.5.0 $ rbenv versions
* system (set by /Users/username/.rbenv/version)
2.5.0 $ ruby --version
ruby 2.0.0p648 (2015-12-16 revision 53162) [universal.x86_64-darwin16] $ rbenv global 2.5.0

https://stackoverflow.com/questions/38993527/cocoapods-failed-to-connect-to-github-to-update-the-cocoapods-specs-specs-repo/48962041#48962041

但是我按照这些方法还是不行,原因可能是,我安装或升级pods时用的是 rvm管理的,再次升级安装,它会自动用用ruby 2.4.1 。而不会用brew安装的 2.5.1 。

使用命令:$ ruby --version

ruby 2.4.1p111 (2017-03-22 revision 58053) [x86_64-darwin16]

发现确实是  bash 引用的还是 ruby 2.4.1

最后我觉得应该把 rvm 管理的系统ruby升级:

可以使用rvm来更新管理ruby。
安装rvm
使用命令  $ curl -L http://get.rvm.io | bash -s stable
列出ruby可安装版本 rvm list known
安装一个需要的ruby版本 rvm install 2.5.0
 
之前openssl是用brew来安装的。
 

$ brew upgrade openssl

但是在

rvm install 2.5.0 命令执行过程中发现, 他自动 升级了homebrew, 然后升级了 openssl到1.1  总之,这个 github加密升级的东西是搞定了。

 

Updating Homebrew...

==> Upgrading 3 outdated packages, with result:

coreutils 8.28_1 -> 8.29, openssl@1.1 1.1.0f -> 1.1.0h, automake 1.15.1 -> 1.16.1

==> Upgrading openssl@1.1 

==> Downloading https://homebrew.bintray.com/bottles/openssl@1.1-1.1.0h.high_sie

######################################################################## 100.0%

==> Pouring openssl@1.1-1.1.0h.high_sierra.bottle.tar.gz

ruby 安装成功之后,
再执行 $pod repo update master --verbose  就可以升级索引库了。
看到绿字提示:
 

CocoaPods 1.5.0 is available.

To update use: `sudo gem install cocoapods`

For more information, see https://blog.cocoapods.org and the CHANGELOG for this version at https://github.com/CocoaPods/CocoaPods/releases/tag/1.5.0

证明升级成功。
最后可以发现,还是熟悉的味道,还是原来的配方:
$pod install 
 

Pod installation complete! There are 11 dependencies from the Podfile and 11 total pods installed.

还有一个问题, 在不同的 bash 命令里,假如在一个terminal里ruby没升级,另一个升级了,发现 $ruby --version 显示的ruby的不一样:

关于ruby 多版本的问题以后再做探讨,似乎有一个管理多版本ruby的第三方库。

给几个链接自己看看
https://www.cnblogs.com/supper-Ho/p/6414647.html 
https://www.v2ex.com/t/396846
从大家的讨论看出 用rvm会好点。 brew似乎会单独维护一个版本。
 
补充:
以上教程中使用了rbenv, 这个东西和rvm 是冲突的不能同时安装,请在使用前把rvm 卸载干净, 再安装rbenv。ruby-china社区里也有该方面的说明。
 

cocoapods 无法 升级 repo 无法执行pod install命令的更多相关文章

  1. iOS 开发】解决使用 CocoaPods 执行 pod install 时出现 - Use the `$(inherited)` flag ... 警告

    公司项目在执行 pod install 的时候总是出现很多黄色的警告,因为是警告并不会影响项目的正常编译,一直没有在意,但是总是有很多警告看起来很不舒服,于是就花了点时间解决掉了,下面将解决方法记录下 ...

  2. 利用cocoapods管理开源项目,支持 pod install安装整个流程记录(github公有库)

    利用cocoapods管理开源项目,支持 pod install安装整个流程记录(github公有库),完成预期的任务,大致有下面几步: 1.代码提交到github平台 2.创建.podspec 3. ...

  3. 请使用管理员权限执行pip install命令

    重要的事情说三遍! 请使用管理员权限执行pip install命令 请使用管理员权限执行pip install命令 请使用管理员权限执行pip install命令 踩坑记录 当时一切还是从一题Misc ...

  4. IDEA -01 -忽略指定文件夹 -防止加载Vue-cli执行"npm install"命令后的项目时卡死

    问题描述 Vue的"npm install" 命令执行后,会生成一个很大的目录层次的"node_modules",文件十分繁多; idea加载这个项目下的文件夹 ...

  5. jenkins执行 pod install 报错 CocoaPods requires your terminal to be using UTF-8 encoding. Consider adding the following to ~/.profile:

    错误提示是: CocoaPods 需要终端使用utf-8编码 解决办法

  6. Xcode9,cocoaPod执行pod install时报错,一行命令即可解决。

  7. eclipse执行maven install命令时跳过test

    在pom.xml里面配置一下代码,将跳过test. <plugins> <plugin> <groupId>org.apache.maven.plugins< ...

  8. pod install vs pod update

    Podfile文件,Podfile.lock文件 Podfile文件:指定依赖库的版本规则 Podfile.lock文件:记录当前工程中使用的依赖库的版本号 pod install会去安装podfil ...

  9. CocoaPods pod install/pod update更新慢的问题

    CocoaPods pod install/pod update   最近使用CocoaPods来添加第三方类库,无论是执行pod install还是pod update都卡在了Analyzing d ...

随机推荐

  1. Android Studio 插件(plugins)或者intellij idea 插件(plugins)无法安装

    通常这种情况出现都因为idea.properties修改了 idea.system.path=${指定路径}/system idea.plugins.path=${idea.config.path}/ ...

  2. mysql 存储引擎对索引的支持

    一.首先给出mysql官方文档给出的不同存储引擎对索引的支持 从上面的图中可以得知,mysql 是支持hash索引的,但支持和不支持又和具体的存储引擎有关系.从图中看到InnoDB是支持Btree索引 ...

  3. ES6,Array.of()函数的用法

    ES6为Array增加了of函数用已一种明确的含义将一个或多个值转换成数组. 因为,用new Array()构造数组的时候,是有二意性的. 构造时,传一个参数,表示生成多大的数组. 构造时,传多个参数 ...

  4. 传统D3D11程序面向VS2015编译环境的配置修正细节

    A.  配置细节 使用#include <unordered_map>替代<hash_map> 这个是c++标准建议的,没啥好说的 使用#include <directx ...

  5. 启动TDS LDAP 服务器遇到的问题总结

    在启动TDS LDAP服务器时遇到一些问题,由于习惯使用Oracle数据库,而对DB2数据库比较陌生,在遇到这些问题时也是摸不到头脑,好在现在解决了,并把所遇到的问题罗列如下: 使用命令启动TDS L ...

  6. spring aop 之xml

    1.类库 2.aop概念 一个切面可以有多个切点 3.在方法前后进行aop的测试代码 3.1aop.xml <beans xmlns="http://www.springframewo ...

  7. 3D点云的深度学习

    使用卷积神经网络(CNN)架构的深度学习(DL)现在是解决图像分类任务的标准解决方法.但是将此用于处理3D数据时,问题变得更加复杂.首先,可以使用各种结构来表示3D数据,所述结构包括: 1  体素网格 ...

  8. idea java 非web程序打包

    以下打包非常暴力.O(∩_∩)O哈哈~ 方法一: 第一步:选择需要打包的程序 第二步:选择需要打包的文件 第三步:artifacts->jar->from modules with... ...

  9. 在IDEA中将项目部署到Tomcat的方法及两种模式的区别

    转自:https://www.jianshu.com/p/fb0ed26c35d5 1.添加tomcat服务器 点右上角编辑配置   编辑配置 点击左上角+选择tomcat服务器   添加tomcat ...

  10. MTK 屏幕旋转90度

    http://blog.csdn.net/ouo555/article/details/44806837 1.屏幕显示顺时针旋转90度 lk 横屏logo,顺时针旋转90度显示修改bootable/b ...