Bru*_*uno 6 ubuntu debian apt package-management
我正在使用 浏览软件包列表dselect,但Return错误地按了两次,从而使其确认并退出该[S]elect选项。
当我转到该[I]nstall选项时,它现在建议安装一些我不想要的新软件包(这与我最初寻找的内容无关)。
由于我还没有进行安装本身,有没有一种方法可以将选择重置为我选择新软件包之前的状态,而无需逐一查看列表并按-每个软件包?(它是通过dselect还是通过其他相关命令完成都没有关系。)
编辑:(添加一个例子)
我已经在另一台dselect安装了的机器上试过了。让我们假设gnugo没有安装包(这只是一个例子)。
delect并选择[S]elect获取列表。gnugo在此列表中搜索(使用/,如果您不熟悉dselect)。去[I]nstall。现在会说:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed
gnugo:i386 libgpm2:i386 libncurses5:i386 libreadline6:i386 libtinfo5:i386
0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded.
Need to get 1,926 kB of archives.
After this operation, 9,634 kB of additional disk space will be used.
Do you want to continue [Y/n]?
Run Code Online (Sandbox Code Playgroud)在这里,选择不继续(n)。
dselect。dpkg --get-selections | grep gnugo 什么都不产生。dselect,直接[I]nstall再次,仍然会选择安装包。当然,我可以回到[S]elect列表中,搜索gnugo,按_取消选择它,但在更复杂的情况下,您可能需要一一浏览新的软件包列表。
[I]nstallindselect显然是 的前端apt-get install,但我不确定它从哪里得到它的选择。看来dpkg --get-selection不是这样。至于dselect而言,我想它的状态重置这里的一切与maked***停留在它是,但什么现在只标有**(和没有安装还)可以追溯到__,而不必通过建议列表中手动去从[I]nstall菜单。
编辑2:
这显然与 的内容有关/var/lib/dpkg/status,其中包含以下条目:
Package: gnugo
Status: install ok not-installed
Priority: optional
Section: games
Run Code Online (Sandbox Code Playgroud)
如果我手动将Status: deinstall ok not-installed其更改为,它会从中的选择中消失dselect(这是有道理的)。
我想要的是一种将任何内容Status: install ok not-installed变成的一般方法Status: deinstall ok not-installed(让包裹说Status: install ok installed不受影响)。
事实证明,它dpkg --get-selections并没有列出标记为安装和尚未安装的内容,而是dpkg -l '*'列出了这些内容,并以in.
因此,以下行将重置这些选择:
dpkg -l '*' | grep '^in ' | awk '{ print $2 " deinstall" }' | dpkg --set-selections
Run Code Online (Sandbox Code Playgroud)