web-dev-qa-db-fra.com

Supprimé accidentellement /usr/lib/*.so.*

Pendant l’installation de MRTG, j’ai supprimé par erreur /usr/lib/*.so.* et /usr/lib/*.so.

Je suis maintenant incapable de démarrer mon système, il reste bloqué sur l'écran de démarrage et lorsque j'appuie sur le bouton PAGEDOWN, je peux voir qu'il y a plusieurs choses qui ne parviennent pas à se charger.

Cependant, DHCP et WebMin sont en cours d'exécution et, de Webmin, je peux voir les journaux système, ce qui m'indique que cups ne se charge pas car libpipeline.so.1Is manque et plusieurs autres.

Mon ordinateur fonctionne 11.04

8
Ahsan

Puisque vous avez uniquement supprimé _/usr/lib/*_ et non pas _/lib/*_, vous pouvez probablement récupérer. Je pense que tous les programmes critiques dont vous avez besoin pour restaurer votre système utilisent uniquement les bibliothèques de _/usr/lib_.

Démarrez à l'invite de connexion texte. Si le démarrage normal ne vous donne pas une invite _login:_ en mode texte, démarrez avec seulement les services minimum. Appuyez et maintenez Shift lorsque votre ordinateur commence à afficher l'invite Grub; vous devez appuyer sur la touche après l’initialisation du clavier par le BIOS, mais avant le chargement de Grub, qui sur certaines machines ne laisse que peu de temps et peut nécessiter plusieurs tentatives. À l'invite Grub, appuyez sur Down pour mettre en surbrillance l'entrée de démarrage en mode mono-utilisateur et la démarrer.

Une fois que vous avez une ligne de commande, exécutez _apt-get --reinstall install PACKAGE1 PACKAGE2 …_ pour réinstaller les packages contenant des fichiers dans _/usr/lib_. Vous pouvez exécuter cet extrait de shell pour obtenir la liste des noms de packages à réinstaller:

_egrep -l '/usr/lib/[^/]*\.so\.' /var/lib/dpkg/info/a*.list |
sed -e 's!^/var/lib/dpkg/info/!!' -e 's!\.list$!!'
_

Certains scripts d'installation de package peuvent nécessiter la présence de bibliothèques d'autres packages. Vous devrez donc peut-être exécuter les réinstallations dans un ordre particulier. Si vous constatez que les scripts d'installation d'un package tentent d'utiliser un programme particulier, vous pouvez connaître les bibliothèques dont ce programme a besoin avec ldd. Par exemple, cela indique que python manque trois bibliothèques que vous devez réinstaller:

_$ ldd /usr/bin/python | grep 'not found'
    libssl.so.0.9.8 => not found
    libcrypto.so.0.9.8 => not found
    libz.so.1 => not found
_

_dpkg -S /usr/lib/libz.so.1_ révèle que ce fichier provient de _zlib1g_, et ainsi de suite.

Si vous constatez que _apt-get_ ne parvient pas à télécharger des packages, commencez par télécharger quelques packages clés à partir d'un CD live. zlib1g et libssl0.9.8 sont deux packages dont vous aurez très probablement besoin très tôt.

5
Gilles

Vous pouvez passer une semaine à trouver tout ce qui manque ou une heure à faire une réinstallation à partir d’un CD puis à récupérer tous vos anciens paquets.

Je vous suggèrerais de démarrer dans un environnement LiveCD pour obtenir des sauvegardes (copiez-les sur un lecteur USB externe ou une autre partition), puis redémarrez.

10
Oli

/usr/lib contenait les bibliothèques partagées de, franchement, tout sauf les logiciels indispensables au démarrage (c’est ce qui entre dans /lib/ et tout ce que vous n’avez pas installé via le gestionnaire de paquets (généralement /usr/local/lib).

Version courte, vous venez d'arroser votre système.

Maintenant, si vous avez toujours /var/cache/apt/archives rempli de choses, avec un peu de magie judicieuse, vous pourrez peut-être sauver la situation.

Vérifiez s'il contient toujours des archives pour les packages suivants:

libxapian
libsigc++
apt
libcwidget
libsqlite
libboost-iostreams 

Ces packages contiennent des bibliothèques dans /usr/lib dont aptitude a besoin pour fonctionner Si vous pouvez trouver les packages dans /var/cache/apt/archives, vous pouvez les réinstaller manuellement avec dpkg -i <packagename, et une fois qu'ils sont tous installés , aptitude devrait pouvoir courir.

Ensuite, en exécutant la commande aptitude reinstall ~i, vous forcerez la réinstallation de tous les paquetages déjà installés, ce qui devrait, espérons-le, restaurer votre système. Je ne peux pas donner de garanties absolues car les dégâts que vous avez causés sont vraiment spectaculaires dans ce cas-ci ...

3
Shadur

Je serais tenté de démarrer à partir d'un live-CD Ubuntu 11.04 et d'essayer de copier les fichiers manquants.

Avant de faire quoi que ce soit, vérifiez que vous avez de bonnes sauvegardes des fichiers de données générés par l'utilisateur. Sinon, je démarrerais un CD live, monter le disque dur en lecture seule et effectuer des sauvegardes dès que possible.

1
RedGrittyBrick

Quand j'ai fait quelque chose de similaire, j'ai eu la chance de réaliser avant de tenter un redémarrage. À ce stade, votre système fonctionnera encore principalement. Mon approche était de créer une boîte virtuelle avec la même version du système d'exploitation et de copier les fichiers manquants à partir de celle-ci. si vous autorisez l'accès ssh à votre invité virtualbox, vous pouvez utiliser rsync à partir d'un terminal de votre système principal pour aspirer uniquement les fichiers et les liens manquants. Dans mon cas, il manquait assez de fichiers pour qu'il soit plus facile/plus sûr de copier manuellement à l'aide de scp, de sorte que ce qui suit n'est pas testé (!)

Sudo rsync -avu user@guestVB:/usr/lib /usr/lib

-a est le mode archive (récursif, copie les liens symboliques et les attributs, y compris les horodatages, les permissions, etc.)

-u saute si la copie de destination est plus récente

-v est prolixe

0
Kim SJ