我的阿里云用的是debian wheezy系统,今天例行维护了下,打算安装点更新什么的,结果被坑了好久。
起因
同往常一样,先是apt-get update
,然后再apt-get upgrade
,发现libc基础库有安全更新,也没怀疑什么,果断安装之,然后就悲剧了。
更新之后偶然又运行了一次apt-get update
,结果报了一个挺罕见的错误:
E: Method http has died unexpectedly!
E: Sub-process http received a segmentation fault.
果断google之,结果没发现什么靠谱的解决方法。仔细想了想,更新前apt还是好好的,估计是这次更新的libc的问题。
解决过程
查了下/var/log/dpkg.log
,最近一次更新里主要是把下面的几个软件从2.13-38+deb7u4
升到了2.13-38+deb7u5
版本:
- libc6
- libc-bin
- libc6-i386
- libc6-dev
- libc-dev-bin
- libc6-dev
先回退到升级前的版本试一下,运行命令
sudo apt-get install libc6=2.13-38+deb7u4
提示说
E: Version '2.13-38+deb7u4' for 'libc6' was not found
没办法,到/var/cache/apt/archives/
目录看看有没有老版本的缓存
ll /var/cache/apt/archives/ | grep libc6
果断没有发现。。。只能老老实实的到https://packages.debian.org/挨个搜索下载(见下文),然后用dpkg手动安装降级。例如:
sudo dpkg -i libc6-dev_2.13-38+deb7u4_amd64.deb
降级安装libc6之后,再试一下sudo apt-get update
,果断恢复正常了。。。
接下来只要把剩下的几个软件降级回去即可,最后运行sudo apt-get check
检查一下依赖关系,确保没有问题。
怀疑
忙活完之后,到https://www.debian.org/security/index.en.html查了下,结果没有发现这次libc升级的新闻。。。。
另外,我检查了下在digital ocean托管的debian wheezy系统和自己工作用的ubuntu trusty系统,都没有这个libc的安全升级。。。
修改/etc/apt/sources.list
,注释掉阿里云的镜像,然后重新apt-get update
,再apt-get upgrade
,结果libc的安全升级就不见了。。。
求真相
目前在阿里云发了个工单,问下是怎么个情况,等待回复中。。。
不解,就这样吧。
2014-10-14 更新
今天抽空又看了下这个问题,发现在https://packages.qa.debian.org/e/eglibc.html确实有这次更新的新闻,然后重新安装了一下,结果这次没问题了。。。这个世界总是存在好多解释不了的事情呢。。。
另外,如果要下载某个版本的软件包的话,也不必傻乎乎的跑到https://packages.debian.org/这里去了,直接apt-get即可:
apt-get download libc6=2.13-38+deb7u4
冤枉人家了。