web-dev-qa-db-fra.com

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

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.

4
user1455116

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.

7
Gilles

/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.

4
Florian Diesch

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
0
Frank Zalkow

Rien de bien difficile si c'est une vm:

  1. 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
    
  2. Installez la même version de système d'exploitation (i386 ou AMD64) sur une nouvelle machine virtuelle

  3. Sur la machine fraîche faire

    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 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. Maintenant, le nouveau système a le même contenu /usr/bin de votre machine endommagée

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

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

profit

0
Gian

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.

0
AdamKalisz