使用镜像源来更新 openSUSE 系统

虽然 openSUSE 官方的说明中表示,使用 zypper 更新系统的时候,会根据地理位置自动选用较近(通常速度也较快)的镜像站点来下载更新包。实际使用过程中似乎并不是这样的。

最近这段时间更新 openSUSE 经常遇到错误,不管是 Leap 15.4 还是 Tumbleweed 都这样。类似于,

Retrieving repository 'Update repository with updates from SUSE Linux Enterprise 15' metadata .......................................................[error]
Repository 'Update repository with updates from SUSE Linux Enterprise 15' is invalid.
[repo-sle-update|http://download.opensuse.org/update/leap/15.4/sle/] Valid metadata not found at specified URL
History:
- [|] Error trying to read from 'http://download.opensuse.org/update/leap/15.4/sle/'
- Download (curl) error for 'http://download.opensuse.org/update/leap/15.4/sle/content':
Error code: Curl error 56
Error message: Recv failure: Connection reset by peer

偶尔用代理的情况下又可以更新成功。开始我还以为是网站被墙了。

转头一想,不对啊,为什么没有使用比较近的镜像源来更新,而非要连到官方的主服务器呢?我记得之前还听说过几次主服务器因为访问量过大而拥堵的情况。看来 zypp.conf 里面设定的使用优先使用地理邻近的镜像源的情况并没有起作用。于是搜了搜,找到了手动更换源地址来使用 MirrorCache 的说明,原来是需要自己将系统中的源配置文件中的地址给改了才行。

下面的指令可以查询当前源的地址,

grep baseurl /etc/zypp/repos.d/*.repo

如果要批量改成 https://mirrorcache.opensuse.org/,则可以使用下面的指令,

sudo sed -i "s,http://download.opensuse.org,https://mirrorcache.opensuse.org,g" /etc/zypp/repos.d/*.repo

注意看,这个 mirrorcache 的地址是使用了加密连接 HTTPS 的。现在更新起系统来终于飞快了。虽然以前也不算慢,可是想想自己给官方源的服务器造成了那么多不必要的压力,就感觉很愧疚。

更新 2023-02-12

这样修改来强制使用镜像站点更新,下载软件包的速度确实飞快。但是也可能偶尔会带来问题,比如下载软件包的时候会提示某些软件包的摘要验证(Digest verification)失败。此时会有如下的警告,

Retrieving: libspice-client-glib-2_0-8-0.41-4.3.x86_64.rpm ......................................[done] 

Warning: Digest verification failed for file 'libspice-client-glib-2_0-8-0.41-4.3.x86_64.rpm' 
[/var/tmp/AP_0xkxnbg3/x86_64/libspice-client-glib-2_0-8-0.41-4.3.x86_64.rpm] 

 expected 8c489d71ea08f0bcf2f93d3f731c22fbee0b1c696ef67abd298f38d0f8dc2a83c0376bc9201db539c1b10e15a726 
dec396bc413cc428bd69ce33d3c7bc6d4b3b 
 but got  cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877e 
ec2f63b931bd47417a81a538327af927da3e 

Accepting packages with wrong checksums can lead to a corrupted system and in extreme cases even to a s 
ystem compromise.

此时可以根据提示 discard 当前下载然后重试。有时候重试能够正确获取,也有可能多次重试依然遇到同样的错误。实际上如果换个时间重试可能又都没问题。

这个问题极有可能是因为下载过程出错,当然也可能是镜像源上的软件包本身有问题。如果想确认的话,可以手工下载出错的软件包来检查。例如,针对上面的软件包 libspice-client-glib,

> wget -c https://mirrorcache.opensuse.org/tumbleweed/repo/oss/x86_64/libspice-client-glib-2_0-8-0.41-4.3.x86_64.rpm
> rpm --checksig ./libspice-client-glib-2_0-8-0.41-4.3.x86_64.rpm 
./libspice-client-glib-2_0-8-0.41-4.3.x86_64.rpm: digests signatures OK

手工检查发现没有问题。

如果换个时间再升级一直遇到同样的问题,可以退回到使用 download.opensuse.org 这个源地址。将前文中的操作反过来就行了。©

本文发表于水景一页。永久链接:<http://cnzhx.net/blog/update-opensuse-from-mirrorcache/>。转载请保留此信息及相应链接。

4 条关于 “使用镜像源来更新 openSUSE 系统” 的评论

  1. 引用通告: 升级 openSUSE Leap 15.3 到 Leap 15.4 | 水景一页

雁过留声,人过留名

您的电子邮箱地址不会被公开。 必填项已用 * 标注

特别提示:与当前文章主题无关的讨论相关但需要较多讨论求助信息请发布到水景一页讨论区的相应版块,谢谢您的理解与合作!请参考本站互助指南
您可以在评论中使用如下的 HTML 标记来辅助表达: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>