![意外卸载大量软件包后,Ubuntu 系统崩溃](https://linux22.com/image/830662/%E6%84%8F%E5%A4%96%E5%8D%B8%E8%BD%BD%E5%A4%A7%E9%87%8F%E8%BD%AF%E4%BB%B6%E5%8C%85%E5%90%8E%EF%BC%8CUbuntu%20%E7%B3%BB%E7%BB%9F%E5%B4%A9%E6%BA%83.png)
我不小心删除了所有以以下名称开头的软件包jpeg
:
sudo apt-get remove jpeg*
这搞砸了很多事情,删除了 Unity、Firefox、Flash 播放器等。
我设法恢复了桌面和 Unity,但很多东西仍然有问题。例如.rpm
文件.tag.gz
根本打不开。
我想要的是一种可以修复所有问题的方法。相当于使用 Windows 光盘进行“修复安装”的方法。
有人有什么建议吗?
答案1
您可以安装ubuntu-desktop
任务:
sudo apt-get install ubuntu-desktop^
这将安装您已删除的标准 Ubuntu 桌面的所有软件包。它不会恢复您已安装的不属于标准桌面的软件包(即它将重新安装 Unity 和 Firefox,但不会重新安装 Flash Player)。
要安装这些软件包,您可以查看/var/log/apt/history.log
并准确了解您已删除的内容。
笔记:安装ubuntu-desktop^
任务不同于安装ubuntu-desktop
包裹。前者将为 APT 提供一些提示来解决涉及虚拟包的依赖关系,后者将让 APT 自由选择包(最终会安装无用的东西,例如ubiquity
)。
为何会发生此问题? apt-get remove jpeg*
将要不是删除所有以 开头的软件包jpeg
。它将删除所有jpe
名称中包含 的软件包。这是因为 apt-get 使用正则表达式,因此jpeg*意思是:包含以下内容的一切杰普后跟零个或多个G。
答案2
解决此问题的最佳方法可能是重新安装 Ubuntu。(即使您打算重新安装而不重新格式化,也应该先备份文档。)
如果您确实想尝试修复系统,请查看软件包管理器的日志文件以查看哪些软件包被删除,然后重新安装它们:
/var/log/dpkg.log
(信息完整,但难以阅读)/var/log/apt/history.log
(缩写将告诉您每个被删除或修改的包 - 可能是您最好的选择)/var/log/apt/term.log
apt-get
(如果你在终端中删除了软件包,这应该会显示你当时看到的内容,包括将要删除的软件包的列表 - 因此这可能是最好的方法)
重新安装以 开头的软件包是jpeg
行不通的,因为很多(几乎可以肯定是大多数)被删除的软件包都是因为依靠那些包裹。
将来,我建议仔细检查卸载软件包的后果。如果您使用命令行,您将始终收到通知。(除非您使用该-y
选项,在这种情况下通常不会。我建议不要使用该选项,除非您知道自己在做什么,尤其是对于删除。)
检查使用 执行的包管理操作的后果apt-get
而不冒风险的一种方法是运行apt-get -s
而不是sudo apt-get
。这仅模拟指定的操作,并报告哪些包会受到影响以及如何受到影响。
答案3
我sudo apt-get purge wine*
在 Ubuntu 15.10 上运行,因此启动时没有图形界面,只有终端登录选项。
正如 Eliah Kagan 所建议的那样,我使用了/var/log/apt/history.log
我在 history.log 上运行 nano 中的信息,并制作了一个简单的脚本,其中包含sudo apt-get install
我在第 3 行找到的所有已清除的包:
Purge: evolution:amd64 (3.16.5-1ubuntu3.1), libtotem-plparser18:amd64 (3.10.5-1) ...... etc
但首先我必须手动删除所有 : 和 之间的文本,包括 :,
在此步骤中,新脚本会很有帮助,因为软件包有数百个。之后,我运行脚本并删除了一些Unable to locate packages
(我手动安装的)。再次运行脚本,就完成了。一切都运行正常……幸运的是
答案4
我意外删除了它libssl1.0.0
,我的机器就瘫痪了。为了恢复它,我做了以下操作:
- 备份已删除的日志
cp /var/log/apt/term.log ~/libssl.term.log
- 删除与 libssl 操作无关的行
vi ~/libssl.term.log
- 如果缺少网络(无法
ping google.com
),则在恢复模式下重新启动并启用网络 - 重新安装已删除的软件包
cat ~/libssl.term.log | grep ^Removing | sed -e 's/^Removing //g;s/ (.*$//g;/diversion of/d;/dangling symlinks/d' | xargs sudo apt-get -y install