2021-11-09 Cannt add PPA user or team does not exist

在Linux上安装Homebrew需要ruby2.6.3,但aptinstall只提供2.5。尝试使用rbenv和rvm,但仍然无法解决。通过strace分析发现网络连接问题,具体表现为访问launchpad.net/api/~real-gc时发生错误。进一步排查确定是由于网络审查导致的访问失败。解决方案可能涉及网络代理设置或寻找替代方法。

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

背景

Linux上要安装个Homebrew,至少要ruby 2.6.3,apt install安装的只有2.5,于是搜索得可以用rbenv、rvm安装,测试apt install rbenv安装后也只能装2.5的ruby,于是add ppa:~real-gc/ubuntu/rvm,报错 Error: ‘~real-gc’ user or team does not exist.

解决办法

sudo add-apt-repository ~real-gc/ubuntu/rvm 执行带上当前用户环境变量以使用代理

诊断

我先通过strace跟踪上面的命令,在输出Error前,看到进程先connect一个IP的443端口成功,且write成功,然后read时读到长度为0;我以为read到为0就没有异常。但是这应当时异常的最后一个系统调用,其实一般这就是引起异常的原因.
看到StackOverflow:cant-add-ppa-on-ubuntu-15-10-user-or-team-does-not-exist一句评论:

added a print(e) to the catch block in def _get_https_content_py3 in /usr/lib/python3/dist-packages/softwareproperties/ppa.py to get the actual error

我也编辑ppa.py通过关键字team找到打印错误信息的位置,print(e),显示https://launchpad.net/api/~real-gc 访问错误,所以原因找到了,是网络原因。办公电脑一访问果然RESET. 另一个StackOverflow回答提到是网络原因,但是他建议ping google.com;这里抛出异常不仅不具体还引起歧义了,加大了问题定位难度。

总结
  1. 对系统调用read返回0引起警惕,显然是出现了异常,read返回0啥也没读到,不合常理.
  2. 异常输出应当具体些,而不是使用业务上宽泛的异常,这里是IO异常却变成了user or team does not exist.
  3. strace跟踪系统程序时关注打开的文件(特别是可执行文件)和网络连接,connect and read
  4. 问题:没有参考那个评论,我应该怎么定位问题呢? 翻Linux源码找关键字… strace没用精罢了!
  5. 为什么用nip.io也没能绕过深信服审查器?因为mutmeg(squid)匹配URL查找主机失败,IP: 91.198.89.222
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值