Tasksel czy zwykły Apt?
W przeszłości zawsze tasksel
instalowałem tak zwane „zadania”. Wydaje się jednak, że zostało to zintegrowane z APT:
apt-cache dumpavail | grep ^Task
[...] snip
Task: lamp-server
[...]
i że mogę zainstalować takie „zadania”, dodając do niego znak daszka ( ^
):
sudo apt-get install lamp-server^
Czy to jest równoważne z następującymi?
sudo tasksel install lamp-server
A który jest preferowany?
Metapakiety
Dodatkowo, w jaki sposób pojawiają się tutaj metapakiety? Niektóre zadania wydają się nie być metapakietem, a inne to:
apt-cache show lamp-server
N: Unable to locate package lamp-server
apt-cache show kubuntu-desktop
Package: kubuntu-desktop
[...]
Task: kubuntu-desktop
Tak więc, używając ostatniego przykładu, jaka jest różnica między trzema możliwymi sposobami instalacji?
sudo apt-get install kubuntu-desktop
sudo apt-get install kubuntu-desktop^
sudo tasksel install kubuntu-desktop
apt
package-management
tasksel
metapackages
gertvdijk
źródło
źródło
apt-get install -s lubuntu-desktop
versusapt-get install -s lubuntu-desktop^
. W tym ostatnim zobaczysz coś dodatkowego: Uwaga, wybranie „policykit-1-gnome” dla zadania „lubuntu-desktop” / Uwaga, wybranie „gnome-keyring” dla zadania „lubuntu-desktop” / Uwaga, wybranie „libplist1” dla zadania „lubuntu-desktop” / Note, wybierając „aspell-en” dla zadania „lubuntu-desktop” / Note, wybierając „libsdl1.2debian” dla zadania „lubuntu-desktop” / Tak więc, w tym konkretnym przypadku , Nie jestem pewien, czy ten „marchewkowy” jest lepszy.Odpowiedzi:
W skrócie: Jest to różnica między tasksel i procesu instalacji apt-get zadań.
Patrząc na twój przykład:
Sposób apt-get
sudo apt-get install 'lamp-server^'
oceni, aby wykonać następujące czynności:Zainstaluj te pakiety w standardowy sposób:
Sposób zadania
sudo tasksel install lamp-server
szuka zadania o nazwie „lamp-server” w jednym ze swoich plików konfiguracyjnych pod/usr/share/tasksel/**/*.desc
:/usr/lib/tasksel/info/lamp-server.preinst
. Jeśli istnieje, uruchom ten skrypt.Zainstaluj pakiety za pomocą apt-get za pomocą następującego polecenia:
Szukać
/usr/lib/tasksel/info/lamp-server.postinst
. Jeśli istnieje, uruchom ten skrypt.Wniosek
tasksel ma większą moc przetwarzania i wybierania zadań. Może wykonywać dodatkowe skrypty przed / po instalacji / usunięciu zadań. I największa zaleta: możesz bardzo łatwo modyfikować zadania i tworzyć nowe. Nie można edytować oficjalnego pliku listy pakietów bez wad (ważny podpis).
Wróć do pierwszego pytania:
W twoim specjalnym przypadku oba polecenia są prawie równoważne (zakładając, że masz włączone oba
APT::Install-Recommends
iAPT::Get::AutomaticRemove
). Jedyną różnicą jest stan rozszerzonego pakietumysql-server
iapache2
zależności (ustawiony na „zainstalowany ręcznie” za pomocą zwykłego apt-get).A co z metapakietami?
Jeśli nie korzystasz z funkcji tasksel, takich jak wybieranie zadań (szczególnie pomocne podczas instalacji) i wykonywanie dodatkowych poleceń przed i po niektórych blokach zadań, zadanie jest bardzo podobne do metapakietu. Różnica polega na tym: Zadanie nie jest zarejestrowane jako pakiet w pamięci podręcznej APT.
Jeśli więc odinstalujesz jedną zależność od zadania, inne zadania nie zostaną oznaczone jako automatycznie zainstalowane, ponieważ zostały wyraźnie zainstalowane. W przypadku odinstalowania metapakietu zależności są usuwane,
autoremove
ponieważ stan ich pakietu rozszerzonego to „automatycznie zainstalowany” (jeśli nie jest zainstalowany ręcznie).Uwaga: Wszystkie rozproszone zadania w Debianie instalują metapakiet o nazwie
task-TASKNAME
.Podając swój przykład:
sudo apt-get install kubuntu-desktop
kubuntu-desktop
. Zależności są „automatycznie instalowane”.sudo apt-get install kubuntu-desktop^
kubuntu-desktop
. Wszystkie są oznaczone jako „zainstalowane ręcznie”.sudo tasksel install kubuntu-desktop
kubuntu-desktop
. Zależności są „automatycznie instalowane”.źródło