Если вас не устраивает режим --check, можно решить проблему с помощью --list-tasks. Следуйте рекомендуемой « организации содержимого » и ведите отдельные инструкции для групп узлов, которым требуются одни и те же задачи.
$ apt-cache show xfce4 | grep ^Depends
Depends: xfwm4 (>= 4.12.0), xfconf (>= 4.12.0), xfce4-settings (>= 4.12.0), xfce4-panel (>= 4.12.0), xfdesktop4 (>= 4.12.0), thunar (>= 1.6.6), gtk2-engines-xfce (>= 3.2.0), xfce4-session (>= 4.12.0), xfce4-appfinder (>= 4.12.0), xfce4-mixer (>= 4.10.0), orage (>= 4.10.0), libxfce4ui-utils (>= 4.12)
Как вы видите, пакет xfce4 зависит от gtk2-engines-xfce, поэтому если вы удалите gtk2-engines-xfce, apt также удалит xfce4. Это похоже на другие упомянутые вами пакеты, так openshot зависит от gtk2-engines-pixbuf, а gtk2-engines-pixbuf зависит от gtk2-engines-murrine
Я также хотел бы обратить внимание на комментарий Хенрика;
apt-get может принимать regex в качестве аргумента вместо имен пакетов, но вы должны позаботиться о глобализации файлов, которая происходит до того, как shell фактически вызовет команду. Посмотрите на пример:
$ touch gtk2-engine-test
$ sudo apt-get remove gtk2-engine*
[sudo] password for boban:
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package gtk2-engine-test
Когда вы хотите передать regex в apt, вы должны экранировать символы поиска файлов, такие как *,?,[,] и так далее, поэтому правильной командой будет:
sudo apt-get remove gtk2-engine\*
Как уже объяснил Бобан П. , если вы запрашиваете удаление или очистку пакета, это также приведет к удалению пакетов, которые зависят от него.
Вы можете использовать aptitude why
, чтобы узнать, какие пакеты, установленные вручную, зависят от пакета, то есть почему этот пакет установлен. Аргументом является одно имя пакета package, а не шаблон глобуса или регулярное выражение. Вы можете объединить его с [поиском aptitude] (( http://aptitude.alioth.debian.org/doc/en/ch02s04s05.html ) для одновременного запроса нескольких пакетов.
aptitude -v why $(aptitude -F %p search '~i ~ngtk2-engines.*')
Остерегайтесь этого. вывод может быть очень длинным. Без -v
aptitude перечисляет только одну причину установки каждого пакета.
Кроме того, обратите внимание, что аргумент apt-get
и apt-cache
- это регулярное выражение, а не шаблон подстановки оболочки. Если аргумент не содержит специальных символов, он используется буквально, но если аргумент действительно содержит специальные символы () [] .? * +
, то регулярное выражение должно соответствовать только части имени пакета. Итак, gtk2 -otors - *
соответствует пакетам, которые содержат gtk2-engine
в качестве подстроки² ; вот почему gtk2-engine
был указан как соответствующий. Вы, вероятно, хотели написать вместо этого gtk2-engine -. *
, но это также могло бы перехватить пакеты, чьи имена не указаны art с gtk2-двигателями
³. Чтобы перечислить пакеты, которые начинаются с gtk2-engine-
, используйте ^ gtk2 -otors-
.
Также возьмите в привычку заключать в кавычки специальные символы в командной строке оболочки - если существовал файл, соответствующий шаблону glob gtk2-engine - *
в текущем каталоге (например, .deb
файл, который вы только что скачали), тогда шаблон был бы заменен соответствующими файлами.
¹ Или шаблон поиска aptitude в некоторых версиях, но не в Debian jessie.
² Потому что gtk2-engine
заканчивается нулевым или более вхождением -
(а именно нулем).
³ Из них в Debian на данный момент нет.