在安装包之前重置 dselect 选择

Bru*_*uno 6 ubuntu debian apt package-management

我正在使用 浏览软件包列表dselect,但Return错误地按了两次,从而使其确认并退出该[S]elect选项。

当我转到该[I]nstall选项时,它现在建议安装一些我不想要的新软件包(这与我最初寻找的内容无关)。

由于我还没有进行安装本身,有没有一种方法可以将选择重置为我选择新软件包之前的状态,而无需逐一查看列表并按-每个软件包?(它是通过dselect还是通过其他相关命令完成都没有关系。)

编辑:(添加一个例子)

我已经在另一台dselect安装了的机器上试过了。让我们假设gnugo没有安装包(这只是一个例子)。

  • 启动delect并选择[S]elect获取列表。
  • gnugo在此列表中搜索(使用/,如果您不熟悉dselect)。
  • 用 选择它+。
  • 按Return以验证建议并Return再次验证返回主菜单(我犯的错误)。
  • 去[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不受影响)。

Bru*_*uno 3

事实证明,它dpkg --get-selections并没有列出标记为安装和尚未安装的内容,而是dpkg -l '*'列出了这些内容,并以in.

因此,以下行将重置这些选择:

dpkg -l '*' | grep '^in ' | awk '{ print $2 " deinstall" }' | dpkg --set-selections
Run Code Online (Sandbox Code Playgroud)