意外卸载大量软件包后,Ubuntu 系统崩溃

意外卸载大量软件包后,Ubuntu 系统崩溃

我不小心删除了所有以以下名称开头的软件包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.logapt-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,我的机器就瘫痪了。为了恢复它,我做了以下操作:

  1. 备份已删除的日志cp /var/log/apt/term.log ~/libssl.term.log
  2. 删除与 libssl 操作无关的行vi ~/libssl.term.log
  3. 如果缺少网络(无法ping google.com),则在恢复模式下重新启动并启用网络
  4. 重新安装已删除的软件包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

相关内容