Чи варто використовувати завдання, завдання в APT або встановлювати звичайні метапакети?


37

Завдання чи звичайний 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

2
Подивіться на результат apt-get install -s lubuntu-desktopпорівняно apt-get install -s lubuntu-desktop^. В останньому ви побачите щось додаткове на кшталт цього: Зауважте, виберіть "policykit-1-gnome" для завдання "lubuntu-desktop" / Note, виберіть "gnome-keyring" для завдання "lubuntu-desktop" / Note, виберіть 'libplist1' для завдання 'Lubuntu-робочий стіл' / Note, вибравши пункт 'ASpell-ан' для завдання 'Lubuntu-настільне' / Note, вибравши 'libsdl1.2debian' для завдання 'Lubuntu-робочий стіл' / Отже, в даному конкретному випадку , Я не впевнений, що "морква" є кращою.

Більше читання тут: askubuntu.com/a/249373/25656

1
# попередження про tasksel: ніколи не використовуйте його для видалення завдань - дивіться звіт про помилки на панелі запуску
guntbert

Відповіді:


36

Коротше кажучи: Там є різниця між tasksel і APT-GET процесом завдань установки.

Дивлячись на ваш приклад:

Влучний спосіб отримати

sudo apt-get install 'lamp-server^' Ви оцінюєте:

  1. Шукайте в кеші (файли зі списком пакунків) для всіх полів "Завдання:" та отримайте все за допомогою "лампи-сервера".
  2. Встановіть ці пакети стандартним способом:

    sudo apt-get install package1 package2...
    

Спосіб завдання

sudo tasksel install lamp-serverшукатиме завдання під назвою "лампа-сервер" в одному зі своїх файлів конфігурації під /usr/share/tasksel/**/*.desc:

  1. Шукайте у файлах конфігурації поле "Завдання:" з назвою "лампа-сервер".
  2. Перевірте, чи є всі передумови (поле "Ключ:") і запам'ятайте їх, якщо вони не встановлені.
  3. Виберіть спосіб вибору пакунків (поле "Пакети:"). Якщо це ist "list", просто встановіть наступні пакунки за назвою.
  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. Залежності "встановлено автоматично".
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.