学习html5的网站一个完整的策划案范文
报错中兜兜转转
更新过程中手痒Ctrl C
中断了更新,然后噩梦开始了
各种查百度谷歌,大部分解决apt依赖关系的方法说使用
sudo apt-get install -f
但是还是无法解决问题,一直报旧版本e2fsprogs
已存在,导致新版本无法替换的问题
既然版本不匹配,我直接将原先版本卸载好了,然后我就用--force-all
强行卸载了存在的旧版本e2fsprogs
sudo dpkg -r --force-all e2fsprogs
卸载过程中一直在出警告,这给我解决问题埋下了伏笔
到这,我以为我解决问题了,再使用sudo apt-get install -f
就可以自动修复依赖问题了,然而,piapiapia~ 依然报错
不过和前面的报错对比可以看出来,存在旧版本的问题已经解决了,在这里没有再报错,算是给了我一点解决问题的信心
好的,再耐下心来看报错
dpkg: error processing archive /var/cache/apt/archives/e2fsprogs_1.45.5-2ubuntu1_amd64.deb (--unpack)
遇到这种情况,网上大多的方案都是使用--force-overwrite
强行安装,但是人不能解决问题,使用如下命令
# sudo dpkg -i --force-overwrite <报错包路径>
sudo dpkg -i --force-overwrite /var/cache/apt/archives/e2fsprogs_1.45.5-2ubuntu1_amd64.deb
然而,并没有什么用,还是报一样的错
解决方案
更少的报错信息让我看清了问题,感觉是chattr
出现了问题,然后查了一下chattr
是干什么用的,并发现了和我一样报错的情况 unable to make backup link of `./usr/bin/chattr’ before installing new version: Operation not permitted
Linux chattr命令详解
chattr命令用于锁定文件的修改权限,可以猜想到是对/usr/bin/chattr
不可修改,即为Operation not permitted
按照chattr命令的作用使用如下命令解除文件不可修改权限
chattr -i /usr/bin/chattr
chattr -a /usr/bin/chattr
# 使用lsattr查看文件权限
lsattr /usr/bin/chattr
但是没有任何作用,也没有反馈
然后我就猜测是chattr也损坏了,查到相同案例chattr命令被篡改
按照他的方法,编译安装chattr,并使用这个来修改/usr/bin/chattr
和/usr/bin/lsattr
的权限过程如下
- 先下载
chattr.c
文件(https://github.com/posborne/linux-programming-interface-exercises/blob/master/15-file-attributes/chattr.c) - 在下载目录下使用命令
cc chattr.c
编译,得到文件a.out,把a.out名字改成chattr - 运行编译好的文件,把被篡改的文件去掉不可修改的隐藏属性,
./chattr -ia /usr/bin/chattr
./chattr -ia /usr/bin/lsattr
完成上面的过程之后,直接使用sudo apt-get install -f
自动修复依赖关系成功
可能有用的操作
在完成上述解决过程之前,在不断改错中我还尝试了一下可能对解决问题有用的操作
修改与版本对应的APT源
Ubuntu 20.04 依赖包安装错误解决方案
修改APT源
# 打开sources.list文件
sudo vim /etc/apt/sources.list
# 阿里源 Ubuntu 18.04
deb http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ bionic-backports main restricted universe multiverse
# 中科大源 Ubuntu 20.04
deb https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-security main restricted universe multiverse
deb https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
deb-src https://mirrors.ustc.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
刷新列表
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install build-essential
重新执行 fix 问题
sudo apt --fix-broken install
恢复dpkg的status
Ubuntu安装软件出现依赖问题无法安装—解决办法
cd /var/lib/dpkg/status
sudo rm status
sudo cp /var/lib/dpkg/status-old /var/lib/dpkg/status
apt-get 其他依赖问题可以参考关于依赖项:apt-get不安装任何Linux服务器