Список (рекурсивный) зависимостей установленных пакетов в APT

Для каждого пакета, который я установил, я хотел бы знать, какие пакеты будут установлены, если я его удалю. Примером вывода, который мне нужен, является ( package: list of deps ):

 abc: foo bar bcd: baz abc bdd: baz fuubar 

присоединять

  • Где настройка, которая устанавливает экспериментальное репо для более низкого приоритета?
  • Можете ли вы построить apt-get из источника?
  • Как определить, когда apt-get update не удается из-за отсутствия сетевого подключения?
  • Как установить git-svn с учетом этого странного статуса apt-cache?
  • Список доступных обновлений, но не устанавливайте их
  • apt-get install дает 404 не найден, но работает URL
  • Если я проверю, что действительно будет удалено, если я удалю пакет ppp используя apt-get :

     $ echo $(apt-get --dry-run remove ppp | grep '^Remv ' | cut -d' ' -f2) gnome-ppp mint-meta-xfce network-manager-pptp-gnome network-manager-pptp wvdial pppoeconf pppoe pptp-linux pppconfig ppp 

    Я вижу, что он отличается от того, что дает мне apt-cache show (что, я думаю, не содержит рекурсивных зависимостей):

     $ apt-cache show ppp | grep '^Breaks: ' Breaks: network-manager (<= 0.8.0.999-1), network-manager-pptp (<= 0.8.0.999-1), pppdcapiplugin (<= 1:3.9.20060704+dfsg.1-1) 

    Добавить 2

    Является ли dpkg --get-selections | cut -f1 dpkg --get-selections | cut -f1 – надежный способ получить список установленных пакетов для перебора?

  • Установите файл .deb из git repo на apt-get install
  • Чтение списков пакетов ... Ошибка!
  • Что делает `/ usr / lib / apt / methods / copy`?
  • Почему установка 32-битного пакета на 64-битной системе предупреждает об удалении критических 64-битных пакетов?
  • Какая информация мне нужна для решения проблемы зависимости APT?
  • «Невозможно найти ожидаемую запись« main / binary-i386 / Packages »в файле Release»
  • 3 Solutions collect form web for “Список (рекурсивный) зависимостей установленных пакетов в APT”

    Вы задали здесь несколько разных вопросов, я надеюсь, что смогу хотя бы помочь одному или двум.

    Чтобы просмотреть все установленные пакеты, используйте dpkg для вывода в списке, разделенном полями.

     dpkg -l 

    Чтобы просто получить список пакетов, без дополнительных полей, чтобы вы могли проложить его в другом месте.

     dpkg -l | awk '{print $2 }' # Pipe to grep after the awk, or glob from dpkg 

    Например, если я хочу удалить старое ядро,

     apt-get purge `dpkg -l linux* | awk '{print $2}' | grep 3.0.0-12` 

    Самый простой способ пройти через все ненужные зависимости – это debfoster . Он работает в интерактивном режиме и проходит через то, что вы хотите, их зависимости и можете удалить или перечислить то, что не является рекурсивной зависимостью.

    Чтобы перечислить все рекурсивные зависимости конкретного пакета,

     debfoster -d $PACKAGE ## PACKAGE is the specific package. 

    После того, как вы выполнили debfoster вы можете проверить любые иждивенцы, которые пакет также имеет,

     debfoster -e $PACKAGE ## PACKAGE is the specific package. 

    Действительно отличный способ перечислить «потерянные» пакеты, с deborphan . Запустите deborphan без параметров, и он перечислит все «потерянные» пакеты. «Сирота» – это пакет, от которого ничего не зависит, и вы явно не установили его.

    Мне также нравится чистить любые «потерянные» пакеты после новой установки. После того, как я apt-get autoremove --purge определенные пакеты, вы можете получить что-нибудь пропущенное с помощью apt-get autoremove --purge ,

     apt-get purge `deborphan` 

    Наконец, иногда вы не делаете – --purge и заканчивать «остатками» пакета, более новые версии apt-get могут автоматически удалять их. Чтобы удалить все «остатки» из удаленных пакетов,

     apt-get autoclean 

    Если у вас нет новой версии apt-get , вы всегда можете удалить их с помощью этих команд. Они ошибочны, если не существует файлов «оставленных», кажется, что автокрест может иногда пропустить некоторое время.

     dpkg --list |grep "^rc" | cut -d " " -f 3 | xargs dpkg --purge 
     apt-cache show pkgname1 pkgname2... 

    будут (среди прочего) перечислять эти (runtime) зависимости. Обычно это достаточно, если вы не кормите его машиной для дальнейшей обработки. Если вы хотите в точности в указанном вами формате, вам, вероятно, придется написать сценарий.

    Я думаю, вам нужно продолжить и создать цикл для одной вещи:

     apt-cache depends libtext-wrapi18n-perl |xargs apt-cache depends 

    Конечно, удалите заголовки.

    Linux и Unix - лучшая ОС в мире.