xcode - 修复 Rubygems 源 - MacOS Catalina - XCode 12 - 安装 Cocoapods
问题描述
简短而甜蜜:我最近升级到了 MacOS Catalina 和 Xcode 12,这破坏了我的 cocoapods 安装。尝试修复可能会导致需要重新安装完整的操作系统(或 Xcode?)。我无法让 rubygems 允许任何源提供程序。我希望避免完全重新安装操作系统或 Xcode。
长版:升级到 MacOS Catalina 和 Xcode 12 后,我为本地项目安装的 cocoapods 产生了
Pod failure for arm64 (ArcGIS):
ld: building for iOS Simulator, but linking in dylib built for iOS, file '/<removed>/Pods/ArcGIS-Runtime-SDK-iOS/ArcGIS.framework/ArcGIS' for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
尝试重新安装 cocoapods 并gem install cocoapods
产生:
-bash: /usr/local/bin/pod: /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby: bad interpreter: No such file or directory
我尝试了用户和根级别的权限。这让我面临面临的问题 - 错误的解释器:在 MAC 上使用 pod update 时没有这样的文件或目录
从那里,我最终手动升级了 rubygems。升级到 3.1.4 后,我再次尝试安装 cocoapods:
02:56:46$ sudo gem install cocoapods
ERROR: Could not find a valid gem 'cocoapods' (>= 0), here is why:
Unable to download data from https://rubygems.org/ - no such name (https://rubygems.org/specs.4.8.gz)
这导致了“他们仍在使用 TLS 1/SSLv3”的错误路径,请在https://stackoverflow.com/a/51015358和https://stackoverflow.com/a/19179835执行以下操作。在使用我自己的openssl s_client -connect rubygems.org:443
测试后,我确定 SSLv3/TLSv1 问题已得到解决。无论如何,我在 /etc/hosts 设置中强制为 rubygems.org 输入 IPv4 条目,并删除https://rubygems.org/源链接以放入不安全的http://rubygems.org/进行更新。休息一下:我不知道如何强制它允许我重新添加https://rubygems.org/源,甚至是不安全的http://rubygems.org/源
请参阅下面的终端输出,显示我可以从 rubygems.org 完全访问 specs.4.8.gz(没有网络问题)并且无法重新添加源链接:
Desktop 04:08:17$ curl -s -o specs.4.8.gz https://rubygems.org/specs.4.8.gz
Desktop 04:08:32$ ls | grep specs
specs.4.8.gz
Desktop 04:08:37$ gem sources -l
*** CURRENT SOURCES ***
Desktop 04:08:54$ gem sources -a https://rubygems.org
https://rubygems.org is too similar to https://rubygems.org
Do you want to add this source? [yn] y
Error fetching https://rubygems.org:
no such name (https://rubygems.org/specs.4.8.gz)
Desktop 04:09:02$ gem sources -a https://rubygems.org/
https://rubygems.org/ is too similar to https://rubygems.org
Do you want to add this source? [yn] y
Error fetching https://rubygems.org/:
no such name (https://rubygems.org/specs.4.8.gz)
Desktop 04:09:15$ gem sources -l
*** CURRENT SOURCES ***
Desktop 04:15:57$ gem sources -a http://rubygems.org/
https://rubygems.org is recommended for security over http://rubygems.org/
Do you want to add this insecure source? [yn] y
http://rubygems.org/ is too similar to https://rubygems.org
Do you want to add this source? [yn] y
Error fetching http://rubygems.org/:
no such name (http://rubygems.org/specs.4.8.gz)
Desktop 04:19:00$ gem sources -l
*** CURRENT SOURCES ***
Desktop 04:19:06$ ping rubygems.org
PING rubygems.org (151.101.128.70): 56 data bytes
64 bytes from 151.101.128.70: icmp_seq=0 ttl=57 time=29.700 m
Desktop 04:21:00$ ls -alrt | grep spec
-rw-r--r-- 1 <removed> staff 4254166 Oct 13 16:08 specs.4.8.gz
我对这个问题感到困惑
没有这样的名字(https://rubygems.org/specs.4.8.gz)
鉴于我能够毫无问题地使用 curl 拉动它。我尝试从我的/etc/hosts
位置删除 IPv4 条目,在我的无线设备中禁用 IPv6,在我的无线设备中启用 IPv6。我根本无法强制 rubygems 重新启用https://rubygems.org/源。
版本:
Desktop 04:15:16$ ruby --version
ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.x86_64-darwin19]
Desktop 04:15:19$ gem --version
3.1.4
Desktop 04:15:23$ gem sources -l
*** CURRENT SOURCES ***
Desktop 04:15:30$ gem install cocoapods
ERROR: Could not find a valid gem 'cocoapods' (>= 0) in any repository
Desktop 04:15:53$ uname -a
Darwin <Removed>.local 19.6.0 Darwin Kernel Version 19.6.0: Mon Aug 31 22:12:52 PDT 2020; root:xnu-6153.141.2~1/RELEASE_X86_64 x86_6
我最后一次修复尝试(到目前为止)是再次重新安装 rubygems。
rubygems-3.1.4 04:29:28$ ruby setup.rb
ERROR: While executing gem ... (Errno::EROFS)
Read-only file system @ rb_sysopen - /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/gem
rubygems-3.1.4 04:29:30$ sudo ruby setup.rb
Password:
ERROR: While executing gem ... (Errno::EROFS)
Read-only file system @ rb_sysopen - /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/bin/gem
所以现在,我什至无法重新安装 ruby gems,更不用说重新添加 rubygems.org 源了。
解决方案
在使用 rvm 重新安装 Ruby 并重新安装 Xcode 并遇到同样的问题后,我终于弄明白了。我并没有意识到 root 正在工作而我的本地用户没有。问题是我已断开与公司网络的连接以进行安装,但仍被配置为在我的本地用户中使用公司代理设置,而不是在 root 中。
基本上,撤消https://stackoverflow.com/a/48824738/14444903中的设置
vi ~/.gemrc
推荐阅读
- c# - 使用 C# 更新 JSON 文件中存在的特定项目
- c - 试图让 UART 在 dsPIC33EV256GM102 上工作
- c# - 在服务器上处理的小型 API 调用与存储在内存中的大型数据拉取
- pytorch - PyTorch 错误张量 a (128) 的大小必须与非单维 0 处的张量 b (9) 的大小相匹配
- xcode - 是否有一个键盘快捷键可以在 Xcode 中最近访问的两个选项卡之间切换?
- angular - 如果我使用此代码是否可以安全地抵御 XSS 攻击?
- java - 清除文件后如何继续写入文件?
- mysql - 连接具有非同质属性的四个视图表时出错
- php - 从 Web 应用程序将文档添加到 Marklogic 中的集合
- typescript - 在打字稿中找不到名称“获取”和“标题”