Как `apt` проверяет удаление зависимостей при удалении/очистке? AkA Помогите мне понять поведение `apt`

Это ответ -на вопрос @Kusalananda в комментарии, связанном с вашим вопросом выше.

Предположим, у вас есть два пользователя, user1и user2. Предположим, что user1имеет домашнюю директорию /home/user1. Теперь предположим, что в домашнем каталоге user1вы создаете каталог, принадлежащий user2, скажем, /home/user1/sources, может ли user2получить доступ к этому каталогу?

Чтобы user2мог получить доступ к /home/user1/sources, user2необходимо иметь разрешениеx(на обход )для каждого каталога от корня до каталога sourcesвключительно :

. ]
$ ls -ld /
dr-xr-xr-x 31 root root 4096 Feb 28 11:37 /
         ^ Check (this will almost always be OK)

$ ls -ld /home
drwxr-xr-x 4 root root 4096 Feb 28  11:38 /home
         ^ Check (this will almost always be OK)

$ ls -ld /home/user1
drwx------ 9 user1 group1 4096 Mar 21 00:36 /home/user1
      ^  ^ In this case, no, user2 cannot traverse here

$ ls -ld /home/user1/sources
drwxr-xr-x 9 user2 group2 4096 Mar 21 00:36 /home/user1/sources
   ^ Check

В этом примере, поскольку user2не может перейти в /home/user1, user2не может получить доступ к /home/user1/sources(, даже если user2владеет этим каталогом ).

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

Вы можете рассмотреть возможность размещения каталога sourcesза пределами домашнего каталога пользователя.

0
09.03.2020, 00:10
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; он также имеет текстовый -полноэкранный пользовательский интерфейс -, который я считаю очень полезным.

1
28.04.2021, 23:21

Теги

Похожие вопросы