我不小心删除了所有以以下名称开头的软件包jpeg
:
sudo apt-get remove jpeg*
这搞砸了很多事情,删除了Unity,Firefox,Flash Player等。
我设法以某种方式恢复了桌面和统一性,但随后很多事情仍然存在问题。例如.rpm
文件,.tag.gz
根本不会打开。
我想要的是一种修复所有错误的方法。相当于带有Windows光盘的“修复安装”。
有提示吗?
我不小心删除了所有以以下名称开头的软件包jpeg
:
sudo apt-get remove jpeg*
这搞砸了很多事情,删除了Unity,Firefox,Flash Player等。
我设法以某种方式恢复了桌面和统一性,但随后很多事情仍然存在问题。例如.rpm
文件,.tag.gz
根本不会打开。
我想要的是一种修复所有错误的方法。相当于带有Windows光盘的“修复安装”。
有提示吗?
Answers:
您可以安装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 *的意思是:包含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
。这仅模拟指定的操作,并报告结果将影响哪些软件包以及如何受影响。
我sudo apt-get purge wine*
在Ubuntu 15.10上运行,因此仅引导终端登录选项上没有图形界面。
正如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
(我已经手动安装了)。再次运行脚本,就这样。一切都很好...幸运的是
我不小心卸下libssl1.0.0
了机器,并将其弄伤了。为了恢复,我做了:
cp /var/log/apt/term.log ~/libssl.term.log
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
这是一个小的python脚本,您可以在其中通过on进行批量卸载来编写(不可用)软件包字符串/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)