В прошлом я всегда использовал tasksel
для установки так называемых «задач». Кажется, однако, что это было интегрировано в APT:
apt-cache dumpavail | grep ^Task
[...] snip
Task: lamp-server
[...]
и что я могу установить такие «задачи», добавив к нему каретку (^
), например:
Это эквивалентно следующему?
sudo tasksel install lamp-server
И что предпочтительнее?
Кроме того, как здесь вступают в игру метапакеты? Некоторые задачи не являются метапакетом, в то время как другие:
apt-cache show lamp-server
N: Unable to locate package lamp-server
apt-cache show kubuntu-desktop
Package: kubuntu-desktop
[...]
Task: kubuntu-desktop
Итак, используя последний пример, в чем разница между следующими тремя возможными способами установки?
sudo apt-get install kubuntu-desktop
sudo apt-get install kubuntu-desktop^
sudo tasksel install kubuntu-desktop
Вкратце: есть разница между tasksel и процессом установки задач apt-get.
Рассматривая ваш пример:
sudo apt-get install 'lamp-server^'
оценивает выполнение следующих действий:
Устанавливайте эти пакеты стандартным способом:
sudo apt-get install package1 package2...
sudo tasksel install lamp-server
будет искать задачу под названием «lamp-server» «в одном из его файлов конфигурации в /usr/share/tasksel/**/*.desc
:
/usr/lib/tasksel/info/lamp-server.preinst
. Если он существует, выполните этот скрипт. Установите пакеты с помощью apt-get с помощью следующей команды:
debconf-apt-progress -- apt-get -q -y -o APT::Install-Recommends=true -o APT::Get::AutomaticRemove=true install package1 package2 ...
Найдите /usr/lib/tasksel/info/lamp-server.postinst
. Если он существует, выполните этот скрипт.
tasksel является более мощным средством обработки и выбора задач. Может выполнять дополнительные скрипты до / после установки / удаления задач. И самое большое преимущество: вы можете легко изменять задачи и создавать новые. Невозможно редактировать официальный файл списка пакетов без недостатков (действительная подпись).
Возвращаясь к вашему первому вопросу:
В вашем особом случае обе команды почти эквивалентны (предполагается, что вы включили APT::Install-Recommends
и APT::Get::AutomaticRemove
). Единственное отличие заключается в расширенном состоянии пакета зависимостей mysql-server
и apache2
(установлено как «установленное вручную» с помощью простого apt-get).
Если вы не используете функции tasksel, такие как выбор задач (особенно полезно при установке) и выполнение дополнительных команд до и после некоторых блоков задач, тогда задача очень похожа на метапакет. Разница в том, что задача не зарегистрирована как пакет в кэше APT.
Таким образом, если вы удаляете одну зависимость от задачи, другие задачи не помечаются как автоматически установленные, поскольку они были установлены явно. Если вы удаляете метапакет, зависимости удаляются с помощью autoremove
, потому что их расширенное состояние пакета «автоматически установлено» (если не установлено вручную).
Примечание: Все распределенные задачи в Debian устанавливают метапакет с именем task-TASKNAME
.
Приведу пример:
sudo apt-get install kubuntu-desktop
kubuntu-desktop
. Зависимости «устанавливаются автоматически». sudo apt-get install kubuntu-desktop^
kubuntu-desktop
. Все они помечены как «установленные вручную». sudo tasksel install kubuntu-desktop
kubuntu-desktop
. Зависимости «устанавливаются автоматически».