Le système Ubuntu est cassé après la désinstallation accidentelle de nombreux packages


20

J'ai accidentellement supprimé tous les packages commençant par le nom jpegavec:

sudo apt-get remove jpeg*

Cela a foiré beaucoup de choses, supprimé Unity, Firefox, Flash Player, etc.

J'ai réussi à récupérer le bureau et l'unité, mais beaucoup de choses sont encore boguées. Par exemple, des .rpmfichiers et .tag.gzne s'ouvriront pas du tout.

Ce que je veux, c'est un moyen de réparer tout ce qui ne va pas. Quelque chose qui équivaut à une «installation de réparation» avec un disque Windows.

Des conseils, quelqu'un?


1
Je recommanderais vraiment une nouvelle installation. Sauvegardez simplement votre / home / (y compris les fichiers invisibles) et insérez-le dans la nouvelle installation.
Paul Woitaschek

Réponses:


35

Vous pouvez installer la ubuntu-desktoptâche:

sudo apt-get install ubuntu-desktop^

Cela installera tous les packages du bureau Ubuntu standard que vous avez supprimé. Il ne restaurera pas les packages que vous avez installés qui ne font pas partie du bureau standard (c'est-à-dire qu'il réinstalle Unity et Firefox, mais pas Flash Player).

Pour installer ces packages, vous pouvez regarder /var/log/apt/history.loget voir exactement ce que vous avez supprimé.

Remarque: l' installation de la ubuntu-desktop^ tâche n'est pas la même chose que l'installation du ubuntu-desktop package . Le premier donnera à APT quelques conseils pour résoudre les dépendances impliquant des packages virtuels, le second donnera à APT la liberté de choisir des packages (et finira par installer des trucs inutiles comme ubiquity).

Pourquoi le problème s'est-il produit? apt-get remove jpeg*ne pas supprimer tous les paquets en commençant par jpeg. Il supprimera à la place tous les packages contenant jpeleur nom. En effet, apt-get fonctionne avec une expression régulière, de sorte que jpeg * signifie: tout ce qui contient jpe suivi de zéro ou plusieurs g .


1
Bonne idée, je n'y avais pas pensé. Je serai intéressé de voir si cela fonctionnera ici!
Eliah Kagan

@EliahKagan: J'ai testé dans un chroot. Les packages jpeg * n'affectent que certaines applications graphiques, donc les «ingrédients» nécessaires (c'est-à-dire NetworkManager pour la connectivité Internet, APT, les émulateurs de terminaux, etc.) sont toujours sur le système OP.
Andrea Corbellini

@EliahKagan: bien sûr, j'ai fait l'hypothèse (non évidente) que l'OP n'a rien supprimé d'autre.
Andrea Corbellini

2
Veuillez inclure un avertissement à ne jamais utiliser taskselpour supprimer une tâche - voir nasty tasksel-bug
guntbert

1
@Attilio: J'ai expliqué la différence dans la réponse. Voir "Remarque: l'installation de la tâche ubuntu-desktop ^ n'est pas la même chose que l'installation du package ubuntu-desktop ..."
Andrea Corbellini

8

La meilleure façon de résoudre ce problème peut être de réinstaller Ubuntu. (Vous devez d'abord sauvegarder vos documents, même si vous prévoyez de réinstaller sans reformater.)

Si vous voulez essayer de réparer le système en place, consultez les fichiers journaux du gestionnaire de packages pour voir quels packages ont été supprimés et réinstallez-les:

  • /var/log/dpkg.log (informations complètes, mais difficiles à lire)
  • /var/log/apt/history.log (abrégé par vous indiquera chaque paquet supprimé ou autrement modifié - probablement votre meilleur pari)
  • /var/log/apt/term.log(si vous avez supprimé les packages apt-getdans le terminal, cela devrait montrer ce que vous avez vu à ce moment-là, y compris les listes des packages qui seront supprimés - donc cela pourrait être le meilleur moyen)

Réinstaller uniquement les packages dont le nom commence par jpegne fonctionnera pas, car la plupart (presque certainement la plupart) des packages qui ont été supprimés ont été supprimés car ils dépendaient de ces packages.

À l'avenir , je recommande de vérifier attentivement les conséquences de la désinstallation d'un package. Si vous travaillez à partir de la ligne de commande, vous serez toujours informé. (Sauf si vous utilisez l' -yoption, auquel cas, généralement pas. Je vous déconseille d'utiliser cette option à moins que vous sachiez ce que vous faites, en particulier pour les suppressions.)

Une façon de vérifier les conséquences d'une opération de gestion de paquets effectuée avec apt-get, sans risquer que cela se produise, est d'exécuter apt-get -sau lieu de sudo apt-get. Cela simule simplement l'action spécifiée et signale les packages qui seraient affectés en conséquence et comment.


1

Je fonctionne sudo apt-get purge wine*sur Ubuntu 15.10, donc pas d'interface graphique au démarrage uniquement sur l'option de connexion au terminal.

Comme Eliah Kagan l'a suggéré, j'ai utilisé des informations provenant de l' /var/log/apt/history.log exécution de nano sur history.log et créé un script simple qui contenait sudo apt-get installtous les packages purgés que j'ai trouvés à la ligne:

Purge: evolution:amd64 (3.16.5-1ubuntu3.1), libtotem-plparser18:amd64 (3.10.5-1) ...... etc

Mais j'ai d'abord dû supprimer manuellement le texte entre tous: et, y compris le:,

à cette étape, un nouveau script serait utile car les packages étaient des centaines. après cela, j'ai exécuté le script et en ai retiré quelques-uns Unable to locate packages(que j'avais installés manuellement). réexécutez le script et c'est tout. Tout fonctionne bien ... heureusement


0

Installez le paquet ubuntu-desktopInstaller ubuntu-desktop

sudo apt-get update && sudo apt-get install ubuntu-desktop

Il installera les packages nécessaires pour votre système.


cela échoue pour moi car les dépendances d'ubuntu-desktop ne sont pas installées.
kevinkayaks

0

J'ai accidentellement retiré libssl1.0.0et ma machine a été paralysée. Pour restaurer, j'ai fait:

  1. Sauvegardez les journaux de ce qui a été supprimé cp /var/log/apt/term.log ~/libssl.term.log
  2. Supprimez les lignes sans rapport avec l'action libssl vi ~/libssl.term.log
  3. Si la mise en réseau est manquante (impossible ping google.com), redémarrez en mode de récupération et activez la mise en réseau
  4. Réinstaller les packages supprimés cat ~/libssl.term.log | grep ^Removing | sed -e 's/^Removing //g;s/ (.*$//g;/diversion of/d;/dangling symlinks/d' | xargs sudo apt-get -y install

0

Voici un petit script python où vous pouvez écrire la chaîne de package (inutilisable) à partir de votre désinstallation en masse activée /var/log/apt/history.log. Il affichera une chaîne que vous pouvez copier coller dans la commande apt-get install afin d'installer facilement tous les packages supprimés.

import re

apt_str = u"INSERT YOUR PACKAGE STRING HERE, BETWEEN THE QUOTES"

match =  re.findall(r'([\w\d\.-]+).+? \(.+?\)', apt_str)
print " ".join(match)

Des virgules? Voulez-vous dire des citations?
wjandrea

@wjandrea Oui, je veux dire des citations
joaoroque
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.