Devrais-je utiliser tasksel, les tâches dans APT ou installer des métapaquets réguliers?

37

Tasksel ou Plain Apt?

Dans le passé, j'ai toujours eu l'habitude taskseld'installer ce qu'on appelle des "tâches". Il semble cependant que cela ait été intégré à APT:

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

et que je peux installer de telles "tâches" en y ajoutant un caret ( ^), comme ceci:

sudo apt-get install lamp-server^

Est-ce que cela équivaut à ce qui suit?

sudo tasksel install lamp-server

Et qui est préféré?

Métapaquets

De plus, comment les métapaquets entrent-ils en jeu ici? Certaines tâches semblent ne pas être un méta-paquet alors que d'autres sont:

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

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

Ainsi, à l'aide du dernier exemple, quelle est la différence entre les trois méthodes d'installation suivantes?

  • sudo apt-get install kubuntu-desktop
  • sudo apt-get install kubuntu-desktop^
  • sudo tasksel install kubuntu-desktop
Gertvdijk
la source
2
Regardez la sortie de apt-get install -s lubuntu-desktopversus apt-get install -s lubuntu-desktop^. Dans la dernière, vous verrez quelque chose de plus comme ceci: Remarque, en sélectionnant 'policykit-1-gnome' pour la tâche 'lubuntu-desktop' / Note, en sélectionnant 'gnome-keyring' pour la tâche 'lubuntu-desktop' / Note, en sélectionnant 'libplist1' pour la tâche 'lubuntu-desktop' / Note, en sélectionnant 'aspell-en' pour la tâche 'lubuntu-desktop' / Note, en sélectionnant 'libsdl1.2debian' pour la tâche 'lubuntu-desktop' / Donc, dans ce cas particulier , Je ne suis pas sûr que la "carotte" soit meilleure.
Plus de lecture ici: askubuntu.com/a/249373/25656
1
#warning about tasksel: ne l' utilisez jamais pour supprimer des tâches - voir le rapport de bogue sur le tableau de bord
guntbert

Réponses:

36

En bref: il y a une différence entre tasksel et le processus d'installation de tâches par apt-get.

En regardant votre exemple:

La façon apt-get

sudo apt-get install 'lamp-server^' va évaluer pour faire ce qui suit:

  1. Recherchez dans le cache (fichiers de liste de paquets) tous les champs "Task:" et récupérez-les tous avec "lamp-server".
  2. Installez ces paquets de la manière standard:

    sudo apt-get install package1 package2...
    

Le chemin des tâches

sudo tasksel install lamp-servercherchera une tâche appelée "lampe-serveur" dans l'un de ses fichiers de configuration sous /usr/share/tasksel/**/*.desc:

  1. Recherchez dans les fichiers de configuration un champ "Task:" nommé "lamp-server".
  2. Vérifiez si tous les prérequis sont disponibles (champ "Key:") et mémorisez-les s'ils ne sont pas installés.
  3. Choisissez une méthode pour sélectionner les packages (champ "Packages:"). Si cette "liste" est installée, installez simplement les paquets suivants par leur nom.
  4. Lisez tous les noms de packages suivants et transmettez-les à la méthode précédemment sélectionnée pour générer des noms de packages.
  5. Cherchez /usr/lib/tasksel/info/lamp-server.preinst. S'il existe, exécutez ce script.
  6. Installez les paquets avec apt-get en utilisant la commande suivante:

    debconf-apt-progress -- apt-get -q -y -o APT::Install-Recommends=true -o APT::Get::AutomaticRemove=true install package1 package2 ...
    
  7. Cherchez /usr/lib/tasksel/info/lamp-server.postinst. S'il existe, exécutez ce script.

Conclusion

tasksel est plus puissant dans le traitement et la sélection des tâches. Il peut exécuter des scripts supplémentaires avant / après l'installation / la suppression de tâches. Et le plus gros avantage: vous pouvez modifier des tâches et en créer de nouvelles très facilement. Il n’est pas possible de modifier un fichier officiel de la liste de paquets sans inconvénients (signature valide).

Revenons à votre première question:
dans votre cas particulier, les deux commandes sont presque équivalentes (supposons que vous ayez activé les deux APT::Install-Recommendset APT::Get::AutomaticRemove). La seule différence est l'état mysql-serveret les apache2dépendances du paquet étendu (défini sur "installé manuellement" avec plain apt-get).

Et qu'en est-il des métapaquets?

Si vous n'utilisez pas les fonctionnalités de tasksel telles que la sélection de tâches (particulièrement utile lors de l'installation) et l'exécution de commandes supplémentaires avant et après certains blocages de tâches, une tâche est très similaire à un métapaquet. La différence est la suivante: une tâche n'est pas enregistrée en tant que package dans le cache APT.
Ainsi, si vous désinstallez une dépendance de tâche, les autres tâches ne sont pas marquées comme installées automatiquement, car elles ont été installées explicitement. Si vous désinstallez un méta autoremove-paquet, les dépendances sont supprimées car leur état de package étendu est "installé automatiquement" (s'il n'est pas installé manuellement).
Remarque: Toutes les tâches distribuées dans Debian installent un métapaquet nommé task-TASKNAME.

Donner votre exemple:

  1. sudo apt-get install kubuntu-desktop
    • Va installer le méta-paquet kubuntu-desktop. Les dépendances sont "auto installées".
  2. sudo apt-get install kubuntu-desktop^
    • Sélectionne tous les paquets marqués avec la tâche "kubuntu-desktop". Ce sont toutes des dépendances du méta-paquet kubuntu-desktop. Ils sont tous marqués comme "installés manuellement".
  3. sudo tasksel install kubuntu-desktop
    • Assurez-vous que X est installé avant d'installer les packages de tâche.
    • Va installer le méta-paquet kubuntu-desktop. Les dépendances sont "auto installées".
Lasall
la source