< Pacman (Français)

pacman (Français)/Pacnew and Pacsave (Français)

Quand pacman supprime un paquet qui a un fichier de configuration, il crée normalement une copie de sauvegarde de ce fichier de configuration et ajoute .pacsave au nom du fichier. De même, lorsque pacman met à jour un paquet qui inclut un nouveau fichier de configuration créé par le mainteneur, différent du fichier actuellement installé, il enregistre un fichier .pacnew avec la nouvelle configuration. pacman fournit une notification lorsque ces fichiers sont écrits.

État de la traduction: Cet article est la version francophone de pacman/Pacnew and Pacsave. Date de la dernière traduction: 2022-10-03. Vous pouvez aider à synchroniser la traduction s'il y a eu des changements dans la version anglaise.

Pourquoi ces fichiers sont créés

Un fichier .pacnew peut être créé lors d'une mise à jour de paquet (pacman -Syu, pacman -Su ou pacman -U) pour éviter d'écraser un fichier qui existe déjà et qui a été précédemment modifié par l'utilisateur. Lorsque cela se produit, un message comme le suivant apparaîtra dans la sortie de pacman :

warning: /etc/pam.d/usermod installed as /etc/pam.d/usermod.pacnew

Un fichier .pacsave peut être créé lors de la suppression d'un paquet (pacman -R), ou par une mise à jour d'un paquet (le paquet doit d'abord être supprimé). Lorsque la base de données de pacman a un enregistrement indiquant qu'un certain fichier appartenant au paquet doit être sauvegardé, elle crée un fichier .pacsave. Lorsque cela se produit, pacman affiche un message comme le suivant :

warning: /etc/pam.d/usermod saved as /etc/pam.d/usermod.pacsave

Ces fichiers nécessitent une intervention manuelle de l'utilisateur et il est bon de les traiter juste après chaque mise à jour ou suppression de paquet. Si elles ne sont pas gérées, les configurations incorrectes peuvent entraîner un mauvais fonctionnement du logiciel ou l'impossibilité totale de le faire fonctionner.

Fichiers de sauvegarde des paquets

Le fichier PKGBUILD d'un paquet spécifie quels fichiers doivent être préservés ou sauvegardés lorsque le paquet est mis à jour ou supprimé. Par exemple, le PKGBUILD de pulseaudio contient la ligne suivante :

backup=(etc/pulse/{daemon.conf,default.pa,system.pa})

Après l'installation, cette liste peut être interrogée à partir de la base de données pacman en utilisant pacman -Qii package_name.

Pour empêcher un paquet d'écraser un certain fichier, consultez Pacman (Français)#Ignorer la mise à jour d'un fichier.

Types expliqués

.pacnew

Pour chacun des #Fichiers de sauvegarde des paquets mis à jour, pacman effectue une comparaison croisée de trois md5sums générés à partir du contenu du fichier : une somme pour la version installée à l'origine par le paquet, une pour la version actuellement dans le système de fichiers, et une pour la version dans le nouveau paquet. Si la version du fichier actuellement dans le système de fichiers a été modifiée par rapport à la version initialement installée par le paquet, pacman ne peut pas savoir comment fusionner ces changements avec la nouvelle version du fichier. Par conséquent, au lieu d'écraser le fichier modifié lors de la mise à jour, pacman enregistre la nouvelle version avec une extension .pacnew et laisse la version modifiée intacte.

Pour aller plus loin dans le détail, la comparaison de la somme MD5 à 3 voies aboutit à l'un des résultats suivants :

original = X, actuel = X, nouveau = X 
Les trois versions du fichier ont un contenu identique, l'écrasement ne pose donc pas de problème. Écraser la version actuelle avec la nouvelle version et ne pas en informer l'utilisateur (bien que le contenu du fichier soit le même, cet écrasement mettra à jour les informations du système de fichiers concernant les heures d'installation, de modification et d'accès au fichier, et s'assurera que tout changement de permission du fichier est appliqué).
original = X, actuel = X, nouveau = Y 
Le contenu de la version actuelle est identique à celui de l'original, mais la nouvelle version est différente. Puisque l'utilisateur n'a pas modifié la version courante et que la nouvelle version peut contenir des améliorations ou des corrections de bogues, écrasez la version courante avec la nouvelle version et ne prévenez pas l'utilisateur. C'est la seule fusion automatique des nouvelles modifications que pacman est capable d'effectuer.
original = X, current = Y, new = X 
Le paquet original et le nouveau paquet contiennent tous deux exactement la même version du fichier, mais la version actuellement dans le système de fichiers a été modifiée. Laissez la version actuelle en place et jetez la nouvelle version sans en informer l'utilisateur.
original = X, actuel = Y, nouveau = Y 
La nouvelle version est identique à la version actuelle. Écraser la version actuelle avec la nouvelle version et ne pas en informer l'utilisateur (bien que le contenu du fichier soit le même, cet écrasement mettra à jour les informations du système de fichiers concernant les heures d'installation, de modification et d'accès du fichier, et s'assurera que tout changement de permission du fichier est appliqué).
original = X, actuel = Y, nouveau = Z 
les trois versions sont différentes, laissez donc la version actuelle en place, installez la nouvelle version avec une extension .pacnew et prévenez l'utilisateur de la nouvelle version. L'utilisateur devra fusionner manuellement tous les changements nécessaires de la nouvelle version dans la version actuelle.

Rarement, lorsqu'un paquet mis à jour inclut un fichier de sauvegarde que la version précédente n'avait pas, la situation est correctement gérée comme X/Y/Y ou X/Y/Z, X étant une valeur inexistante.

.pacsave

Si l'utilisateur a modifié l'un des fichiers spécifiés dans backup, ce fichier sera renommé avec une extension .pacsave et restera dans le système de fichiers après la suppression du reste du paquet.

Note: L'utilisation de l'option -n avec pacman -R entraînera la suppression complète de tous les fichiers du paquet spécifié, donc aucun fichier pacsave ne sera créé.

Localiser les fichiers .pac*

Pacman ne gère pas les fichiers .pacnew automatiquement : vous devez les maintenir vous-même. Quelques outils sont présentés dans la section suivante. Pour faire cela manuellement, vous aurez d'abord besoin de les localiser. Lors de la mise à jour ou de la suppression d'un grand nombre de paquets, les fichiers .pac* mis à jour peuvent être manqués. Pour découvrir si des fichiers .pac* ont été installés, utilisez l'une des méthodes suivantes :

  • Pour rechercher dans où sont stockées la plupart des configurations globales : ou pour effectuer une recherche sur l'ensemble du disque en remplaçant par dans la commande ci-dessus (auquel cas vous pouvez vouloir sauter sélectivement certains répertoires pour accélérer la recherche).
  • Si elle est installée, locate peut également être utilisée. Réindexez d'abord la base de données : Puis exécutez :
  • Utilisez le journal de pacman pour les trouver :
    $ grep --extended-regexp "\.pac(new|save)" /var/log/pacman.log
    Notez que le journal ne garde pas trace des fichiers actuellement dans le système de fichiers ni de ceux qui ont déjà été supprimés ; la commande ci-dessus listera tous les fichiers .pac* qui ont déjà existé sur votre système. Pour obtenir uniquement les 10 fichiers .pac* les plus récents, envoyez le résultat à .

Gestion des fichiers .pac*

pacdiff

fournit l'outil simple  pour gérer les fichiers pac*. Il recherchera tous les fichiers .pacnew et .pacsave et demandera des actions sur eux. Il utilise vimdiff par défaut, mais vous pouvez spécifier un outil différent avec . Consultez List of applications/Utilities#Comparison, diff, merge pour d'autres outils de comparaison courants.

Utilitaires tiers

Quelques utilitaires tiers offrant différents niveaux d'automatisation de ces tâches sont disponibles :

  • dotpac Script interactif de base avec une interface texte basée sur ncurses et un guide pratique. Pas de fonctionnalités de fusion ou de fusion automatique.
https://github.com/AladW/dotpac || dotpacAUR
  • pacdiff-pacman-hook-git Un hook Pacman pour lancer pacdiff automatiquement.
https://github.com/desbma/pacman-hooks || pacdiff-pacman-hook-gitAUR

Voir aussi

gollark: ComputerCraft's not particularly bad as environments go.
gollark: No, it should just not be done, do things cleanly, correctly and... generally sanely?
gollark: Well, as I said, that way it will *maybe* fix your *particular* issue, but you'll try and blindly shove that in another project and it *won't*.
gollark: ...
gollark: All good JSON parsing/serialization code would just handle all the escaping and whatnot sanely and automatically and let me just pass in an object and convert it to a string.
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.