Je suis nouveau sur Linux et j'ai installé Ubuntu 12.04 aujourd'hui. J'ai accidentellement tout supprimé dans /usr/bin
en tapant dans la commande rm -rf *
.
Je ne sais pas ce qui se prépare et aimerais apprendre, mais pour le moment, je pense que le seul moyen qui me reste est de tout réinstaller. S'il vous plaît laissez-moi savoir les moyens de tout réinstaller maintenant. Ce serait d'une grande aide pour moi.
Puisque vous venez d'installer aujourd'hui, refaites l'installation. Bien que vous puissiez récupérer cela, ce sera beaucoup plus de travail que de refaire l'installation.
Pour récupérer de la suppression de /usr/bin
, vous devez réinstaller tous les packages contenant des fichiers dans ce répertoire. Vous pouvez utiliser cette commande pour répertorier les packages affectés:
cd /var/lib/dpkg/info
grep -l '^/usr/bin/' *.list | sed 's/\.list$//'
Vous devrez ensuite trouver un moyen de télécharger les packages sans vous fier aux programmes supprimés. Puisque vous avez supprimé dpkg
, l’utilitaire d’installation de paquetage de bas niveau, vous devez l’obtenir d’abord. Récupérez-le sur une autre machine exécutant la même version Ubuntu, ou téléchargez le package dpkg
sur une autre machine et extrayez-en les programmes. Vous aurez besoin non seulement de /usr/bin/dpkg
, mais également de tous les autres programmes de ce paquet, y compris update-alternatives
et de tous les programmes nommés /usr/bin/dpkg-*
. Encore une fois, la copie peut être délicate avec de nombreux programmes supprimés. Vous devrez donc peut-être redémarrer sur un CD/USB de secours pour le faire.
Une fois que vous avez la suite dpkg
, téléchargez au moins les fichiers dpkg
et apt
package en quelque sorte, peut-être sur une autre machine ou dans un navigateur Web en cours d'exécution.
Ensuite, installez apt
manuellement avec la commande
dpkg -i /path/to/apt_0.8.16~exp12ubuntu10.2.deb
Si vous rencontrez des erreurs concernant des commandes manquantes, réinstallez d'abord les packages correspondants. Puis réinstallez tous les packages concernés:
apt-get --reinstall install $(grep -l '^/usr/bin/' *.list | sed 's/\.list$//')
Encore une fois, dans votre cas, effectuez simplement une réinstallation complète.
/usr/bin/
contient la plupart des programmes installés sur votre système.
Installer de nouveau Ubuntu serait le moyen le plus simple et le plus rapide d’obtenir un système fonctionnel à nouveau.
Avait le même problème stupide ... voici ce que j'ai fait pour que tout fonctionne à nouveau:
1. Comme dans la réponse de @Gilles, dressez 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 Live CD avec la même version d’Ubuntu, démarrez à partir de celui-ci et copiez votre répertoire /usr/bin
. La partition avec Ubuntu sur mon disque dur a été montée, ce qui est aussi simple que
cp -R /usr/bin /media/something/usr/bin
3. Maintenant, je ne pouvais pas utiliser Sudo
ou pkexec
, car j'avais le message d'erreur doit appartenir à uid 0 et avoir le bit setuid défini . J'ai donc dû changer cela en démarrant de GRUB dans un shell racine. (Voir ici comment faire ceci et sur ceci site allemand pour quelques images.) 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 dans 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
Rien de bien difficile si c'est une vm:
enregistrer la liste des paquets que vous avez installés
cd /var/lib/dpkg/info
grep -l '^/usr/bin/' *.list | sed 's/\.list$//' > ~/packs.txt
Installez la même version de système d'exploitation (i386 ou AMD64) sur une nouvelle machine virtuelle
Sur la machine fraîche faire
cd /var/lib/dpkg/info
grep -l '^/usr/bin/' *.list | sed 's/\.list$//' > ~/packs2.txt
copier le contenu de packs.txt
sur le nouveau système et vous pouvez faire:
install=$(diff -c ~/packs2.txt ~/packs.txt | grep "^- " | cut -d' ' -f2 | xargs echo )
apt-get install -y --force-yes $install
remove=$(diff -c ~/packs2.txt ~/packs.txt | grep "^+ " | cut -d' ' -f2 | xargs echo )
apt-get purge -y --force-yes $remove
Maintenant, le nouveau système a le même contenu /usr/bin
de votre machine endommagée
montez le disque de votre machine cassée dans la nouvelle et enfin:
rsync -av /usr/bin /mnt/usr/bin
profit
Vous pourriez peut-être exporter ce répertoire depuis un autre ordinateur via NFS? Oui, c'est très moche et vous devriez simplement le réinstaller.
Quoi qu'il en soit: mount devrait toujours fonctionner, car
ls /usr/bin | grep mount
ne m'a rien donné d'autre que grub-mount
. Ainsi, la copie de fichiers pertinents à partir d'un répertoire monté peut fonctionner temporairement. Rappelez-vous simplement que Sudo
ne fonctionnera pas, utilisez su
.