web-dev-qa-db-fra.com

Comment restaurer libz.so.1?

En essayant de résoudre un problème avec Python, j'ai accidentellement effacé mon binaire libz.so.1 en faisant un lien symbolique dessus. Maintenant, un tas de choses, y compris apt-get ne fonctionnera pas. Les dégâts sont limités à juste libz.so.1 (qui indiquait libz.so.1.2.8), donc je devrais pouvoir le réparer en recherchant simplement le fichier binaire x86_64 et en le replaçant à la place, mais tout ce que je peux trouver est la source et ce que je peux ne le faites pas compiler. Je suis sur Xenial. Où puis-je trouver un binaire compilé?

3
bdetweiler

La bonne façon de résoudre ce problème consiste à télécharger manuellement le paquet nécessaire, puis à l'installer ou à l'extraire sur le système. Bien sûr, vous pouvez effectuer de telles actions à partir de LiveCD/LiveUSB.

Comment résoudre de tels problèmes:

  1. Visitez packages.ubuntu.com .
  2. Entrez le nom de fichier manquant dans Recherchez le contenu des packages (dans notre cas, libz.so.1.2.8) en spécifiant la cible Distribution ( xenial dans notre cas) et CPU Architecture (AMD64):

    search options

  3. Cliquez sur Rechercher , il affichera la page des résultats :

    search results

  4. Cliquez ensuite sur le lien zlib1g

  5. Dans la section Download , cliquez sur AMD64:

    download <code>zlib1g</code>

  6. Sur la page ouverte, sélectionnez le miroir le plus proche (copier le lien ou télécharger le fichier deb par navigateur)

    mirror

    wget http://mirrors.kernel.org/ubuntu/pool/main/z/zlib/zlib1g_1.2.8.dfsg-2ubuntu4_AMD64.deb
    
  7. Essayez d'installer le paquet téléchargé sur le système:

    Sudo dpkg -i zlib1g_1.2.8.dfsg-2ubuntu4_AMD64.deb
    

    Si cela ne fonctionne pas - extrayez-le directement dans le système de fichiers:

    Sudo dpkg -x zlib1g_1.2.8.dfsg-2ubuntu4_AMD64.deb /
    
  8. Et bien sûr, réinstallez-le avec APT:

    Sudo apt-get install --reinstall zlib1g
    
5
N0rbert

Une extension de instructions de N0rbert , si vous effectuez cette opération dans une session en direct, , assurez-vous d'extraire le paquet à la racine de votre installation cassée d'Ubuntu , par opposition à la racine de la session en direct elle-même (qui ne résoudra rien et disparaîtra au redémarrage).

À partir du POV de la session en direct, votre installation endommagée sera montée à quelque chose comme /media/ubuntu/ae7r0-9s90s-ejf8d-d9d9f (pas la valeur réelle, mais un long hachage semblable à celui-ci). Vous devrez peut-être y accéder dans l'explorateur de fichiers pour que le dossier apparaisse.

Ainsi, lors de la session en direct, vous extrayez à l'aide d'une commande telle que:

Sudo dpkg -x zlib1g_1.2.8.dfsg-2ubuntu4_AMD64.deb /media/ubuntu/ae7r0-9s90s-ejf8d-d9d9f/

Une fois que le libz.so.1 manquant est restauré dans /media/ubuntu/ae7r0-9s90s-ejf8d-d9d9f/lib/x86_64-linux-gnu/, vous devriez pouvoir redémarrer, exécuter Sudo apt-get install --reinstall zlib1g dans tty1 et redémarrer à nouveau sur un système en fonctionnement.

1
SlugFrisco