apt 与 dpkg 有问题。我尝试这样做sudo apt install g++
,但一直收到错误。很奇怪,它一直说g++
已经安装并完全升级。
我输入后whereis g++
,系统提示我/usr/bin/g++
但当我输入时,ls /usr/bin/g++
系统抛出一个错误,提示 g++ 不在 /usr/bin 中。我在网上查了一下大家都在做什么,似乎 dpkg 出了问题,所以我sudo rm /usr/bin/dpkg
现在的问题是,如何完全重新安装它?
更重要的是,由于我不断遇到问题,我如何才能从头开始完全刷新所有包。
我正在运行 Ubuntu 18.04.1 LTS。
答案1
简单答案
重新安装 Ubuntu
您实际上已经破坏了您的系统。如果系统上没有什么真正重要的东西,那么我就会这么做,因为您需要大约 30 分钟到一个小时才能在标准机器上恢复正常工作的系统。
USB 密钥恢复
备用 Ubuntu 安装磁盘 - 修复损坏的系统
你也可以下载 Ubuntu USB 密钥替代版本并从中启动,然后选择“修复损坏的系统”选项。这会执行一系列操作,例如修复 MBR 和检查文件系统文件。
高级答案
我曾帮助客户避免过比这更糟糕的困境。
如果你可以访问另一台 Ubuntu 机器同一类型或者你可以下载并解压 dpkg 包适合您的架构来自您的本地镜像(例如https://packages.ubuntu.com/bionic/dpkg),然后您可以手动将 dpkg 程序复制回其原始位置。
正如评论中提到的,这可能不是你唯一的问题。一旦你恢复了一点状态dpkg
并apt
再次运行,如果可以的话,我会安装这个debsums
包,并建议根据你已经安装的包的已知校验和检查你的其他包。
例如
dpkg -l | awk '/^ii/ { print $2 }' | xargs debsums | grep -vE 'OK$'
然后对于提到的每个包:
apt-get --reinstall <package>
然后,在检查了输出并确保一切正常后,我会重新安装ubuntu-core
和ubuntu-desktop
/或ubuntu-server
包,这应该会使一切恢复到运行状态。