为什么 `dpkg -l | grep package` 在被清除后仍显示包

为什么 `dpkg -l | grep package` 在被清除后仍显示包

要卸载从存储库安装的软件包(例如:tor),应该使用

sudo apt-get remove tor

我这样做了,但dpkg -l | grep tor包装上出现了问题。下次我尝试

sudo apt-get purge tor

但当我检查时dpkg -l | grep tor,我发现

reza@reza-N43JM:/$ dpkg -l tor    
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name           Version        Description
+++-==============-==============-============================================
un  tor            <none>         (no description available)

我认为当我卸载任何软件包时,列表中都不应该出现任何内容dpkg -l。这是真的吗?或者apt-get remove其他软件包可以正常purge工作但无法卸载?

答案1

注意第一个两个字母输出结果dpkg -l tor显示un

u: Unknown (an unknown state)
n: Not- The package is not currently installed

有时dpkg会保留此类条目以供参考。要删除这些有问题的条目,请在终端中运行,

sudo dpkg --clear-avail

man dpkg

--clear-avail
          Erase  the  existing  information  about   what   packages   are
          available.

答案2

看来@souravc 只给出了部分解决方案。

(注意:我在 Debian 上执行此操作,我猜它也应该主要适用于 Ububtu。)

/var/lib/dpkg/status 和 /var/lib/dpkg/available 保存有关软件包的信息,这些软件包要么可供安装(类似于 apt 所做的),要么已安装,要么只是有剩余的配置文件。如果软件包上的其中一个软件包(例如bar)本身尚未列出(只要您仅使用官方稳定的 Debian/Ubuntu 存储库,就不会发生这种情况),则会提及它们。Depends:foofoodpkg -l tor

grep-status(无需 root 权限)是一个简洁的命令,可以帮助您找到哪个包是罪魁祸首:

$ grep-status foo
Package: bar
Depends: foo
...
$ dpkg -s bar
$ dpkg -L bar
...

现在您可以使用以下命令卸载或清除该包:

# dpkg -r bar
# dpkg -P bar

相关内容