Come eliminare i pacchetti rotti in Ubuntu


38

Non riesco a rimuovere il pacchetto rotto. Usa il seguente comando: sudo apt-get -f install ma ottengo la seguente risposta:

Preparing to unpack .../nodejs_0.10.28-1chl1~trusty1_amd64.deb ...
Unpacking nodejs (0.10.28-1chl1~trusty1) over (0.10.25~dfsg2-2ubuntu1) ...
dpkg: error processing archive /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb (--unpack):
 trying to overwrite '/usr/share/man/man1/node.1.gz', which is also in package nodejs-legacy 0.10.25~dfsg2-2ubuntu1
dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
Processing triggers for man-db (2.6.7.1-1) ...
Errors were encountered while processing:
 /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

Ho provato vari comandi come

 2015  sudo apt-get clean
 2020  sudo dpkg --configure -a
 2023  sudo apt-get autoremove
 2034  sudo apt-get upgrade && sudo apt-get -f install

Ma non ho ottenuto alcun risultato. Non riesco a installare Synaptic. Qualche idea su come posso rimuovere il pacchetto rotto?


Qui alcune risposte hanno suggerito --force-remove-reinstreqe --force-overwrite. Nota che dovresti usare questi due (specialmente il primo) solo se sei un esperto di Linux, perché può rompere completamente il tuo sistema.
g_p,

Risposte:


55

eseguire questo comando per rimuovere i pacchetti rotti in Ubuntu.

sudo dpkg --remove --force-remove-reinstreq package_name 

dopo aver rimosso il pacchetto aggiorna il tuo sistema con il comando

sudo apt-get update

riavviare il sistema dopo l'aggiornamento corretto.


5
Questo comando dovrebbe essere sempre evitato in quanto rompe il sistema più di quanto ripari
rancho

2
@rancho dipende dal pacchetto.
Filippo,

bella, il modo in cui Gus nome_pacchetto sempre scrivere, eppure vedo un elenco di 900 linee in un formato folle, per esempio: Broken libopencv-highgui2.4v5:amd64 Conflicts on libopencv-highgui2.4 [ amd64 ] < 2.4.8+dfsg1-2ubuntu1 > ( libs ). l'attesa su LTS mi ha davvero fatto questo trucco folle.
Nyxee,

@rancho "rompe il tuo sistema più di quanto ripari" puoi elaborare? man dpkgnon aiuta molto.
Stéphane Gourichon

Questa è stata l'unica cosa che ha funzionato per me. Ho rotto il mio mysql durante l'aggiornamento del pacchetto. Ora non è possibile eliminare o reinstallare. Quindi questo mi ha salvato la vita.
Ankit Singhaniya,

11

Apri il tuo terminale e usa il seguente comando

sudo dpkg --purge nodejs-legacy
sudo apt-get install -f

Dovrebbe risolvere il tuo problema.


11

Ho scoperto che:

sudo dpkg --remove --force-remove-reinstreq <packagename>

Funziona meglio. Se ti dà un errore che non rimuoverà un pacchetto perché dipende da un altro pacchetto, rimuovi anche quell'altro pacchetto. Dovrai ripetere questo passaggio più volte e quindi reinstallare i pacchetti eliminati.

L force-remove-reinstreq'"opzione nucleare" è quella di eliminare un pacchetto. Fallisce solo se esiste un altro pacchetto a seconda di quello che stai per eliminare - Anche in questo caso, anche il pacchetto dipendente ha eliminato.


L'opzione nucleare ha funzionato dove spurga, pulisce, reinstalla, si muove automaticamente, tramite entrambi dpkge apt-getfallisce. Grazie.
LAFK dice di reintegrare Monica il

Questa è la soluzione migliore se si desidera semplicemente cancellare tutto e ricominciare. Mi hai risparmiato un sacco di tempo! (Ho anche usato --purge after --remove)
andersevenrud il

per favore, puoi dare qualche suggerimento su come riempirlo package_namequando abbiamo più di 1000 righe (alcuni duplicati) nei file di registro apt ..
nyxee

4

Questo risolto il mio problema:

sudo dpkg -i --force-overwrite /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb

Quindi, per favore, contrassegnalo come la risposta corretta allora.
jarno,

Funziona perfettamente.
Shubham Patel,

3

Apri il tuo terminale e incolla queste righe dopo riga

sudo rm -rf  /var/cache/apt/archives/nodejs_0.10.28-1chl1~trusty1_amd64.deb
sudo apt-get autoclean
sudo apt-get update
sudo apt-get upgrade

quindi riprovare


2

Lo stesso errore si ripete Se lo facciamo apt-get cleane, a apt-get -f installmeno che non rimuoviamo i dati spazzatura dal /var/lib/dpkg/statusfile in Ubuntu.

Supponiamo di dover rimuovere il pacchetto rotto di apache. Inizialmente dobbiamo aprire il file di stato e cercare il pacchetto apache. Rimuovere l'intera descrizione del pacchetto e salvare il file di stato. Quindi prova a usare apt-get -f installe apt-get clean.


2

nulla di quanto sopra ha funzionato per me. alla fine ho modificato il file / var / lib / dpkg / status e rimosso i pacchetti da lì.

Difficile non consiglierei di farlo, solo se qualcos'altro fallisce ...


Questa sembra essere l'unica cosa che ha funzionato per me. Persino la cosiddetta "opzione nucleare" di --force-remove-reinstreq non ha potuto eliminare il pacchetto offensivo. Grazie Signore.
alex

1

Nessuna delle precedenti ha funzionato per me

Ho usato sudo aptitude.

Ha trovato immediatamente l'errore e ha offerto opzioni. Si seleziona e lo risolve.


ho anche risolto il problema con Debian: questa era l'unica soluzione funzionante per me. Nessuno dei commenti precedenti ha funzionato per me! Grazie!
Hirbod,

0

Eccone uno:

aggiorna il tuo elenco di pacchetti in questo modo

 sudo apt-get update

quindi ripulire eventuali pacchetti parziali

 sudo apt-get autoclean

Ora pulisci la cache apt

 sudo apt-get clean

Ora rimuovi eventuali dipendenze non necessarie

 sudo apt-get autoremove

dal comando sopra, è possibile identificare eventuali pacchetti rotti e rimuoverlo forzatamente in questo modo

 sudo dpkg --remove --force-remove-reinstreq package_name

Finalmente mopup qualsiasi altro pacchetto con dipendenze

 sudo apt-get -f install 

Dimmi come va


Penso che questo comando sia errato: `sudo dpkg --remove -force --force-remove-reinstreq nome_pacchetto.
Juan Simón,

Ji ... quindi qual è il modo corretto?
Olu Smith,

0
  1. interrogare tutti i pacchetti installati oggi o ieri awk -v foo=$(date '+%Y-%m-%d') -v bar=$(date -d "yesterday" '+%Y-%m-%d') '($1==foo || $1==bar) && $3~/^install$/ { print $4 }' /var/log/dpkg.log
  2. wine-qqintl: i386 ha causato il problema, quindi rimuovo il pacchetto sudo dpkg -r wine-qqintl:i386

  3. fatto.


1
ok, possiamo ottenere pacchetti installati di recente in questo modo, ma questo non risponde alla domanda che chiede come rimuovere i pacchetti rotti
Zanna

0

Ho avuto un problema con il pacchetto kodi rotto. Ho aperto il gestore di pacchetti sinaptici e ho usato il filtro "rotto" per individuare il pacchetto e contrassegnato per la rimozione completa. Ha lavorato come un campione.

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.