Soll ich Tasksel oder Tasks in APT verwenden oder regelmäßige Metapakete installieren?

37

Tasksel oder einfaches Apt?

In der Vergangenheit habe ich immer taskselsogenannte "Tasks" installiert. Es scheint jedoch, dass dies in APT integriert wurde:

apt-cache dumpavail | grep ^Task
[...] snip
Task: lamp-server
[...]

und dass ich solche "Tasks" installieren kann, indem ich ein Caret ( ^) anhänge :

sudo apt-get install lamp-server^

Entspricht dies dem Folgenden?

sudo tasksel install lamp-server

Und was ist bevorzugt?

Metapakete

Wie kommen hier zusätzlich Metapakete ins Spiel? Einige Aufgaben scheinen kein Metapaket zu sein, während andere:

apt-cache show lamp-server
N: Unable to locate package lamp-server

apt-cache show kubuntu-desktop
Package: kubuntu-desktop
[...]
Task: kubuntu-desktop

Worin besteht der Unterschied zwischen den folgenden drei möglichen Installationsmethoden, wenn Sie das letzte Beispiel verwenden?

  • sudo apt-get install kubuntu-desktop
  • sudo apt-get install kubuntu-desktop^
  • sudo tasksel install kubuntu-desktop
gertvdijk
quelle
2
Schauen Sie sich die Ausgabe von apt-get install -s lubuntu-desktopversus an apt-get install -s lubuntu-desktop^. In letzterem sehen Sie etwas Ähnliches: Hinweis: Wählen Sie 'policykit-1-gnome' für die Aufgabe 'lubuntu-desktop' / Hinweis: Wählen Sie 'gnome-keyring' für die Aufgabe 'lubuntu-desktop' / Hinweis: Wählen Sie 'libplist1' für Aufgabe 'Lubuntu-Desktop' / Note, die Auswahl 'aspell-en' für Aufgabe 'Lubuntu-Desktop' / Note, die Auswahl 'libsdl1.2debian' für Aufgabe 'Lubuntu-Desktop' / So, in diesem speziellen Fall , Ich bin mir nicht sicher, ob die "Karotte" besser ist.
1
# Warnung vor Aufgaben : Niemals zum Entfernen von Aufgaben verwenden - siehe Fehlerbericht auf dem Launchpad
guntbert

Antworten:

36

Kurz gesagt: Es gibt einen Unterschied zwischen dem Tasksel- und dem Apt-Get-Installationsprozess von Tasks.

Schauen Sie sich Ihr Beispiel an:

Der passende Weg

sudo apt-get install 'lamp-server^' wird auswerten, um Folgendes zu tun:

  1. Durchsuchen Sie den Cache (Paketlistendateien) nach allen "Task:" - Feldern und holen Sie sich alle mit "lamp-server".
  2. Installieren Sie diese Pakete wie folgt:

    sudo apt-get install package1 package2...
    

Der aufgabenreiche Weg

sudo tasksel install lamp-serversucht nach einer Aufgabe namens "lamp-server" in einer der Konfigurationsdateien unter /usr/share/tasksel/**/*.desc:

  1. Durchsuchen Sie die Konfigurationsdateien nach einem Feld "Task:" mit dem Namen "Lampenserver".
  2. Überprüfen Sie, ob alle Voraussetzungen vorhanden sind (Feld "Schlüssel:") und merken Sie sich diese, falls sie nicht installiert sind.
  3. Methode zur Auswahl von Paketen auswählen (Feld "Pakete:"). Wenn dies eine "Liste" ist, installieren Sie einfach die folgenden Pakete nach Namen.
  4. Lesen Sie alle folgenden Paketnamen und übergeben Sie sie an die zuvor ausgewählte Methode, um Paketnamen zu generieren.
  5. Suchen Sie nach /usr/lib/tasksel/info/lamp-server.preinst. Wenn es existiert, führe dieses Skript aus.
  6. Installieren Sie Pakete mit apt-get mit folgendem Befehl:

    debconf-apt-progress -- apt-get -q -y -o APT::Install-Recommends=true -o APT::Get::AutomaticRemove=true install package1 package2 ...
    
  7. Suchen Sie nach /usr/lib/tasksel/info/lamp-server.postinst. Wenn es existiert, führe dieses Skript aus.

Fazit

tasksel ist leistungsfähiger beim Verarbeiten und Auswählen von Aufgaben. Es kann zusätzliche Skripte vor / nach der Installation / Deinstallation von Aufgaben ausführen. Und der größte Vorteil: Sie können ganz einfach Aufgaben ändern und neue erstellen. Es ist nicht möglich, eine offizielle Paketlistendatei ohne Nachteile zu bearbeiten (gültige Signatur).

Zurück zu Ihrer ersten Frage:
In Ihrem speziellen Fall sind beide Befehle fast gleich (vorausgesetzt, Sie haben beide APT::Install-Recommendsund aktiviert APT::Get::AutomaticRemove). Der einzige Unterschied ist der erweiterte Paketstatus mysql-serverund die apache2Abhängigkeiten (mit einfachem apt-get auf "manuell installiert" gesetzt).

Und was ist mit Metapaketen?

Wenn Sie die Funktionen von tasksel wie das Auswählen von Aufgaben (besonders hilfreich bei der Installation) und das Ausführen zusätzlicher Befehle vor und nach einigen Aufgabenblöcken nicht nutzen, ähnelt eine Aufgabe einem Metapaket. Der Unterschied ist: Eine Aufgabe ist nicht als Paket im APT-Cache registriert.
Wenn Sie also eine Taskabhängigkeit deinstallieren, werden andere Taskabhängigkeiten nicht als automatisch installiert markiert, da sie explizit installiert wurden. Wenn Sie ein Metapaket deinstallieren, werden die Abhängigkeiten mit entfernt, autoremoveda ihr erweiterter Paketstatus "automatisch installiert" ist (falls nicht manuell installiert).
Hinweis: Alle verteilten Aufgaben in Debian installieren ein Metapaket mit dem Namen task-TASKNAME.

Geben Sie Ihr Beispiel:

  1. sudo apt-get install kubuntu-desktop
    • Installiert das Metapaket kubuntu-desktop. Abhängigkeiten werden "automatisch installiert".
  2. sudo apt-get install kubuntu-desktop^
    • Wählt alle mit der Aufgabe "kubuntu-desktop" getaggten Pakete aus. Das sind alles Abhängigkeiten des Metapakets kubuntu-desktop. Sie sind alle als "manuell installiert" gekennzeichnet.
  3. sudo tasksel install kubuntu-desktop
    • Stellen Sie sicher, dass X installiert ist, bevor Sie Pakete von task installieren.
    • Installiert das Metapaket kubuntu-desktop. Abhängigkeiten werden "automatisch installiert".
Lasall
quelle