web-dev-qa-db-fra.com

Je reçois cette erreur après la mise à niveau

J'ai reçu ce message d'erreur après la dernière mise à jour:

dpkg: dependency problems prevent configuration of initramfs-tools:
 initramfs-tools depends on initramfs-tools-bin (<< 0.99ubuntu13.2.1~); however:
  Version of initramfs-tools-bin on system is 0.103ubuntu0.2.
 klibc-utils (2.0.1-1ubuntu2) breaks initramfs-tools (<< 0.103) and is installed.
  Version of initramfs-tools to be configured is 0.99ubuntu13.2.
dpkg: error processing initramfs-tools (--configure):
 dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of plymouth:
 plymouth depends on initramfs-tools; however:
  Package initramfs-tools is not configured yet.
dpkg: error processing plymouth (--configure):
 dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of mountall:
 mountall depends on plymouth; however:
  Package plymouth is not configured yet.
dpkg: error processing mountall (--configure):
 dependency problems - leaving unconfigured
No apport report written because MaxReports is reached already
                                                              No apport report written because MaxReports is reached already
      No apport report written because MaxReports is reached already
                                                                    dpkg: dependency problems prevent configuration of initscripts:
 initscripts depends on mountall (>= 2.28); however:
  Package mountall is not configured yet.
dpkg: error processing initscripts (--configure):
 dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of upstart:
 upstart depends on initscripts; however:
  Package initscripts is not configured yet.
 upstart depends on mountall; however:
  Package mountall is not configured yet.
dpkg: error processing upstart (--configure):
 dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of passwd:
 passwd depends on upstart-job; however:
  Package upstart-job is not installed.
  Package upstart which provides upstart-job is not configured yet.
dpkg: error processing passwd (--configure):
 dependency problems - leaving unconfigured
No apport report written because MaxReports is reached already
                                                              No apport report written because MaxReports is reached already
      No apport report written because MaxReports is reached already
                                                                    Errors were encountered while processing:
 initramfs-tools
 plymouth
 mountall
 initscripts
 upstart
 passwd
E: Sub-process /usr/bin/dpkg returned an error code (1)
7
user203404

Ouvrez le terminal et exécutez ces commandes:

Sudo apt-get autoremove
Sudo apt-get --purge remove && Sudo apt-get autoclean
Sudo apt-get -f install
Sudo dpkg-reconfigure -a

La dernière commande prendrait un certain temps dépend des paquets installés sur votre système. Alors s'il vous plaît soyez patient. Si vous n'avez aucun paquet cassé/résiduel, il s'exécutera silencieusement sans message.

Sudo apt-get update
Sudo apt-get upgrade && Sudo apt-get dist-upgrade
Sudo dpkg-reconfigure -a
Sudo dpkg --configure -a
Sudo update-initramfs -u

Puis redémarrez votre système.

7
Saurav Kumar

Mon one-liner pour supprimer les anciens noyaux (cela libère également de l'espace disque):

dpkg --list | grep linux-image | awk '{ print $2 }' | sort -V | sed -n '/'`uname -r`'/q;p' | xargs Sudo apt-get -y purge

Explication (rappelez-vous, | utilise la sortie de la commande précédente comme entrée de la suivante)

  • dpkg --list liste tous les packages installés
  • grep linux-image recherche les images linux installées
  • awk '{ print $2 }' sort juste la 2ème colonne (qui est le nom du paquet)
  • sort -V met les éléments en ordre par numéro de version
  • sed -n '/'`uname -r`'/q;p' affiche les lignes avant le noyau actuel
  • xargs Sudo apt-get -y purge purge les noyaux trouvés

Dénouement de l'invocation sed:

  • -n indique à sed d'être silencieux
  • `uname -r` affiche la version actuelle du noyau installé - nous l'incluons dans des backticks afin que la sortie soit incluse avec la commande (vous pouvez également voir ceci sous la forme $(uname -r)
  • /something/q dit que vous arrêtez lorsque vous faites correspondre quelque chose (dans ce cas, quelque chose est sorti de uname -r) - le / entoure une expression régulière
  • p is print
  • le ; est le séparateur de commande, donc /something/q;p dit quit quand vous correspondez quelque chose, sinon print

sed -n '/'`uname -r`'/q;p' affiche les lignes jusqu'à ce qu'elles correspondent au nom du noyau actuel.

Si vous êtes paranoïaque (comme moi), vous pouvez créer la dernière partie xargs echo Sudo apt-get -y purge afin que la commande de purge des anciens noyaux soit imprimée, puis vous pouvez vérifier qu'aucun élément inattendu n'est inclus avant de l'exécuter.


Version modifiée pour supprimer les en-têtes:

dpkg --list | grep 'linux-image' | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p' | xargs Sudo apt-get -y purge
dpkg --list | grep 'linux-headers' | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p' | xargs Sudo apt-get -y purge

Remarque: l'invocation sed est modifiée. "$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")" extrait uniquement la version (par exemple "3.2.0-44"), sans "-generic" ou similaire de uname -r


Version tout-en-un pour supprimer les images et les en-têtes (combine les deux versions ci-dessus):

echo $(dpkg --list | grep linux-image | awk '{ print $2 }' | sort -V | sed -n '/'`uname -r`'/q;p') $(dpkg --list | grep linux-headers | awk '{ print $2 }' | sort -V | sed -n '/'"$(uname -r | sed "s/\([0-9.-]*\)-\([^0-9]\+\)/\1/")"'/q;p') | xargs Sudo apt-get -y purge
2
arukaen