更新pod时遇到(ERROR: Failed to build gem native extension.)的解决方案

在更新pod时遇到ERROR: Failed to build gem native extension错误,可能由ruby版本与pod不兼容引起。解决方案包括:安装rvm,解决curl连接超时问题,安装ruby 2.6,最后成功执行pod安装命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一句正常的更新pod命令

sudo gem install -n /usr/local/bin cocoapods

正常情况下, 执行上面的命令 就可以直接升级成功,  升级成功万事大吉, 

反之就遇到下面的升级失败的情况!

➜  Ruby: sudo gem install -n /usr/local/bin cocoapods
Building native extensions. This could take a while...
ERROR:  Error installing cocoapods:
	ERROR: Failed to build gem native extension.

    current directory: /Library/Ruby/Gems/2.3.0/gems/ffi-1.12.2/ext/ffi_c
/System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/bin/ruby -r ./siteconf20200313-24412-3logr3.rb extconf.rb
mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/2.3/usr/lib/ruby/include/ruby.h

extconf failed, exit code 1

Gem files will remain installed in /Library/Ruby/Gems/2.3.0/gems/ffi-1.12.2 for inspection.
Results logged to /Library/Ruby/Gems/2.3.0/extensions/universal-darwin-18/2.3.0/ffi-1.12.2/gem_make.out

这个升级问题困扰了好多天,  可能是ruby的版本和最新的pod版本兼容性有问题, 所以必须先升级ruby, 才能升级pod成功, 且看下面:

方法是在stackoverflow找到的, 当然在安装过程中还需要解决一些其他的异常问题 (默认大家已经安装了  xcode-select)

1. 安装 rvm

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

如果可以安装成功并出现下列的提示则可以直接进行第二步

Upgrade of RVM in /Users/mengshun/.rvm/ is complete.

Thanks for installing RVM 🙏
Please consider donating to our open collective to help us maintain RVM.

👉  Donate: https://opencollective.com/rvm/donate

如果失败, 出现了下方的错误(报错内容 curl: (7) Failed to connect to raw.githubusercontent.com port 443: Operation timed out)

➜  Ruby: curl -L https://get.rvm.io | bash -s stable
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100   194  100   194    0     0    166      0  0:00:01  0:00:01 --:--:--   166
curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused
<
### 解析 Helm 安装 GitLab Runner 注册失败的原因 当遇到 `PANIC: Failed to register the runner` 错误,通常是因为 GitLab Runner 无法成功连接到指定的 GitLab 实例来完成注册过程。具体来说,在尝试通过 HTTP POST 请求向 GitLab API 发送注册请求遇到了网络连接拒绝错误[^1]。 #### 可能原因分析 - **IP 地址不可达**:目标 IP (`172.30.0.222`) 的端口 80 上的服务可能未运行或防火墙阻止了访问。 - **权限不足**:如果试图创建目录 `/nonexistent/.gitab-runner` (注意拼写错误),则可能是由于缺乏必要的文件系统操作权限导致的失败[^2]。 - **Token 不匹配**:用于注册 Runner 的 Token 应该是从 GitLab CI/CD 设置页面获取的有效令牌,而不是其他地方自定义生成的字符串[^3]。 - **DNS 或主机名解析问题**:在某些情况下,即使 IP 是可达的,但如果 DNS 配置不当也可能引发类似的错误消息。可以通过修改 Kubernetes 中的 `hostAliases` 来临解决问题[^4]。 ### 解决方案建议 为了修复这个问题并使 GitLab Runner 成功注册: 1. 确认 GitLab Server 是否正常工作,并监听于所提供的地址和端口号上; 2. 检查是否有任何安全组规则或其他形式的安全策略阻碍了从 Runner 到服务器之间的通信; 3. 使用正确的 Token 进行注册——确保这是来自 GitLab Web UI 下发给项目的专用 Runner Tokens 而不是随机生成的一串字符; 4. 如果是在容器化环境中部署,则需确认 Pod 所属 Namespace 对应存储卷挂载路径具有适当读写权限; 5. 尝试调整 K8S Cluster 内部服务发现机制,比如利用 `hostAliases` 字段为特定域名设置静态映射关系以便更稳定地指向实际物理机位置。 ```yaml # 修改后的 hostAliases 示例配置片段 hostAliases: - ip: "172.25.25.32" hostnames: - "gitlab.test.helm.xuxiaowei.cn" ``` 6. 更新 GitLab 和其组件至最新版本以获得更好的兼容性和稳定性支持。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值