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

37

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

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

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

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

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
gertvdijk
источник
2
Посмотрите на результат apt-get install -s lubuntu-desktopпротив apt-get install -s lubuntu-desktop^. В последнем случае вы увидите нечто дополнительное, например: Примечание, выбрав «policykit-1-gnome» для задачи «lubuntu-desktop» / Примечание, выбрав «gnome-keyring» для задачи «lubuntu-desktop» / Note, выбрав 'libplist1' для задачи 'lubuntu-desktop' / Note, выбрав 'aspell-en' для задачи 'lubuntu-desktop' / Note, выбрав 'libsdl1.2debian' для задачи 'lubuntu-desktop' / Итак, в данном конкретном случае , Я не уверен, что "морковь" лучше.
Больше чтения здесь: askubuntu.com/a/249373/25656
1
#warning about tasksel: никогда не используйте его для удаления задач - см. отчет об ошибке на панели запуска
Guntbert

Ответы:

36

Короче говоря: Там является разница между 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будет искать задачу с именем "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. Зависимости "установлены автоматически".
Lasall
источник