意外卸载许多软件包后,Ubuntu系统崩溃了

我不小心删除了所有以jpeg名称开头的包:

 sudo apt-get remove jpeg* 

这搞砸了很多东西,删除了Unity,Firefox,Flash播放器等。

我以某种方式设法恢复桌面和统一,但后来很多东西仍然是错误的。 例如.rpm文件和.tag.gz就不会打开。

我想要的是一种解决所有问题的方法。 与Windows光盘的“修复安装”相当的东西。

任何提示,任何人?

您可以安装ubuntu-desktop任务:

 sudo apt-get install ubuntu-desktop^ 

这将安装您已删除的标准Ubuntu桌面的所有软件包。 它不会恢复您安装的不属于标准桌面的软件包(即它将重新安装Unity和Firefox,但不会重新安装Flash播放器)。

要安装这些软件包,您可以查看/var/log/apt/history.log并查看您已删除的内容。

注意:安装ubuntu-desktop^ 任务与安装ubuntu-desktop 软件包不同 。 第一个将给APT一些提示来解决涉及虚拟包的依赖关系,后者将为APT提供选择包的自由(并最终安装无用的东西,如ubiquity )。

为什么会出现问题? apt-get remove jpeg* 不会删除所有以jpeg开头的包。 它将删除名称中包含jpe所有包。 这是因为apt-get使用正则表达式,因此jpeg *表示:包含jpe后跟零或更多g的所有内容

解决此问题的最佳方法可能是重新安装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 。 这仅模拟指定的操作,并报告将影响哪些包作为结果以及如何影响。

我在Ubuntu 15.10上运行sudo apt-get purge wine* ,所以在启动时没有图形界面终端登录选项。

正如Eliah Kagan建议我使用来自/var/log/apt/history.log信息我在history.log上运行nano并制作了一个简单的脚本,其中包含我在线找到的所有清除包上的sudo apt-get install

 Purge: evolution:amd64 (3.16.5-1ubuntu3.1), libtotem-plparser18:amd64 (3.10.5-1) ...... etc 

但首先我手动删除所有文本之间的文本:并且,包括:

在这一步,一个新的脚本将是有用的,因为包是数百。 之后,我运行脚本并删除了一些Unable to locate packages (我手动安装)。 再次运行脚本,就是这样。 一切都很好……幸运的是

安装ubuntu-desktop 安装ubuntu-desktop

 sudo apt-get update && sudo apt-get install ubuntu-desktop 

它将为您的系统安装必要的软件包。

我不小心删除了libssl1.0.0 ,我的机器被瘫痪了。 要恢复,我做了:

  1. 备份已删除的日志cp /var/log/apt/term.log ~/libssl.term.log
  2. 删除与libssl action 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 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

这是一个小的python脚本,您可以在/var/log/apt/history.log上的大量卸载中编写(不可用的)包字符串。 它将输出一个字符串,您可以将其复制粘贴到apt-get install命令中,以便轻松安装所有已删除的包。

 import re apt_str = u"INSERT YOUR PACKAGE STRING HERE, BETWEEN THE QUOTES" match = re.findall(r'([\w\d\.-]+).+? \(.+?\)', apt_str) print " ".join(match)