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)
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.
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ésgrep linux-image
recherche les images linux installéesawk '{ 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 versionsed -n '/'`uname -r`'/q;p'
affiche les lignes avant le noyau actuelxargs Sudo apt-get -y purge
purge les noyaux trouvésDé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èrep
is print;
est le séparateur de commande, donc /something/q;p
dit quit quand vous correspondez quelque chose, sinon printsed -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