如何一次重新安装许多已删除的软件包?


8

我使用sudo apt-get remove python命令,不小心删除了一堆所需的软件包。我通过命令行登录并再次安装了ubuntu-desktop,但是缺少其他软件包,我正在寻找一种轻松重新安装这些已删除软件包的方法。由于软件中心有日志,所以我想问一下最简单的方法是回滚更改或从软件中心提取已删除的软件包列表...

注意:我sudo apt-get install .... .... ... ...在该列表中键入了大约二十个那些被删除的程序,但是当我按Enter键时,由于找不到某些软件包名称,所以没有安装其中的任何一个。

该程序在同一日期被删除。


1
查找范围/var/log/apt/history.log
Lekensteyn

Answers:


16

首先,让我说删除python可能导致许多基本命令不再起作用。因此,我不知道接下来的工作是否会奏效。

其次,我认为package names couldn't be found您的错误是由命令行上的拼写错误的名称引起的,或者是由于本地安装且在存储库中不可用的软件包引起的。

然后,要获取已删除软件包的dpkg日志(相对于上一个可用日志)(我认为您无需考虑较旧的日志):

awk '$3 == "remove" { print $1, $2, $4 }' /var/log/dpkg.log | tee list

然后编辑list在当前目录中创建的文件,并根据行的时间戳仅保留相对于要重新安装的软件包的行。假设您将修改后的文件保存到list-mod

要重新安装该软件包,请使用以下命令:

sudo apt-get --simulate install $(awk '{ print $3 }' list-mod)

我插入了该--simulate选项,以查看该命令将执行的操作。如果一切正常,请在删除该选项的情况下再次执行命令。

如果命令说找不到某些软件包,只需从中删除它们,list-mod然后重试。


谢谢,我能够重新安装所需的软件包!但是,有一个问题,在软件中心日志中删除了200多个软件包,但是列表文件中有大约150个,这是否意味着dpkg.log不包含自动安装/相关软件包?再次感谢您提供此解决方案:)
Logan

1
该日志文件包含所有的安装,升级,卸载或彻底删除软件包,并从每个应用dpkgapt-getaptitude,立得,软件中心,gdebi等等。你可以给看看旧的dpkg.log文件,请参阅ls -lrt /var/log/dpkg.log*
enzotib 2011年

1
@enzotib我运行了一个清除旧的Linux标头的脚本,我认为正则表达式与我不想删除的许多软件包匹配(非常重要!)。您的回答使我免于一定的灾难。
shivisuper

1
@enzotib您只是在运行错误的脚本后才使我免于重新安装操作系统的麻烦。谢谢!
brndn2k

它说0升级,0安装,0删除和50未升级
James Casia

2

因此,我碰巧犯了一个类似的错误: sudo apt-get purge python3.6*而不是sudo apt-get purge python3.6.*

通过以下步骤,我能够很快修复它:

  1. 打开日志vim /var/log/history.log
  2. 使用vim命令搜索我的错误命令/python3.6\*
  3. 一行中Purge: unity-control-center-signon:amd64 (0.1.7~+14.04.20140211.2-0ubuntu4), ...有一长串已清除的软件包(如果删除的话,将以开头Remove:),我将其复制到另一个文件中而无需Purge:使用它。
  4. 在该文件中,我运行了vim命令:%s/:[^,]*,//g,该命令删除了版本部分,并给我留下了软件包列表unity-control-center-signon lxc ...
  5. 最后,我复制了上一步中的一行并运行: sudo apt-get install unity-control-center-signon lxc ...,这就是它固定的方式。

对我来说是/var/log/apt/history.log
Taylor
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.