在公司服务器上使用apt-get upgrade遇到这个问题。通过查阅资料,发现问题的关键在于,chattr需要升级但是chatter无法被删除。
使用:
lsattr /usr/bin/chattr
发现chattr的属性包括i和a,i代表immutable,不可更改,a代表append only,只能增加。这样问题就清楚了,chattr不可更改导致无法升级,至于出现这个情况的原因也不清楚。于是使用chattr更改自己的i和a属性
chattr -i /usr/bin/chattr
chattr -a /usr/bin/chattr
没有任何效果,而且提示我chattr的用法。出现这种提示的原因往往都是用错了指令,我反复确认指令都没有错。
于是在本地机器上验证chattr的属性,发现是没有i和a属性的,而且上述指令也可以正常工作。
实在没有办法,使用sftp将本地的chattr传到服务器上,命名为chattr_new,再用传上去的chattr_new更改chattr的属性
chattr_new -i /usr/bin/chattr
chattr_new -a /usr/bin/chattr
然后在执行apt-get upgrade,没有任何报错。
注:
chattr是用来防止误删操作的,即使是root用户,在chattr为文件添加了i属性后,root用户也无法删除。
lsattr则是用来查看文件的这方面的属性的。