Для каждого установленного пакета я хотел бы знать, какие пакеты будут установлены, если я его деинсталлирую. Пример вывода мне нужен ( package: list of deps
):
abc: foo bar
bcd: baz abc
bdd: baz fuubar
Append
Если я проверю, что действительно будет удалено, если я удалю пакет, 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
дает мне шоу (которое я не считаю рекурсивными зависимостями):
$ 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
надежный способ получить список установленных пакетов для перебора?
apt-get --dry-run remove
выглядит в принципе правильно. Он может пропустить некоторые автоматически установленные пакеты, которые нужны только для автоматически установленных пакетов, которые нужны только для удаляемого вами пакета. Вот почему вы не считаете это подходящим ответом?Ответы:
Вы задали здесь несколько разных вопросов, надеюсь, я смогу помочь хотя бы один или два.
Чтобы
dpkg
вывести список всех установленных пакетов, используйте для вывода в список, разделенный полямиЧтобы просто получить список пакетов, без дополнительных полей, так что вы можете передать его в другом месте.
Например, если я хочу удалить старое ядро,
Самый простой способ пройти через все ненужные зависимости - с
debfoster
. Он работает в интерактивном режиме и просматривает то, что вы хотите, их зависимости и может удалить или перечислить то, что не является рекурсивной зависимостью.Чтобы вывести список всех рекурсивных зависимостей определенного пакета,
После того, как вы выполнили,
debfoster
вы можете проверить любых иждивенцев, которые есть у пакета,Действительно отличный способ перечислить «осиротевшие» пакеты, это с
deborphan
. Запуститеdeborphan
без параметров, и в нем будут перечислены все «потерянные» пакеты. «Сирота» - это пакет, от которого ничего не зависит, и вы явно его не установили.Я также люблю чистить любые «потерянные» пакеты после новой установки. После того, как я удалил определенные пакеты, вы можете получить что-нибудь пропущенное с
apt-get autoremove --purge
помощью,Наконец, иногда вы этого не делаете
--purge
и в итоге получаете пакет «остатки», более новые версииapt-get
могут автоматически удалять их. Чтобы удалить все «остатки» из запущенных неустановленных пакетов,Если у вас нет новой версии
apt-get
, вы всегда можете удалить их с помощью этих команд. Они выдают ошибку, если не существует «оставшихся» файлов, кажется, что autoclean может пропустить некоторые из них в любом случае.источник
(среди прочего) перечислит эти (во время выполнения) зависимости. Обычно этого достаточно, если только вы не подаете его на станок для дальнейшей обработки. Если вы хотите именно в том формате, который вы указали, вам, вероятно, придется написать скрипт.
источник
apt-get remove -s packagename
. Список всех установленных вами пакетов простоdpkg -l
.apt-get remove -s packagename
!Я думаю, вам нужно продолжить и создать цикл для того же:
Конечно удалите заголовки.
источник
apt-cache depends --recurse libtext