Я возился со звуком на Linux и попытался установить пакет jackd
. Вот соответствующий отрывок из того, что apt
вернулось:
$ sudo apt install jackd
The following additional packages will be installed:
jackd2 jackd2-firewire libconfig++9v5 libffado2 libglibmm-2.4-1v5 libsigc++-2.0-0v5 libxml++2.6-2v5 python-dbus python-gi qjackctl
Итак, результат чистки:
$ sudo apt purge jackd
The following packages will be REMOVED:
jackd* qjackctl*
Последующая установка:
$ sudo apt install jackd
The following NEW packages will be installed:
jackd
----------РЕДАКТИРОВАТЬ----------
А потом :
sudo apt autoremove
The following packages will be REMOVED:
libfwup1
(это пакет, который уже упоминался до установки jackd)
----------КОНЕЦ РЕДАКТИРОВАНИЯ----------
Из этого эксперимента, apt
похоже, не удаляет зависимости. Однако очистка удалила еще один пакет ( qjackctl
) в дополнение к тому, который я специально упомянул ( jackd
).
qjackctl
это пакет для соответствующего интерфейса GUI демона jackd
, и я понимаю, что он не понадобится, если у меня больше нет jackd
. Но, логично, что установлены и другие зависимости, поэтому:
- почему их не удалили?
- почему было
qjackctl
удалено? - почему
qjackctl
не было извлечено во второй установке?
Тольконитьнайдено, что относится к рассматриваемому пакету.
Большое спасибо за вашу помощь
PS: Я только что закончил установку раздела Arch Linux (который должен заменить мой раздел Ubuntu в будущем). Я не очень хорошо с ним знаком pacman
сейчас. Лучше ли управлять этим поведением с помощью этого менеджера пакетов? (точнее: недемпотентные операции и предсказуемое поведение)
решение1
Дополнительные пакеты были установлены, поскольку они (возможно, косвенные) являются зависимостями jackd
: jackd2
напрямую, остальные через jackd2
. qjackctl
были установлены, поскольку jackd2
рекомендует это, а рекомендуемые пакеты устанавливаются по умолчанию.
Подробное дерево зависимостей установленных пакетов выглядит следующим образом:
jackd
└─ jackd2
├─ python-dbus
│ └─ python-gi (recommended)
├─ jackd2-firewire (recommended)
│ └─ libffado2
│ ├─ libconfig++9v5
│ ├─ libglibmm-2.4-1v5
│ │ └─ libsigc++-2.0-0v5
│ └─ libxml++2.6-2v5
└─ qjackctl (recommended)
Две дополнительные зависимости не влияют на этап установки, но становятся значимыми позже: jackd2-firewire
зависит от jackd2
и qjackctl
зависит от jackd
.
Последняя зависимость означает, что когда jackd2
был удален, qjackctl
должен был быть удален также (нельзя установить пакет без его строгих зависимостей). Другие пакеты не зависят от jackd
, поэтому они не были удалены; они были бы удалены apt autoremove
, за исключением того, что поскольку jackd2-firewire
зависит от jackd2
, ни один из пакетов не становится ненужным... ( apt
не помниткакой конкретный пакетвызвал установку другого пакета; autoremove
проверяет только автоматически установленные пакеты, чтобы узнать, не зависит ли от них больше ничего. В качестве дополнительного поворота, autoremove
считает рекомендации достаточно важными, чтобы сохранить пакет установленным.)
Во второй раз, когда вы установили jackd
, apt
посмотрели на его зависимости,то есть jackd2
или jackd1
, заметил, что jackd2
он уже установлен, и остановился на этом; следовательно, он не заметил, что qjackctl
он «отсутствует», поскольку он рекомендован jackd2
, а не jackd
им самим.
aptitude
удалит ненужные пакеты, как только будут удалены их зависимые пакеты, без отдельного autoremove
шага; вам может показаться, что это проще в использовании. Команды те же, что и apt
's; также имеет текстовый полноэкранный пользовательский интерфейс, который я нахожу очень полезным.