还原意外`dpkg –clear-selections`
我想“清除”所有仅被“删除”的软件包。 浏览dpkg
的联机帮助页后,我认为--clear-selections
参数可以解决问题。 所以愚蠢的我用sudo
键入它,然后我再次检查选择状态并感到震惊。
dpkg
选择了所有(非重要)已安装的软件包进行卸载!
这当然是我的错,但绝对不是故意的。 那么,我该怎么回复呢?
我仍然打开了终端窗口,在那里我运行了dpkg --get-selections | grep deinstall
dpkg --get-selections | grep deinstall
在安装之前 (85包)和之后 (2614包)意外命令。
我现在需要的是从第二个(当前)减去第一个(旧)卸载列表,并再次标记所有这些包。 将它们设置为manual
将不会很好,因为这将影响数百个库,如果没有它们的应用程序安装就毫无意义。 因此我们必须将其设置为auto
,然后我可能必须手动找出要作为manual
选择的顶级包。 或者可以帮助我吗?
信息:我有两个单独的文本文件,一个包含第一个--get-selections
输出,一个包含第二个。 它们只包含具有以下语法的行:
package-name deinstall
其中package-name
是实际的包名,其间的空格是未定义的选项卡数。
更新:我刚刚在事故发生之前找到了dpkg --get-selections
的输出而没有任何grep
过滤! 之后只安装了两个软件包,稍后我可以手动修复它们。
请帮我恢复以前的套餐选择!
要将当前选择的所有软件包设置为deinstall
以进行install
,请运行以下两个命令:
sudo dpkg --get-selections | awk '/deinstall/ {printf "%s\t%s\n",$1,"install"}' > packages sudo dpkg --set-selections < packages
第一个命令查找所有标记为deinstall
包,并写入这样的包列表
package-name install
第二个命令更正了包。
如果给出了事故发生之前 dpkg --get-selections
的完整输出,您只需使用该命令恢复所有选择
sudo dpkg --set-selections < packages
其中packages
是保存旧输出的文件的名称。