Czy powinienem używać tasksel, zadań w APT czy instalować regularne metapakiety?

37

Tasksel czy zwykły Apt?

W przeszłości zawsze taskselinstalował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
gertvdijk
źródło
2
Spójrz na wynik apt-get install -s lubuntu-desktopversus apt-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.
Więcej informacji tutaj: askubuntu.com/a/249373/25656
1
# ostrzeżenie o tasksel: nigdy nie używaj go do usuwania zadań - zobacz raport o błędzie na starterze
guntbert

Odpowiedzi:

36

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:

  1. Przeszukaj pamięć podręczną (pliki listy pakietów) dla wszystkich pól „Zadanie:” i uzyskaj wszystko z „lamp-server”.
  2. Zainstaluj te pakiety w standardowy sposób:

    sudo apt-get install package1 package2...
    

Sposób zadania

sudo tasksel install lamp-serverszuka zadania o nazwie „lamp-server” w jednym ze swoich plików konfiguracyjnych pod /usr/share/tasksel/**/*.desc:

  1. Wyszukaj w plikach konfiguracyjnych pole „Zadanie:” o nazwie „serwer-lampa”.
  2. Sprawdź, czy wszystkie wymagania wstępne są dostępne (pole „Klucz:”) i zapamiętaj je, jeśli nie są zainstalowane.
  3. Wybierz metodę wyboru pakietów (pole „Pakiety:”). Jeśli jest to „lista”, po prostu zainstaluj następujące pakiety według nazwy.
  4. Przeczytaj wszystkie poniższe nazwy pakietów i przekaż je wcześniej wybranej metodzie, aby wygenerować nazwy pakietów.
  5. Szukać /usr/lib/tasksel/info/lamp-server.preinst. Jeśli istnieje, uruchom ten skrypt.
  6. Zainstaluj pakiety za pomocą apt-get za pomocą następującego polecenia:

    debconf-apt-progress -- apt-get -q -y -o APT::Install-Recommends=true -o APT::Get::AutomaticRemove=true install package1 package2 ...
    
  7. 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-Recommendsi APT::Get::AutomaticRemove). Jedyną różnicą jest stan rozszerzonego pakietu mysql-serveri apache2zależ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, autoremoveponieważ 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:

  1. sudo apt-get install kubuntu-desktop
    • Zainstaluje metapakiet kubuntu-desktop. Zależności są „automatycznie instalowane”.
  2. sudo apt-get install kubuntu-desktop^
    • Wybierze wszystkie pakiety oznaczone zadaniem „kubuntu-desktop”. To są wszystkie zależności metapakietu kubuntu-desktop. Wszystkie są oznaczone jako „zainstalowane ręcznie”.
  3. sudo tasksel install kubuntu-desktop
    • Upewnij się, że X jest zainstalowany przed instalacją pakietów zadań.
    • Zainstaluje metapakiet kubuntu-desktop. Zależności są „automatycznie instalowane”.
Lasall
źródło