Должен ли я использовать tasksel, задачи в APT или устанавливать обычные метапакеты?

Тасксел или простая апт?

В прошлом я всегда использовал tasksel установить так называемые "задачи". Кажется, однако, что это было интегрировано в APT:

apt-cache dumpavail | grep ^Task
[...] snip
Task: lamp-server
[...]

и что я могу установить такие "задачи", добавив каретку (^) к нему, вот так:

sudo apt-get install 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

1 ответ

Решение

Вкратце: существует разница между tasksel и apt-get процессом установки задач.

Глядя на ваш пример:

Удачный способ

sudo apt-get install 'lamp-server^' будет оценивать, чтобы сделать следующее:

  1. Найдите в кеше (файлах списка пакетов) все поля "Task:" и получите все с помощью "lamp-server".
  2. Установите эти пакеты стандартным способом:

    sudo apt-get install package1 package2...
    

Тасксел путь

sudo tasksel install lamp-server будет искать задачу под названием "Лампа-сервер" в одном из своих файлов конфигурации в /usr/share/tasksel/**/*.desc:

  1. Найдите в файлах конфигурации поле "Task:" с именем "lamp-server".
  2. Проверьте наличие всех предварительных условий (поле "Ключ:") и запомните их, если они не установлены.
  3. Выберите метод выбора пакетов (поле "Пакеты:"). Если это "список", просто установите следующие пакеты по имени.
  4. Прочитайте все следующие имена пакетов и передайте их ранее выбранному методу для генерации имен пакетов.
  5. Ищу /usr/lib/tasksel/info/lamp-server.preinst, Если он существует, выполните этот скрипт.
  6. Установите пакеты с помощью apt-get, используя следующую команду:

    debconf-apt-progress -- apt-get -q -y -o APT::Install-Recommends=true -o APT::Get::AutomaticRemove=true install package1 package2 ...
    
  7. Ищу /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,

Приведу свой пример:

  1. sudo apt-get install kubuntu-desktop
    • Установит метапакет kubuntu-desktop, Зависимости "установлены автоматически".
  2. sudo apt-get install kubuntu-desktop^
    • Выберет все пакеты с тегом "kubuntu-desktop". Это все зависимости метапакета kubuntu-desktop, Все они помечены как "установленные вручную".
  3. sudo tasksel install kubuntu-desktop
    • Перед установкой пакетов задачи убедитесь, что X установлен.
    • Установит метапакет kubuntu-desktop, Зависимости "установлены автоматически".
Другие вопросы по тегам