À un moment donné, l'un de mes serveurs a cessé d'écrire sur son périphérique de stockage connecté au réseau (je présume) et il en a résulté une semaine ou plus de paquets se retrouvant dans l'état "à moitié installé".
Ce qui est étrange, c’est que apt-get
ne signale aucun problème et j’ai pu obtenir les dernières mises à jour à installer comme prévu.
Ce n’est que lorsque j’ai jeté un œil dans les journaux (dpkg.log*
) et découvert qu’il y avait beaucoup plus de paquets dans cet état.
J'ai besoin d'un moyen de parcourir tous les paquets dans apt-get ou dpkg, et d'effectuer une opération apt-get install <packagename> --reinstall
.
Sauf s'il existe un autre moyen de nettoyer ce gâchis.
Est-ce que quelqu'un a une idée sur comment je peux faire ça? ou avez-vous d'autres idées sur la façon de résoudre ce problème?
Essayez Sudo dpkg --configure -a
. Cela devrait réparer automatiquement ces paquets.
Si cela ne fonctionne pas, essayez d'exécuter Sudo apt-get install -f
puis de relancer Sudo dpkg --configure -a
.
Si vous voulez vraiment passer en revue chaque paquet et le réinstaller,
Et gardez à l’esprit, , ce n’est certainement pas la solution idéale .
Ne le faites que si la commande Sudo dpkg --configure -a
ne fonctionne pas.
Cela prendra beaucoup de temps, car il doit télécharger à nouveau tous les paquets et les installer:
for pkg in `dpkg --get-selections | awk '{print $1}' | egrep -v '(dpkg|apt|mysql|mythtv)'` ; do apt-get -y --force-yes install --reinstall $pkg ; done
J'ai rencontré ce problème après avoir installé le navigateur Web Opera sous Linux Mint. Srsly, juste n'y va pas. Je ne suis pas sûr de la raison qui a laissé le paquet Opera présent dans le dépôt en train de fumer, mais apparemment, il ne l'a pas testé contre des versions plus anciennes mais toujours vivantes de Debian "supporté à long terme". systèmes d’exploitation basés sur le logiciel avant de le faire.
Si cela se produit sur un système dont vous êtes responsable - les tentatives de mise à jour renvoyant le "code d'erreur 1" et aucune modification apportée à cause de fichiers indésirables cassés - voici une solution simple qui fonctionne. Ouvrez un terminal et faites:
cd/var/lib/dpkg/info /
Cela vous amène au répertoire où dpkg stocke ses fichiers de configuration liés aux logiciels installés. Alors fais:
ls | grep -i opéra
(remplacez "opera" par le paquet cassé par votre gestionnaire de paquets)
Cette commande liste tous les fichiers avec "Opera" ou etc. dans son nom. Regardez-les: Quelque chose/pas/lié à Opera (ou quoi que ce soit) répertorié? Si tel est le cas, prenez note et supprimez uniquement les fichiers du package "incriminé", l'un après l'autre, en utilisant leur nom complet, afin d'éviter toute violation avec des noms similaires. Mais si tous les retours de votre recherche appartiennent évidemment au paquet borken, faites:
Sudo rm opera
... en remplaçant "opera" par le courrier indésirable qui a désactivé votre gestionnaire de paquets.
Résultat: le paquet cassé à moitié installé restera "pour toujours" sur votre disque dur, une insulte mortelle pour tout ce qui est bon et saint - mais ne fera aucun mal, à part gaspiller quelques Mo d'espace disque. Sauf si vous allez dans votre répertoire/bin et les supprimez à la main. Quoi qu'il en soit, vous pouvez désormais mettre à jour votre logiciel installé, installer de nouveaux packages, etc. normalement, car votre gestionnaire de packages ne sait plus que le package en échec et ses composants Borken ont déjà existé.
à Pranav Marathe réponse:
--force-yes
Force yes; this is a dangerous option that will cause apt to
continue without prompting if it is doing something potentially
harmful. It should not be used except in very special situations.
Using force-yes can potentially destroy your system! Configuration
Item: APT::Get::force-yes. This is deprecated and replaced by
--allow-downgrades, --allow-remove-essential,
--allow-change-held-packages in 1.1.
-y, --yes, --assume-yes
Automatic yes to prompts; assume "yes" as answer
to all prompts and run non-interactively.
If an undesirable situation, such as changing a held package,
trying to install a unauthenticated package
or removing an essential package occurs then apt-get will abort.
Configuration Item: APT::Get::Assume-Yes.