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

Tasksel или обычный Apt?

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

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

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

[ 111]

Это эквивалентно следующему?

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
37
задан 9 February 2013 в 17:01

1 ответ

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

Рассматривая ваш пример:

Способ apt-get

sudo apt-get install 'lamp-server^' оценивает выполнение следующих действий:

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

    sudo apt-get install package1 package2...
    

Способ с помощью tasksel

sudo tasksel install lamp-server будет искать задачу под названием «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. Зависимости «устанавливаются автоматически».
0
ответ дан 9 February 2013 в 17:01

Другие вопросы по тегам:

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