如何撤消apt-get删除?


18

我知道这很有趣,但是我使用sudo apt-get remove python从Ubuntu上删除了所有相关程序的python吗?显然,我可以安装回python,但是安装我删除的所有程序都需要花费很多时间。也许有解决办法?

谢谢


请包括研究工作以消除不赞成票。
Colyn1337

哇!3岁的问题,这有助于恢复我的计算机。很高兴这是在这里并在Google上找到的。谢谢!
Michael Cole

Answers:


26

没有一个简单的方法,但是如果您查看/var/log/apt/history.log,则可以看到已删除的内容。只需重新安装每个已删除的软件包。


2
它救了我的命!
Sanket Sahu

3
我向serverfault注册只是为了支持这一点,谢谢。
Phil 2015年

20

我只是犯了这个错误,您可以运行以下命令来撤消软件包的删除操作,这将从日志文件中提取已删除软件包的信息并重新安装它们

echo '#!/bin/bash' > restore
echo sudo apt-get install `grep Remove /var/log/apt/history.log | tail -1 | sed -e 's|Remove: ||g' -e 's|([^)]*)||g' -e 's|:[^ ]* ||g' -e 's|,||g'` >> restore
chmod +x restore 
./restore

救生员...应该意识到这apt remove libboost*是一个坏主意
坚持

2
谢谢,您救了我的命!提醒:永远不要运行“ sudo apt purge python2.7”

2
不要运行sudo apt remove python3哈哈
ThaJay

好吧,我曾经apt purge这么撕裂我,好东西是全新安装。很高兴知道(对于大多数人)关键的OS系统(例如netplan)需要此功能。在询问您是否确定之前,请确保它在删除列表中引用了它,但是谁有时间看一下并确定何时更容易将y密钥和return系统遗忘
掉呢

5

我在Ubuntu论坛上发现了一个很酷的技巧。

可以在终端中运行以下命令:

awk '!/^Start|^Commandl|^End|^Upgrade:|^Error:/ { gsub( /\([^()]*\)/ ,"" );gsub(/ ,/," ");sub(/^Install:/,""); print}' /var/log/apt/history.log

查看输出,然后使用

sudo apt-get install [packages]

并将[packages]替换为返回的软件包的最后一行(注意,它可能会包装)。


你救了我的日子。真的对我有很大帮助。
Khamidulla

1

查找所有已卸载的软件包。它存储在/var/log/apt/history.log中。您可以编写一个Shell程序来安装每个已删除的软件包。可以在任何文本编辑器GNU Emacs,vi,GNU Nano上编写。通过终端执行它。所有卸载的程序将自行重新安装。


0

要增加ablackhat的答案,您可以将最后一个remove命令之后的所有内容复制并粘贴/var/log/apt/history.log到新的程序员编辑器中。将正则表达式替换:.*?,(空字符串),然后复制所有结果,并用空格分隔。然后跑$ sudo apt-get install <paste>


0

升级将还原其中的大部分,其余的..您可以使用上面显示的技术。要升级,只需键入“ sudo apt-get upgrade”


为什么要apt-get upgrade重新安装已被故意删除的软件包?
Gerald Schneider

与OP的完美答案实际上相差不远:等待三年再做apt-get dist-upgrade
Quadruplebucky

-1

如果你

 apt-get install python

将使用所有先决条件重新安装Python,我假设您正在谈论所有相关程序吗?


我已经安装了Python,但该方案在那里依赖于它像以星,GIMP和很多其他人没有回复的((即使Gedit是不工作
IgorDiy

-1。无法解决OP的问题,因为所有需要Python的东西也都被删除了。
麦哲伦
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.