J'ai eu le même problème insensé... voici ce que j'ai fait pour que tout fonctionne à nouveau :
1. Comme dans la réponse de @Gilles, faites une liste de vos paquets :
cd /var/lib/dpkg/info
grep -l '^/usr/bin/' *.list | sed 's/\.list$//' > ~/my_packages1.txt
2. Insérez un CD Live avec la même version d'Ubuntu, démarrez à partir de celui-ci et copiez votre /usr/bin
répertoire. La partition contenant Ubuntu sur mon disque dur a été montée, il est donc aussi facile de la monter que de la démonter.
cp -R /usr/bin /media/something/usr/bin
3. Maintenant, je ne peux plus utiliser sudo
o pkexec
car j'ai obtenu le message d'erreur suivant doit appartenir à l'uid 0 et avoir le bit setuid activé . J'ai donc dû changer cela, en démarrant de Grub dans un Grub racine. (Voir aquí comment faire et sur ce point site allemand pour des photos). Maintenant :
mount -o remount,rw /
chown -R root:root /usr/bin
chmod a=rx,u+ws /usr/bin/sudo
chmod a=rx,u+ws /usr/bin/pkexec
Redémarrez votre système Ubuntu normal.
4. Réinstallez vos paquets :
sudo xargs -a ~/my_packages1.txt apt-get install --reinstall
rm ~/my_packages.txt
5. Il manquait encore de nombreux paquets. debsums
m'a aidé à trouver ces paquets pour les installer manuellement. (Peut-être qu'avec cette étape, les étapes 1 et 4 sont obsolètes, mais je n'ai pas essayé...)
sudo apt-get install debsums
sudo debsums_init
# This lets debsums find packages with missing files, filters the package names and writes the unique ones to the file.
sudo debsums -cs 2>&1 >/dev/null | sed -e 's/\(.*\)from \(.*\) package\(.*\)/\2/' | uniq -u > my_packages2.txt
sudo xargs -a ~/my_packages2.txt apt-get install --reinstall