症状:
sudo apt upgrade 返回错误提示:
Do you want to continue? [Y/n] y
Could not exec dpkg!
E: Sub-process /usr/bin/dpkg returned an error code (100)
可能的原因:
/usr/bin/dpkg 这个程序文件、或者是这个程序所需要用到的其他文件已经被误删了。
解决方式:
重装 dpkg 。但是这个时候 apt install dpkg 已经无法正常工作了!所以需要用其他方式重装它。
root@iZ2zefmhn4kcl42aun1wxtZ:~/mkdir dpkg && cd dpkg # 新建一个文件夹并进入那个文件夹
root@iZ2zefmhn4kcl42aun1wxtZ:~/apt download dpkg # 从 apt 下载 dpkg 的安装包
root@iZ2zefmhn4kcl42aun1wxtZ:~/dpkg# ls # 查看下载的 安装包
dpkg_1.19.0.5ubuntu2.3_amd64.deb # 注意:这个不是命令。是 ls 的输出内容,这个就是我们下载的包文件
root@iZ2zefmhn4kcl42aun1wxtZ:~/dpkg# ar x dpkg_1.19.0.5ubuntu2.3_amd64.deb # 将安装包解压缩,注意里面的文件名是上面刚过下载到的文件名。
root@iZ2zefmhn4kcl42aun1wxtZ:~/dpkg# ls # 查看解压缩后的结果,可以看到新增了几个文件
control.tar.xz data.tar.xz debian-binary dpkg_1.19.0.5ubuntu2.3_amd64.deb
root@iZ2zefmhn4kcl42aun1wxtZ:~/dpkg# tar xf data.tar.xz # 再次解压缩 data.tar.xz 你那边的文件名后缀不一定还是 .xz,不过一样是解压缩,具体以实际解压得到的文件名为准
root@iZ2zefmhn4kcl42aun1wxtZ:~/dpkg# ls # 再次查看解压缩后结果。可以看到多出了 etc、sbin、usr、var 等几个文件夹
control.tar.xz data.tar.xz debian-binary dpkg_1.19.0.5ubuntu2.3_amd64.deb etc sbin usr var
# 然后要做的事情就是把解压出来的几个文件夹复制到系统中
root@iZ2zefmhn4kcl42aun1wxtZ:~/dpkg# cp -R etc /
root@iZ2zefmhn4kcl42aun1wxtZ:~/dpkg# cp -R sbin /
root@iZ2zefmhn4kcl42aun1wxtZ:~/dpkg# cp -R usr /
root@iZ2zefmhn4kcl42aun1wxtZ:~/dpkg# cp -R var /
# 最后再执行 sudo apt upgrade,可以发现问题解决了。
# 如果有其他报错,那么是其他问题导致的。跟现有问题已经没关系了!
# 然后刚才我们新建的 dpkg 这个文件夹。可以删除了,已经没用了。删除文件就不举例了!