Короче говоря: Там является разница между tasksel и APT-GET процессом задач установки.
Глядя на ваш пример:
Удачный способ
sudo apt-get install 'lamp-server^'
будет оценивать, чтобы сделать следующее:
- Найдите в кеше (файлах списка пакетов) все поля «Task:» и получите все с помощью «lamp-server».
Установите эти пакеты стандартным способом:
sudo apt-get install package1 package2...
Тасксел путь
sudo tasksel install lamp-server
будет искать задачу с именем "lamp-server" в одном из своих файлов конфигурации в /usr/share/tasksel/**/*.desc
:
- Найдите в файлах конфигурации поле «Task:» с именем «lamp-server».
- Проверьте наличие всех предварительных условий (поле «Ключ:») и запомните их, если они не установлены.
- Выберите метод выбора пакетов (поле «Пакеты:»). Если это «список», просто установите следующие пакеты по имени.
- Прочитайте все следующие имена пакетов и передайте их ранее выбранному методу для генерации имен пакетов.
- Ищите
/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». Это все зависимости метапакета
kubuntu-desktop
. Все они помечены как «установленные вручную».
sudo tasksel install kubuntu-desktop
- Перед установкой пакетов задачи убедитесь, что X установлен.
- Установит метапакет
kubuntu-desktop
. Зависимости "установлены автоматически".
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' / Итак, в данном конкретном случае , Я не уверен, что "морковь" лучше.