如何一次重新安装许多已删除的包?
我使用了sudo apt-get remove python
命令,并意外删除了一堆所需的软件包。 我通过命令行登录并再次安装了ubuntu-desktop,但还有其他软件包缺失,我正在寻找一种方法来轻松地重新安装这些已删除的软件包。 由于软件中心有日志,我想问一下最简单的方法是回滚更改或从软件中心提取已删除的软件包列表…
注意:我输入了sudo apt-get install .... .... ... ...
对于那个列表中大约有二十几个被删除的程序,但是当我按下输入时它没有安装任何一个因为一些找不到包名。
这些节目在同一天删除。
首先,让我说删除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
删除它们再试一次。
所以,我碰巧犯了一个类似的错误: sudo apt-get purge python3.6*
而不是sudo apt-get purge python3.6.*
。
我能够通过以下步骤快速修复它:
- 打开log
vim /var/log/history.log
。 - 使用vim命令
/python3.6\*
搜索我的错误命令。 - 有一行
Purge: unity-control-center-signon:amd64 (0.1.7~+14.04.20140211.2-0ubuntu4), ...
有一长串清除包(如果删除它将以Remove:
开始Purge: unity-control-center-signon:amd64 (0.1.7~+14.04.20140211.2-0ubuntu4), ...
,我将其复制到另一个文件而没有使用Purge:
part来处理它。 - 在那个文件中我运行了vim命令:
%s/:[^,]*,//g
,它删除了版本部分,并给我一个包列表unity-control-center-signon lxc ...
- 最后我复制了上一步中的一行并运行:
sudo apt-get install unity-control-center-signon lxc ...
,这就是它的修复方法。