Linux: Come usare dpkg per riparare apt quando si rompe?

Contenuti

Bash Shell

Hai mai rotto apt?? Per professionisti esperti di Linux, è abbastanza comune (circa ogni semestre) pagliaccetto adatto. Se conosci alcuni comandi in dpkg, Spesso puoi risolvere il problema più facilmente! Scopri come.

Quali sono in forma e dpkg?

Se stai usando una distribuzione basata su Debian come Ubuntu o Mint, il tuo computer usa in forma per gestire i pacchi. Apt significa Strumento di imballaggio avanzato, che ti permette di installare, disinstallare, eliminare e gestire i pacchetti Debian.

allo stesso tempo apt (utilizzato sulla riga di comando), il tuo computer probabilmente ha un gestore di pacchetti desktop di alto livello / generale, che usa semplicemente apt, o forse dpkg, sullo sfondo.

Il gestore di pacchetti Debian dpkg è un'alternativa alla gestione dei pacchetti su installazioni basate su Debian. È un livello molto più basso di apt, cosa ti dà più libertà, ma presenta anche un rischio maggiore di rompere le cose.

Ecco perché (a meno che tu non sia un ingegnere DevOps esperto) Ti consiglio di usare apt sempre, aumentandolo con dpkg appena ho problemi.

L'adozione di questo approccio graduale ti offre il meglio di entrambi i mondi.: la stabilità e la facilità d'uso del apt gestore di pacchetti, con la potenza e la granularità di dpkg Gestore di pacchetti Debian, una volta che ne hai bisogno.

Diciamo, come esempio, hai un pacchetto che hai appena installato, che in qualche modo ha finito per rompere il apt. oh, può essere, l'installazione di un pacchetto è stata interrotta accidentalmente.

Qualunque sia la causa, apt ora è considerato rotto, e hai già provato cose come sudo apt update --fix-missing e sudo apt install --fix-broken invano. Se è così, poi …

benvenuto a dpkg

Quando tu apt è rotto, Non è divertente. sì Veramente dentro, è ancora meno divertente. Anche se qualcuno sa cosa sta facendo, a volte ci vuole un certo livello di arte, E sicuramente, capacità, per riparare un sistema di imballaggio rotto.

Il termine “arte” è abbastanza applicabile, poiché hai un'idea o una sensazione mentre esegui vari passaggi per la risoluzione dei problemi, soprattutto se l'hai fatto tante volte, se qualcosa funzionerà o meno durante un riavvio.

Il rischio è sempre che il sistema di imballaggio sia così danneggiato che, se ricominci, la tua istanza Linux potrebbe non riapparire ed è necessaria una risoluzione dei problemi aggiuntiva e potenzialmente ancora più complessa.

Vorrei dire a questo punto che tutto questo può essere facilmente evitato eseguendo alcuni semplici comandi, ma sfortunatamente, Questo non è il caso. Il fatto è che più ne sai, più facile sarà risolverlo e più sicuro avrai di sapere se sei pronto per riavviare il sistema o meno.

Ecco dove arriviamo dpkg. il dpkg Il programma ci consente un controllo molto più granulare su tutti i pacchetti installati, E anche quando c'è un rischio maggiore che qualcosa vada storto, inoltre c'è molto più potere per cambiare un sistema esattamente come vogliamo noi. tuffiamoci.

Se sei interessato a Linux in generale, puoi anche leggere la nostra serie Bash Automation in tre parti & Scripting.

Basico dpkg Uso

Possiamo vedere i pacchetti oggi nel sistema semplicemente eseguendo dpkg -l. Poiché è probabile che l'output sia molto dettagliato (anche quando è regolarmente impaginato), puoi usare a grep per limitare i risultati.

dpkg -l | testa -n5 && dpkg -l | grep 'gnome-calculator'
dpkg -l | grep 'calcolatrice di gnomi'

La nostra prima esecuzione di dpkg

Il primo comando è in realtà una combinazione di due comandi (divisi da &&, che letteralmente significa: esegui il secondo comando solo se il primo ha successo).

Nel primo di questi due comandi, prendiamo le prime cinque righe (usando un tubo | e head -n5), e successivamente, nel secondo comando, cerchiamo di elencare l'output che stiamo cercando. Per questo caso, stiamo cercando il testo gnome-calculator.

La linea / il comando secondario sotto mostra una versione che useremmo regolarmente. Una volta che qualcuno ha familiarità con la sintassi di dpkg Uscita, le prime cinque righe generalmente non sono necessarie. Notare che la prima colonna si riferisce a (visivamente) Desired=, con la seconda colonna riferita a Status=, e la terza colonna per Err?=. Se segui visivamente le linee, vedrai come si connettono velocemente.

come il nostro gnome-calculator installato con successo senza errori correnti, non c'è il codice della terza colonna sotto Err?=. Inoltre notiamo qui che uppercase=badè scritto nelle brevi informazioni relative alla terza colonna. Come affermato in precedenza, nel nostro caso, è vuoto.

La prima colonna mostra lo stato desiderato e la seconda colonna mostra lo stato corrente. Entrambi sono mostrati come i (Install[ed] e Inst[alled] rispettivamente, e questo (ii) è la sequenza più comune che (vorrò) guarda. Significa semplicemente che everything is fine, that the package is installed, and that there are no issues.

Nota anche che, nelle descrizioni delle colonne tra parentesi, la lettera maiuscola indica la connessione tra qualsiasi lettera fattibile vista e il relativo termine. Come esempio, considera come f si riferisce a halF-conf, indicando le lettere maiuscole F nello stesso.

Diamo ora un'occhiata a un altro output da confrontare. Questa volta, lasceremo le prime cinque righe e potrai abituarti un po' di più a leggere il risultato anche senza le intestazioni.

dpkg -l | grep 'benvenuto'

dpkg -l |  output grep 'mintwelcome'

Qui vediamo l'interessante risultato di rc, dove ii era per lui gnome-calculator. Se stai cercando il r nel primo Desired= descrizione della colonna che abbiamo visto sopra, puoi vedere cosa significa? Remove[d], lancio c nella seconda colonna rappresenta Conf-files.

Cane! Questo (mintwelcome, un pacchetto di benvenuto a Mint) è un pacchetto che abbiamo disinstallato qualche volta, ma i file di configurazione dello stesso rimangono. epuriamolo!

dpkg --purge 'mintwelcome'
sudo dpkg --purge 'mintwelcome'
dpkg -l | grep 'benvenuto'

Eliminazione dei file di configurazione 'mintwelcome' con dpkg

Nota che puoi anche usare il -P stenografia invece di usare --purge.

Nel primo comando, possiamo provare a eliminare mintwelcome senza uso sudo. Nonostante questo, questo non funzionerà. Hai bisogno dei privilegi di superutente / livello di root da disinstallare (o installa o sanguina) Pacchetti. Possiamo correre di nuovo usando sudo, e il nostro pacchetto verrà eliminato.

Nota che il termine epurazione è usato da entrambi apt così come da dpkg per indicare che vogliamo assolutamente eliminare un pacchetto invece di disinstallarlo semplicemente, cosa lascerà i file di configurazione.

Assicurarsi

Confido che inizi ad apprezzare il potere, il controllo e la granularità che dpkg può fornirti quando gestisci i pacchetti nella tua distribuzione basata su Debian, come Ubuntu il, per questo caso, menta. Sarebbe facile, come esempio, cerca i resti dei file di configurazione del pacchetto precedentemente disinstallati semplicemente eseguendo:

dpkg -l | grep '^ rc'

Dpkg che elenca l'output per i comuni file di configurazione javascript

Prima di rimuovere uno di questi file di configurazione, ti consigliamo di assicurarti doppiamente che non ci siano pacchetti installati con un nome equivalente. Come esempio, per questo caso, possiamo correre:

dpkg -l | grep 'javascript'

dpkg -l |  grep output 'javascript'

Nota come rimuoviamo la seconda parte di 'javascript-common' Cercare 'javascript'.

È sicuro eliminarlo o no?? Puoi vedere come un grande potere implica una grande responsabilità, come sempre nella vita. La decisione di rimuoverlo o meno è tua. Generalmente, ci sono tre cose che dovresti sempre tenere a mente quando lavori dpkg:

In primo luogo, vorrà verificare, doppio controllo e triplo controllo per essere sicuri. Come esempio, nella prima uscita sopra, Potevamo andare avanti ed eliminare con nonchalance javascript-common senza controllare se c'erano altri pacchetti Javascript sul sistema.

È stata la migliore linea d'azione?? Forse, ma il livello di garanzia / la fiducia è sicuramente diminuita non appena abbiamo fatto il nostro primo controllo, poiché ci sono sicuramente altri pacchetti Javascript sul sistema.

Allo stesso tempo, nota che non c'è davvero nulla di rotto qui. Va bene lasciare i file di configurazione per questo pacchetto apparentemente rimosso. Il vecchio adagio "Se non è rotto, non aggiustarlo "sembrerebbe certamente applicabile a questo caso. Buono da tenere a mente quando si utilizza dpkg.

al secondo posto, è fondamentale ricordarlo apt è un gestore di pacchetti che mantiene tutte le connessioni (In altre parole, versioni e dipendenze) tra i pacchetti in mente durante l'installazione, disinstallare o eseguire il debug dei pacchetti.

Questo non è il caso di dpkg, che è molto più basato sui pacchetti. C'è più granularità, ma anche più rischio di rompere le cose. Se un pacchetto è basato su un altro o su una libreria, qualcuno romperà sicuramente le cose semplicemente disinstallando il pacchetto principale usando dpkg.

Al terzo posto, la maggior parte dei pacchetti Linux ha Molti dipendenze. Perché, non è consigliabile utilizzare semplicemente dpkg per la gestione dei pacchetti standard, ribadendo il nostro consiglio originale da usare apt predefinito e cambia in dpkg quando necessario.

Rimuovere / disinstallare un pacchetto invece di eliminarlo (In altre parole, lascia i file di configurazione), puoi usare il --remove (oh -r) opzione a dpkg. Per verificare un pacchetto, utilizzo --verify (oh -V). il --audit (oh -C) rispetto a un pacchetto controlla la consistenza e l'integrità del database per il pacchetto (o per tutti i pacchetti se non è specificato alcun pacchetto).

Per ulteriori opzioni, vedere man dpkg corri dal tuo terminale. Inoltre ci sono comandi specifici e più complessi che possono essere usati per vari problemi del sistema di confezionamento.. Per questo, In generale, è meglio utilizzare il tuo motore di ricerca preferito per il problema o la situazione specifica che si osserva nel momento in cui si verifica. Spesso, qualcun altro lo ha già incontrato e ha documentato i dettagli. Se scopri qualcosa di nuovo, prenditi qualche minuto per pubblicare i tuoi risultati in un forum pertinente o in un thread di discussione.

Fine

In questo post, abbiamo iniziato ad esplorare dpkg e come puoi aiutarci con la gestione granulare dei pacchetti, a differenza di apt, che gestirà i pacchetti e tutte le loro dipendenze. Ricordare, in queste situazioni complesse debug di problemi di gestione dei pacchetti, un grande potere implica una grande responsabilità.

Abbiamo anche visto come adottare un approccio più avverso al rischio, rendendoci conto che il debugging approfondito della gestione dei pacchetti è equivalente all'arte, e meglio un pittore è, più successo è la pittura; ehm, la ripartenza sarà.

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.