4 votes

a supprimé tous les fichiers dans usr/bin en tapant rm -rf *

Je suis nouveau sous linux et j'ai installé Ubuntu 12.04 aujourd'hui. J'ai accidentellement supprimé tout ce qui se trouvait dans /usr/bin en tapant la commande rm -rf * .

Je ne sais pas ce qui est en train de se monter et j'aimerais apprendre, mais à ce stade, je pense que la seule solution qui me reste est de tout réinstaller. Merci de m'indiquer les moyens de tout réinstaller maintenant. Cela me serait d'une grande aide.

8voto

Schof Points 952

Puisque vous venez de faire l'installation aujourd'hui, refaites-la. Bien que vous puissiez vous en remettre, cela représentera beaucoup plus de travail que de refaire l'installation.

Pour se remettre de la suppression de /usr/bin vous devrez réinstaller tous les paquets contenant des fichiers dans ce répertoire. Vous pouvez utiliser cette commande pour dresser la liste des paquets concernés :

cd /var/lib/dpkg/info
grep -l '^/usr/bin/' *.list | sed 's/\.list$//'

Vous devrez alors trouver un moyen de télécharger les paquets sans dépendre des programmes supprimés. Puisque vous avez supprimé dpkg l'utilitaire d'installation de paquets de bas niveau, vous devrez d'abord l'obtenir quelque part. Prenez-le sur une autre machine fonctionnant avec la même version d'Ubuntu, ou téléchargez le fichier dpkg sur une autre machine et en extraire les programmes. Vous aurez besoin non seulement de /usr/bin/dpkg mais aussi tous les autres programmes de ce paquet, y compris update-alternatives et tous les programmes nommés /usr/bin/dpkg-* . Une fois encore, la copie peut s'avérer délicate en raison du grand nombre de programmes supprimés, et il se peut que vous deviez redémarrer sur un CD/USB de secours pour y parvenir.

Une fois que vous avez le dpkg télécharger au moins la suite dpkg y apt d'une manière ou d'une autre, peut-être sur une autre machine ou dans un navigateur web toujours en cours d'exécution.

Installez ensuite apt manuellement avec la commande

dpkg -i /path/to/apt_0.8.16~exp12ubuntu10.2.deb

Si vous obtenez des erreurs concernant des commandes manquantes, réinstallez d'abord les paquets correspondants. Réinstallez ensuite tous les paquets concernés :

apt-get --reinstall install $(grep -l '^/usr/bin/' *.list | sed 's/\.list$//')

Encore une fois, dans votre situation, il suffit de procéder à une réinstallation complète.

4voto

Fabiano Soriani Points 543

/usr/bin/ contient la plupart des programmes installés sur votre système.

Réinstaller Ubuntu serait le moyen le plus simple et le plus rapide de retrouver un système opérationnel.

0voto

AdamKalisz Points 159

Vous pourriez peut-être exporter ce répertoire à partir d'un autre ordinateur via NFS ? Oui, c'est très laid et vous devriez simplement réinstaller.

Quoi qu'il en soit : la monture devrait toujours fonctionner, car

ls /usr/bin | grep mount

ne m'a rien donné d'autre que grub-mount . Ainsi, la simple copie des fichiers concernés à partir d'un répertoire monté peut fonctionner temporairement. N'oubliez pas, sudo ne fonctionnera pas, utilisez su .

0voto

Gian Points 1

Rien de bien difficile s'il s'agit d'une vm :

  1. sauvegarder la liste des paquets installés

    cd /var/lib/dpkg/info
    grep -l '^/usr/bin/' *.list | sed 's/\.list$//' > ~/packs.txt
  2. Installer la même version du système d'exploitation (i386 ou amd64) sur une nouvelle VM

  3. Sur la nouvelle machine, faites

    cd /var/lib/dpkg/info
    grep -l '^/usr/bin/' *.list | sed 's/\.list$//' > ~/packs2.txt
  4. copier le contenu de packs.txt sur le nouveau système et vous pouvez le 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
  5. Le nouveau système a maintenant le même contenu /usr/bin de votre machine endommagée

  6. monter le disque de votre machine cassée dans la nouvelle et enfin :

    rsync -av /usr/bin /mnt/usr/bin

bénéfice

0voto

Frank Zalkow Points 101

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X