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