Вопрос почему `dpkg -l | grep package` показывает пакет после очистки


Чтобы удалить пакет (Ex: 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 делает другую работу, но не удаляет?


4
2018-03-28 14:53


происхождения




ответы:


Обратите внимание на первый две буквы выхода 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.

4
2018-03-28 15:36



С помощью sudo dpkg --clear-avail не работает для меня. - wsw
Ни для меня. (Ubuntu 16.04 LTS) - HeinrichStack


Похоже, что @souravc имеет только часть решения.

(Примечание: я делаю это на Debian, я думаю, он должен в основном применяться и к Ububtu.)

/ var / lib / dpkg / status и / var / lib / dpkg / available хранят информацию о пакетах, которые либо доступны для установки (что-то вроде apt), либо установлены, либо имеют только оставшиеся конфигурационные файлы. Если один из этих пакетов (скажем, bar) Depends: на упаковке foo, но foo сам уже не указан (это не должно происходить, если вы используете только официальные стабильные репозитории Debian / Ubuntu) dpkg -l tor упомянет их.

grep-status (не требуется root) - это аккуратная команда, которая может помочь вам определить, какой пакет является виновником:

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

теперь вы можете удалить или очистить пакет, используя:

# dpkg -r bar
# dpkg -P bar

0
2017-08-19 02:23