说一下archlinux的/lib问题

用archlinux的人最近都被/lib问题搞的很烦,很多人被迫重装或者换系统,其实都是太鲁莽,如果不强加--force是不会出问题的。这个问题出来也有2个月了,我是今天才解决的,因为第一次登录升级提示有冲突,于是就逛论坛,知道了不能强制升级,但是之后按照wiki也没弄好,直到今天去国外的论坛才看到解决办法,其实用这种比较激进的系统要学会忍和多学多问才能不出问题,指望这样的一个系统100%的安全是不可能的。我来说说我的升级方法。

基本上开始都是按照wiki去做的,首先会遇到有冲突不能升级glibc,像这样

`error: failed to commit transaction (conflicting files)

  glibc: /lib exists in filesystem Errors occurred, no packages were upgraded.</span></span>`

我们万不可以强制升级,而是忽略glibc升级

`pacman -Syu --ignore glibc

  pacman -Su</span></span>`

当然之后还是要升级的,单独升级glibc,但是依旧提示第一步的冲突错误,于是就只能执行

<span style="font-size:16px;"><span style="font-family: lucida sans unicode,lucida grande,sans-serif;">find /lib -exec pacman -Qo -- {} +</span></span>

把所有不属于glibc的包全部删除,然后升级,wiki上应该已经能成功了,但是我还是遇到了问题,因为在上一步查找的时候,删除能删的包后还有一堆错误

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

  error: cannot determine ownership of directory &#39;/lib/modules/3.3.7-1-ARCH&#39;

  error: cannot determine ownership of directory &#39;/lib/modules/3.3.7-1-ARCH/kernel&#39;

  error: cannot determine ownership of directory &#39;/lib/modules/3.3.7-1-ARCH/kernel/drivers&#39;

  error: cannot determine ownership of directory &#39;/lib/modules/3.3.7-1-ARCH/kernel/drivers/net&#39;

  error: cannot determine ownership of directory &#39;/lib/modules/3.3.7-1-ARCH/kernel/drivers/net/wireless&#39; error: No package owns /lib/modules/3.3.7-1-ARCH/kernel/drivers/net/wireless/rt3572sta.ko.gz</span></span>`

好了,就是这些在阻挡你升级的道路,直接删掉整个目录就好了,删除完顺利升级

`sudo rm -r /lib/modules

  sudo pacman -S glibc</span></span>`

至此顺利升级,总结弄坏系统的基本是一下几个问题

1.出问题不看不问,不管是wiki还是论坛,去都懒得去

2.太鲁莽及坏毛病,很多人喜欢什么都加f参数,这个坏毛病很可能造成较大损失

另外国内linux论坛都太冷清了,很多东西没人回复找不到,最后还是要去国外论坛看看,哎。</span></span>

 

参考文章:

https://bbs.archlinux.org/viewtopic.php?id=145006&p=4

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