Il sistema Ubuntu si interrompe dopo aver disinstallato accidentalmente molti pacchetti


20

Ho rimosso per errore tutti i pacchetti che iniziano con il nome jpegcon:

sudo apt-get remove jpeg*

Questo ha rovinato molte cose, rimosso Unity, Firefox, Flash player ecc.

In qualche modo sono riuscito a ripristinare il desktop e l'unità, ma poi molte cose sono ancora difettose. Ad esempio i .rpmfile e .tag.gzsemplicemente non si aprirà affatto.

Quello che voglio è un modo per sistemare tutto ciò che non va. Qualcosa che equivale a una 'installazione di riparazione' con un disco di Windows.

Qualche consiglio, qualcuno?


1
Consiglierei davvero una nuova installazione. Basta eseguire il backup di / home / (compresi i file invisibili) e inserirlo nella nuova installazione.
Paul Woitaschek,

Risposte:


35

È possibile installare l' ubuntu-desktopattività:

sudo apt-get install ubuntu-desktop^

Ciò installerà tutti i pacchetti del desktop Ubuntu standard che hai rimosso. Non ripristinerà i pacchetti che hai installato che non fanno parte del desktop standard (ad esempio reinstallerà Unity e Firefox, ma non Flash Player).

Per installare quei pacchetti, puoi esaminare /var/log/apt/history.loge vedere esattamente cosa hai rimosso.

Nota: l' installazione ubuntu-desktop^ dell'attività non è la stessa dell'installazione del ubuntu-desktop pacchetto . Il primo darà ad APT alcuni suggerimenti per risolvere le dipendenze che coinvolgono i pacchetti virtuali, il secondo darà ad APT la libertà di scegliere i pacchetti (e finirà per installare cose inutili come ubiquity).

Perché si è verificato il problema? apt-get remove jpeg*sarà non rimuovere tutti i pacchetti iniziano jpeg. Rimuoverà invece tutti i pacchetti che contengono jpenel loro nome. Questo perché apt-get funziona con un'espressione regolare, quindi jpeg * significa: tutto ciò che contiene jpe seguito da zero o più g .


1
Buona idea, non ci avevo pensato. Sarò interessato a vedere se funzionerà qui!
Eliah Kagan,

@EliahKagan: l'ho testato in un chroot. I pacchetti jpeg * riguardano solo alcune applicazioni grafiche, quindi gli 'ingredienti' necessari (ad es. NetworkManager per la connettività Internet, APT, emulatori di terminali e così via) sono ancora sul sistema OP.
Andrea Corbellini,

@EliahKagan: certo, ho fatto il presupposto (non ovvio) che l'OP non ha rimosso nient'altro.
Andrea Corbellini,

2
Si prega di includere un avviso per non utilizzare maitasksel per rimuovere un'attività - vedere brutto taskel-bug
guntbert

1
@Attilio: ho spiegato la differenza nella risposta. Vedi "Nota: l'installazione dell'attività ubuntu-desktop ^ non è la stessa dell'installazione del pacchetto ubuntu-desktop ..."
Andrea Corbellini,

8

Il modo migliore per risolvere questo problema potrebbe essere reinstallare Ubuntu. (È necessario prima eseguire il backup dei documenti, anche se si prevede di reinstallare senza riformattare.)

Se si desidera provare a riparare il sistema in posizione, quindi guardare i file di registro del gestore pacchetti per vedere quali pacchetti sono stati rimossi e reinstallarli:

  • /var/log/dpkg.log (informazioni complete, ma difficile da leggere)
  • /var/log/apt/history.log (abbreviato da ti dirà ogni pacchetto rimosso o altrimenti modificato - probabilmente la tua scommessa migliore)
  • /var/log/apt/term.log(se hai rimosso i pacchetti con apt-getnel terminale, questo dovrebbe mostrare ciò che hai visto allora, inclusi gli elenchi di quali pacchetti sarebbero stati rimossi - quindi questo potrebbe essere il modo migliore)

La reinstallazione di soli pacchetti i cui nomi iniziano con jpegnon funzionerà, perché molti (quasi certamente la maggior parte) dei pacchetti che sono stati rimossi sono stati rimossi perché si basavano su quei pacchetti.

In futuro , raccomando di controllare attentamente le conseguenze della disinstallazione di un pacchetto. Se lavori dalla riga di comando, riceverai sempre una notifica. (A meno che tu non usi l' -yopzione, nel qual caso, di solito no. Ti sconsiglio di usare quell'opzione a meno che tu non sappia cosa stai facendo, specialmente per le rimozioni.)

Un modo per verificare le conseguenze di un'operazione di gestione dei pacchetti eseguita con apt-get, senza rischiare che si verifichino, è eseguire apt-get -sinvece di sudo apt-get. Questo semplicemente simula l'azione specificata e riporta quali pacchetti sarebbero interessati di conseguenza e come.


1

Corro sudo apt-get purge wine*su Ubuntu 15.10, quindi nessuna interfaccia grafica all'avvio è solo l'opzione di accesso al terminale.

Come ha suggerito Eliah Kagan, ho usato le informazioni di /var/log/apt/history.log Run Nano su history.log e ho creato un semplice script che conteneva sudo apt-get installtutti i pacchetti eliminati che ho trovato alla riga:

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

Ma prima ho dovuto rimuovere manualmente il testo tra all: e, incluso il:,

a questo punto un nuovo script sarebbe utile perché i pacchetti erano centinaia. successivamente eseguo lo script e ne rimuovo alcuni Unable to locate packages(che avevo installato manualmente). esegui di nuovo lo script e il gioco è fatto. Tutto funziona bene ... per fortuna


0

Installa il pacchetto ubuntu-desktopInstalla ubuntu-desktop

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

Installerà i pacchetti necessari per il tuo sistema.


questo per me non riesce poiché le dipendenze di Ubuntu-Desktop non sono installate.
kevinkayaks

0

Ho rimosso accidentalmente libssl1.0.0e la mia macchina è stata paralizzata. Per ripristinare, ho fatto:

  1. Eseguire il backup dei registri di ciò che è stato rimosso cp /var/log/apt/term.log ~/libssl.term.log
  2. Elimina le righe non correlate all'azione libssl vi ~/libssl.term.log
  3. Se manca la rete (impossibile ping google.com), riavviare in modalità di ripristino e abilitare la rete
  4. Reinstalla i pacchetti rimossi 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

Ecco un piccolo script Python in cui è possibile scrivere la stringa (inutilizzabile) del pacchetto dalla disinstallazione di massa attiva /var/log/apt/history.log. Verrà emessa una stringa che è possibile copiare incolla nel comando apt-get install per installare facilmente tutti i pacchetti rimossi.

import re

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

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

Le virgole? Intendi le citazioni?
wjandrea,

@wjandrea Sì, intendo le citazioni
joaoroque,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.