web-dev-qa-db-ja.com

なぜ `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は別の作業を行いますが、アンインストールしませんか?

最初の 2文字unを示すdpkg -l torの出力に注意してください

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.
4
souravc

@souravcにはソリューションの一部しかないようです。

(注:私はこれをDebianで行っています。ほとんどの場合、Ububtuにも適用されるはずです。)

/ var/lib/dpkg/statusおよび/ var/lib/dpkg/availableは、インストール(aptが行うことの一種)、インストール済み、または単に設定ファイルが残っているパッケージに関する情報を保持します。これらのパッケージのいずれか(たとえば、barDepends:がパッケージfooであるが、foo自体が既にリストされていない場合(公式のみを使用している限り、これは起こりません)安定したDebian/Ubuntuリポジトリ)dpkg -l torがそれらについて言及します。

grep-status(ルートは不要)は、どのパッケージが原因であるかを見つけるのに役立つきちんとしたコマンドです。

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

以下を使用して、パッケージをアンインストールまたはパージできます。

# dpkg -r bar
# dpkg -P bar
0
Alois Mahdal