Stratégie de gestion de packages avec Pacman

Depuis que j'ai changé ma dissortingbution préférée vers Gentoo, j'ai été très familier avec le schéma suivant pour installer et supprimer des packages:

  1. Installez un tas d'applications qui font à peu près la même chose pour les essayer: emerge <package> . Cette command installe le package et marque le package comme explicitement installé.
  2. Essayez-les et supprimez ceux que je n'aime pas (et j'espère garder un ou deux qui répondent à mes besoins): emerge --deselect <package> . Cette command supprime le package de la list des applications explicitement installées, mais ne désinstalle pas le package.
  3. Supprimez enfin tout ce qui n'est pas requirejs sur mon système: emerge --depclean . Cette command supprime tous les packages (1) qui ne sont pas un package système, (2) qui ne sont pas installés explicitement et (3) qui ne sont pas une dépendance de ces deux.
  4. Et éventuellement vérifier que toutes les dependencies de package sont OK: revdep-rebuild . Cette command vérifie toutes les dependencies et réinstalle les packages endommagés.

De time en time je regarderais les inputs dans /var/lib/portage/world (la list des packages explicitement installés) pour examiner les applications de haut niveau que j'utilise, et enlever celles que je n'utilise plus en utilisant le commands aux étapes 2, 3 et 4.

Maintenant que j'essaie d'apprendre Arch, je me request si je pourrais utiliser la même stratégie avec Pacman? Ou une autre stratégie qui peut garder mon système propre des packages inutilisés?

Note: le Pacman Rosetta aide beaucoup à comprendre rapidement les choses, mais je n'arrivais pas à comprendre l'équivalent d'Arch du file /var/lib/portage/world . pacman -Qe est dit le faire, mais il contient des choses que je jure je n'ai pas explicitement installé … Quoi qu'il en soit s'il vous plaît répondre à cette question en termes de stratégie (avec des exemples de commands, bien sûr 🙂

La raison la plus probable pour laquelle vous voyez des packages avec pacman -Qe que vous ne vous souvenez pas de l'installation est qu'ils faisaient partie d'un "groupe" (comme base-devel , etc.) que vous avez installé.

Side Note: Personnellement, je cherchais depuis un certain time à passer d'un package «explicite» à «implicite» (et même vice versa) sans le réinstaller, même en prenant un package que j'ai installé explicitement pour faire fonctionner un autre package et tourner il dans une dépendance de ce package (encore une fois sans réinstaller).

Grâce à la réponse de DarwinSurvivor, j'ai pu mieux comprendre le fonctionnement de la gestion de packages dans Arch. Maintenant, je peux appliquer la même stratégie que j'utilise avec Gentoo (avec de petites modifications). Les "équivalents" des commands de la question sont, respectivement:

  1. pacman -S <package>
  2. pacman -D --asdeps <package>
  3. pacman -Rs $(pacman -Qqtd)
  4. Non disponible / non nécessaire

La chose la plus proche de /var/lib/portage/world dans Gentoo est le résultat de la command pacman -Qe . Différences:

  1. Arch a des groupes de packages , qui sont essentiellement plusieurs packages "regroupés" sous un nom. Lorsqu'un groupe est installé, tout ce qui est dans le groupe est considéré comme explicitement installé.
  2. Arch ne possède pas de «packageages système», ce qui permet de pacman -Qe les packages importants du pacman -Qe de pacman -Qe .

Si je me souviens bien,

 pacman -S package 

installe un package

 pacman -Rs package 

supprime un package et toutes ses dependencies — mais seulement ceux qui ne briseraient pas les autres packages et seulement ceux que vous n'avez pas explicitement installés.

Commander la page de manuel de pacman.

Je ne sais malheureusement pas comment vérifier les packages cassés.

Au lieu de countr sur le gestionnaire de packages pour suivre les packages explicitement installés, vous pouvez utiliser un outil de gestion de configuration comme Ansible sur votre système. Je l'utilise pour ma propre machine et je peux toujours mettre en place une machine comme ma machine principale avec seulement deux commands.