Après un arrêt impur et un fsck coloré, tout un tas de fichiers ont disparu. La sortie de 'rpm -Va' est longue de plusieurs centaines de lignes (principalement des fichiers manquants mais aussi une somme de contrôle et d'autres incompatibilités). Existe-t-il un moyen simple de réinstaller des packages dont les fichiers sont manquants et / ou corrompus?
L'OS en question est Fedora 22.
yum reinstall $(rpm -qa --qf="%{N}-%{V}\n" | sort)
Réponses:
Par souci de référence et d'exhaustivité, une commande qui serait en mesure de réaliser ce qui était initialement demandé serait quelque chose comme ça (rapidement bricolé, mais ça marche)
Voici une courte explication des différentes parties:
Exécute une vérification complète de tous les packages actuellement installés / répertoriés dans la base de données rpm. Il redirigera également stderr vers stdout, car ici sur ma boîte, certaines erreurs causées par l'activation de la préconnexion sont signalées comme des erreurs, mais nous les voulons sur stdout.
Attention: doit être exécuté en tant que root pour pouvoir vérifier tous les fichiers, les autorisations et le propriétaire / groupe.
supprime l' affichage des lignes Emtpy et ceux des erreurs prelink (exemple d'une telle erreur:
prelink: /tmp/#prelink#.B14JBi: Recorded 10 dependencies, now seeing -1
)filtrera la
rpm -Va
sortie pour n'afficher que les noms de fichiersrecherchera tous les noms de fichiers obtenus dans lesquels les packages sont contenus, et affichera le nom et la version du package
supprimera les combinaisons nom / version de package en double.
Au total, vous recevrez une liste de packages dont la vérification a échoué.
rpm -Va
peut encore montrer des problèmes non liés, car il vérifie également les dépendances entre les packages, qui peuvent devoir être supprimées en ajoutant--nodeps
.la source
J'ai récemment rencontré un problème similaire avec des fichiers manquants sur openSUSE 13.2 et l'ai résolu avec:
Les options de rpm et l'appel à awk sont destinés à gagner du temps dans mon cas, car aucune corruption ne s'est produite.
la source
--nofiles
et donc faire la même choseyum check dependencies
car il ne vérifiera que tous les packages rpm installés pour les problèmes de dépendance.--nofiles
permettrait d'économiser beaucoup de temps pour les installations non SSD, mais vous omettriez également la vérification des fichiers manquants. ... juste par souci d'exhaustivité. Et s'il vous plaît gardez à l'esprit, si vous grep pour les chaînes anglaises, vous voudrez peut-être préfixer avecLC_ALL=C
;)