[系统]archlinux的glibc又调皮了……

arch实在是滚得太快了大家一定要紧跟着滚,不然如果很久不滚突然滚一下就容易滚出各种问题……

不过新的镜像好歹是出了,这下新手安装或者重装就不用经历滚滚地狱了……

====

glibc一直在把/lib/下面的文件往/usr/lib/下迁移(莫名其妙……),然后升级的时候就会一直出现这种错误:

error: failed to commit transaction (conflicting files)
glibc: /lib exists in filesystem
Errors occurred, no packages were upgraded.

如果是最近有滚过的系统,arch的官网上latest news里给出解决方案:

pacman -Syu --ignore glibc
pacman -Su

但是我在第二步还是出现上述错误,于是就要检查下/lib被什么其它包所依赖:

grep '^lib/' /var/lib/pacman/local/*/files

如果有被glibc以外的包依赖,那么先升级那些包。但是我这里没有,所以用pacman的query查:

pacman -Qo /lib/*

这个命令可以找到不被任何包依赖的文件(……)。那么有两种情况,一种是aur,把文件名喂google即可。不过大多数情况下是这个:

error: cannot determine ownership of directory '/lib/modules'

这个里面好像是一些老版本kernel的驱动模块什么的,因为arch滚的特别快,所以就被抛弃了……(估计是arch滚动机制的问题,因为这个情况好像很普遍。arch升级机制的用户体验实在是……不过arch大概也根本不在乎什么用户体验只要他们社区自己玩得high就可以了吧……)

rm掉,不放心也可以mv。

rm -rf /lib/modules/

然后再升级glibc

pacman -Su

这个问题是已经普遍到写到wiki了,具体的情况可以参考:

https://wiki.archlinux.org/index.php/DeveloperWiki:usrlib

https://wiki.archlinux.org/index.php/Talk:DeveloperWiki:usrlib

和这个帖子:

https://bbs.archlinux.org/viewtopic.php?pid=1126667

posted @ 2012-07-27 12:13  杂鱼  阅读(1238)  评论(0编辑  收藏  举报