web-dev-qa-db-fra.com

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

Tasksel ou Plain Apt?

Dans le passé, j'ai toujours utilisé tasksel pour installer ce que l'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 signe (^), 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
35
gertvdijk

En bref: Là 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^' évalue les tâches suivantes:

  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-server cherchera une tâche appelée "lamp-server" 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. Recherchez /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. Recherchez /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 d'éditer un fichier de liste de paquets officiel sans inconvénients (signature valide).

Retour à votre première question:
Dans votre cas particulier, les deux commandes sont presque équivalentes (supposons que vous ayez activé les deux APT::Install-Recommends et APT::Get::AutomaticRemove). La seule différence est l'état du paquet étendu de dépendances mysql-server et Apache2 (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.
Donc, 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-paquet, les dépendances sont supprimées avec autoremove 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".
34
Lasall