Come reinstallare molti pacchetti rimossi contemporaneamente?


8

Ho usato il sudo apt-get remove pythoncomando e accidentalmente rimosso un mucchio di pacchetti che erano richiesti. Ho effettuato l'accesso tramite riga di comando e ho installato di nuovo Ubuntu Desktop, ma mancano altri pacchetti e sto cercando un modo per reinstallare facilmente quei pacchetti rimossi. Dal momento che esiste il registro presso il centro software, volevo chiedere quale sarebbe il modo più semplice per ripristinare le modifiche o estrarre l'elenco dei pacchetti rimossi dal centro software ...

nota: ho digitato sudo apt-get install .... .... ... ...per circa due dozzine di quei programmi rimossi in quell'elenco, ma quando ho premuto invio non li ho installati perché non è stato possibile trovare alcuni nomi di pacchetti.

I programmi sono stati rimossi alla stessa data.


1
Cerca in/var/log/apt/history.log
Lekensteyn il

Risposte:


16

Prima di tutto, lasciami dire che la rimozione pythonpuò portare a molti comandi fondamentali che non funzionano più. Quindi non so se ciò che segue funzionerà.

In secondo luogo, suppongo che l' package names couldn't be founderrore che hai, derivi da un nome errato nella riga di comando o da un pacchetto installato localmente e non disponibile nei repository.

Quindi, per ottenere un registro dei pacchetti rimossi, relativamente all'ultimo dpkgregistro disponibile (non credo che sia necessario tenere conto dei registri più vecchi):

awk '$3 == "remove" { print $1, $2, $4 }' /var/log/dpkg.log | tee list

Quindi modifica il listfile creato nella directory corrente e lascia solo le righe relative ai pacchetti che desideri reinstallare, in base al timestamp della riga. Supponi di aver salvato il file modificato in list-mod.

Per reinstallare i pacchetti, utilizzare il seguente comando:

sudo apt-get --simulate install $(awk '{ print $3 }' list-mod)

Ho inserito l' --simulateopzione per vedere cosa farebbe il comando. Se è tutto a posto, esegui di nuovo il comando con quell'opzione rimossa.

Se il comando dice che non è possibile trovare alcuni pacchetti, è sufficiente rimuoverli list-mode riprovare.


grazie, sono stato in grado di reinstallare i pacchetti di cui avevo bisogno! Una domanda però, ci sono più di 200 pacchetti rimossi nel registro del software center, ma il file della lista ne aveva circa 150, questo significa che dpkg.log non contiene installazioni automatiche / pacchetti dipendenti? grazie ancora per questa soluzione :)
Logan,

1
Questo file di log contiene tutti installati, aggiornati, rimossi o pacchetto purgata, e con ogni applicazione da dpkga apt-get, aptitude, Synaptic, Software Center, gdebiecc Si può dare un'occhiata a vecchie dpkg.logfile, vedere ls -lrt /var/log/dpkg.log*.
enzotib,

1
@enzotib Ho eseguito uno script per eliminare le vecchie intestazioni di Linux e penso che l'espressione regolare corrispondesse a molti dei pacchetti che non volevo eliminare (molto importanti !!). La tua risposta mi ha salvato da un certo disastro.
Shivisuper,

1
@enzotib Mi hai appena salvato dalla reinstallazione del mio sistema operativo dopo aver eseguito uno script errato. Grazie!
brndn2k,

dice 0 aggiornato, 0 installato, 0 da rimuovere e 50 non aggiornato
James Casia,

2

Quindi, mi capita di fare un errore simile: sudo apt-get purge python3.6*invece di sudo apt-get purge python3.6.*.

Sono stato in grado di risolverlo abbastanza velocemente, con i seguenti passaggi:

  1. Ha aperto il registro vim /var/log/history.log.
  2. Ho cercato il mio comando errato usando il comando vim /python3.6\*.
  3. C'era una riga Purge: unity-control-center-signon:amd64 (0.1.7~+14.04.20140211.2-0ubuntu4), ...con un lungo elenco di pacchetti eliminati (in caso di rimozione inizierà con Remove:), che ho copiato in un altro file senza la Purge:parte per lavorarci.
  4. In quel file ho eseguito il comando vim:, %s/:[^,]*,//gche ha rimosso la parte della versione e mi ha lasciato un elenco di pacchetti unity-control-center-signon lxc ....
  5. Alla fine ho copiato una riga del passaggio precedente e ho eseguito:, sudo apt-get install unity-control-center-signon lxc ...ed è così che è stato risolto.

per me lo era/var/log/apt/history.log
Taylor,
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.