Supprimé par accident /usr/lib/*.so.*

9

Pendant que j'installais MRTG, par erreur, j'ai supprimé /usr/lib/*.so.*et/usr/lib/*.so

Je ne peux plus démarrer mon système maintenant, il se bloque 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 à partir de Webmin, je peux voir les journaux système qui m'indiquent que cups ne se charge pas car libpipeline.so.1il manque et plusieurs autres.

Mon ordinateur fonctionne 11.04

Ahsan
la source
1
Cross publié sur Unix et Linux
Marco Ceppi
Utilisez Ask Ubuntu pour des questions spécifiques à Ubuntu. et ne traversez pas le poste. Si vous n'êtes pas sûr si c'est spécifique à Ubuntu, demandez d'abord ici, et nous migrerons si c'est spécifique à Ubuntu.
2
aussi une astuce pour l'avenir ... si vous saviez que vous aviez fait quelque chose d'aussi mauvais avant de redémarrer ... ne redémarrez pas . laissez le système en marche et commencez immédiatement les réparations. J'ai récupéré /binet de /etccette façon dans le passé

Réponses:

5

Puisque vous avez seulement supprimé /usr/lib/*et non /lib/*, vous pouvez probablement récupérer. Je pense que tous les programmes dont vous avez absolument besoin pour récupérer votre système utilisent uniquement des bibliothèques /usr/lib.

Démarrez à une invite de connexion texte. Si le démarrage normal ne vous donne pas d' login:invite en mode texte, démarrez avec uniquement des services minimum. Appuyez et maintenez Shiftlorsque votre ordinateur démarre pour afficher l'invite Grub; vous devez appuyer sur la touche après que le BIOS a initialisé le clavier mais avant le chargement de Grub, ce qui sur certaines machines ne laisse qu'une petite fenêtre de temps et peut nécessiter plusieurs tentatives. À l'invite Grub, appuyez sur Downpour mettre en surbrillance l'entrée de démarrage en mode mono-utilisateur et démarrez-la.

Une fois que vous disposez d'une ligne de commande, exécutez apt-get --reinstall install PACKAGE1 PACKAGE2 …pour réinstaller les packages contenant des fichiers /usr/lib. Vous pouvez exécuter cet extrait de shell pour obtenir la liste des noms des 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 packages 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 essaient d'utiliser un programme particulier, vous pouvez savoir de quelles bibliothèques ce programme a besoin ldd. Par exemple, cela indique qu'il manque trois bibliothèques à python 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.1révèle que ce fichier provient zlib1g, etc.

Si vous ne parvenez apt-getpas à télécharger les packages, téléchargez d'abord quelques packages clés à partir d'un CD live. zlib1get ce libssl0.9.8sont deux packages dont vous aurez très probablement besoin très tôt.

Gilles 'SO- arrête d'être méchant'
la source
10

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

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

Oli
la source
2
Exactement, si vous ne réinstallez pas tout, vous pouvez vous attendre à des pannes étranges, des plantages, etc. pendant des mois .
JANC
3

/usr/libcontenait les bibliothèques partagées de, franchement, tout sauf les logiciels critiques au démarrage (c'est ce qui se passe /lib/et les choses que vous n'avez pas installées via le gestionnaire de paquets (généralement /usr/local/lib).

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

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

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

libxapian
libsigc++
apt
libcwidget
libsqlite
libboost-iostreams 

Ces packages contiennent des bibliothèques /usr/libqui aptitudenécessitent de fonctionner. Si vous pouvez trouver les packages dans, /var/cache/apt/archivesvous pouvez les réinstaller manuellement avec dpkg -i <packagename, et une fois qu'ils sont tous installés, aptitude devrait pouvoir s'exécuter.

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

Shadur
la source
1

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

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

RedGrittyBrick
la source
0

Quand j'ai fait quelque chose de similaire, j'ai eu la chance de me rendre compte 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 cela. si vous autorisez l'accès ssh à votre invité virtualbox, vous pouvez utiliser rsync depuis un terminal de votre système principal pour aspirer uniquement les fichiers et les liens manquants. Dans mon cas, il manquait suffisamment de fichiers qu'il était plus facile / plus sûr de copier manuellement à l'aide de scp, donc ce qui suit n'est pas testé (!)

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

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

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

-v est verbeux

Kim SJ
la source