Ricerca nel sito web

Come installare e utilizzare 'yum-utils' per mantenere Yum e migliorarne le prestazioni


Indipendentemente dal fatto che Fedora inizi ad adottare dnf come nuovo gestore di pacchetti e libreria di gestione dei pacchetti predefinita, non sostituirà definitivamente il buon vecchio gestore di pacchetti yum in altre distribuzioni derivate (come Red Hat Enterprise Linux (RHEL) e CentOS) fino a quando non si è dimostrato affidabile quanto yum e più solido (secondo il Fedora Project wiki, al 15 novembre, 2015, dnf è ancora in uno stato testabile). Pertanto, le tue capacità di gestione del cibo ti saranno utili ancora per un bel po' di tempo.

Per questo motivo, in questa guida ti presenteremo yum-utils, una raccolta di utilità che si integrano con yum per estendere le sue funzionalità native in diversi modi, rendendolo così più potente e più facile da usare.

Installazione di yum-utils in RHEL/CentOS

Yum-utils è incluso nel repository di base (che è abilitato per impostazione predefinita), quindi installarlo in qualsiasi distribuzione basata su Fedora è facile come fare:

yum update && yum install yum-utils

Tutte le utilità fornite da yum-utils vengono installate automaticamente con il pacchetto principale, che descriveremo nella sezione successiva.

Esplora le utilità fornite dal pacchetto yum-utils

Gli strumenti forniti da yum-utils sono elencati nella sua pagina man:

man yum-utils

Ecco 10 di quelle yum utilità che pensavamo ti avrebbero interessato:

1. Debug di un pacchetto

debuginfo-install installa i pacchetti debuginfo (e le relative dipendenze) necessari per eseguire il debug di in caso di arresto anomalo o durante lo sviluppo di applicazioni che utilizzano un determinato pacchetto.

Per eseguire il debug di un pacchetto (o di qualsiasi altro eseguibile), dovremo anche installare gdb (il debugger GNU) e usarlo per avviare un programma in modalità debug.

Per esempio:

gdb $(which postfix)

Il comando precedente avvierà una shell gdb in cui possiamo digitare le azioni da eseguire. Ad esempio, run (come mostrato nell'immagine seguente) avvierà il programma, mentre bt (non mostrato) visualizzerà lo stack trace (noto anche come backtrace ) del programma, che fornirà un elenco di chiamate di funzione che hanno portato a un certo punto dell'esecuzione del programma (utilizzando queste informazioni, sia gli sviluppatori che gli amministratori di sistema possono capire cosa è andato storto in caso di arresto anomalo).

Altre azioni disponibili e i relativi risultati attesi sono elencati in man gdb.

2. Trova il repository dei pacchetti installati

Il seguente comando mostra da quale repository sono stati installati i pacchetti attualmente installati :

find-repos-of-install httpd postfix dovecot

Se eseguito senza argomenti, find-repos-of-install restituirà l'intero elenco dei pacchetti attualmente installati.

3. Rimuovere i pacchetti duplicati o orfani

package-cleanup gestisce la pulizia dei pacchetti, i duplicati, i pacchetti orfani (programmi installati da una fonte diversa dai repository attualmente configurati) e altre incoerenze delle dipendenze, inclusa la rimozione dei vecchi kernel come mostrato nel seguente esempio:

package-cleanup --orphans
package-cleanup --oldkernels

Non devi preoccuparti che l'ultimo comando danneggi il tuo kernel. Interesserà solo i vecchi pacchetti del kernel (versioni precedenti a quella attualmente in esecuzione) che non sono più necessari.

4. Scopri l'elenco delle dipendenze del pacchetto

repo-graph restituisce un elenco completo delle dipendenze dei pacchetti in formato punto per tutti i pacchetti disponibili dai repository configurati. In alternativa, repo-graph può restituire le stesse informazioni per repository se utilizzato con l'opzione --repoid=.

Ad esempio, visualizziamo le dipendenze per ciascun pacchetto nel repository degli aggiornamenti:

repo-graph --repoid=updates | less

Nel comando precedente inviamo l'output di repo-graph a less per una visualizzazione più semplice, ma in alternativa puoi reindirizzarlo a un file locale per un controllo successivo:

repo-graph --repoid=updates > updates-dependencies.txt

In entrambi i casi, possiamo vedere che il pacchetto iputils dipende da systemd e openssl-libs.

5. Controlla l'elenco delle dipendenze non risolte

repoclosure legge i metadati dei repository configurati, controlla le dipendenze dei pacchetti inclusi in essi e visualizza l'elenco delle dipendenze non risolte per ciascun pacchetto:

repoclosure

6. Come controllare i pacchetti più nuovi o più vecchi in una directory

repomanage interroga una directory con pacchetti rpm e restituisce un elenco dei pacchetti più recenti o meno recenti in una directory. Questo strumento può tornare utile se hai una directory in cui memorizzi diversi pacchetti .rpm di programmi diversi.

Se eseguito senza argomenti, repomanage restituisce i pacchetti più recenti. Se eseguito con il flag --old, restituirà i pacchetti più vecchi:

ls -l
cd rpms
ls -l rpms
repomanage rpms

Tieni presente che cambiare il nome dei pacchetti RPM NON influenzerà il funzionamento di repomanage.

7. Interrogare i repository Yum per ottenere informazioni sul pacchetto

repoquery interroga i repository yum e ottiene informazioni aggiuntive sui pacchetti, indipendentemente dal fatto che siano installati o meno (dipendenze, file inclusi nel pacchetto e altro).

Ad esempio, htop (Linux Process Monitoring) non è attualmente installato su questo sistema, come puoi vedere di seguito:

which htop
rpm -qa | grep htop

Supponiamo ora di voler elencare le dipendenze di htop, insieme ai file inclusi in un'installazione predefinita. Per fare ciò, eseguire rispettivamente i due comandi seguenti:

repoquery --requires htop
repoquery --list htop

8. Scarica tutti i pacchetti RPM installati nel file zip

yum-debug-dump ti consente di scaricare un elenco completo di tutti i pacchetti che hai installato, tutti i pacchetti disponibili in qualsiasi repository, configurazione importante e informazioni di sistema in un file zippato.

Questo può tornare utile nel caso in cui desideri eseguire il debug di un problema che si è verificato. Per nostra comodità, yum-debug-dump nomina il file come yum_debug_dump--, che ci consente di tenere traccia delle modifiche nel tempo .

yum-debug-dump

Come con qualsiasi file di testo compresso, possiamo visualizzarne il contenuto utilizzando il comando zless:

zless yum_debug_dump-mail.linuxnewz.com-2015-11-27_08:34:01.txt.gz

Se hai bisogno di ripristinare le informazioni di configurazione fornite da yum-debug-dump, puoi utilizzare yum-debug-restore per farlo:

yum-debug-restore yum_debug_dump-mail.linuxnewz.com-2015-11-27_08:34:01.txt.gz

9. Download degli RPM di origine dai repository Yum

yumdownloader scarica i file RPM di origine dai repository, comprese le relative dipendenze. Utile per creare un repository di rete a cui accedere da altre macchine con accesso Internet limitato.

Yumdownloader ti consente non solo di scaricare gli RPM binari ma anche quelli sorgente (se utilizzato con l'opzione --source).

Ad esempio, creiamo una directory denominata htop-files in cui memorizzeremo gli RPM necessari per installare il programma utilizzando RPM. Per fare ciò, dobbiamo utilizzare l'opzione --resolve insieme a yumdownloader:

mkdir htop-files
cd htop-files
yumdownloader --resolve htop
rpm -Uvh 

10. Sincronizzare un repository Yum remoto con una directory locale

reposync è strettamente correlato a yumdownloader (in effetti supportano quasi le stesse opzioni) ma offre un vantaggio considerevole. Invece di scaricare file RPM binari o di origine, sincronizza un repository remoto in una directory locale.

Sincronizziamo il noto repository EPEL in una sottodirectory chiamata epel-local all'interno della directory di lavoro corrente:

man reposync
mkdir epel-local
reposync --repoid=epel --download_path=epel-local

Tieni presente che questo processo richiederà un po' di tempo poiché sta scaricando i pacchetti 8867:

Una volta completata la sincronizzazione, controlliamo la quantità di spazio su disco utilizzato dal nostro mirror appena creato del repository EPEL utilizzando il comando du:

du -sch epel-local/*

Ora tocca a te se vuoi mantenere questo mirror EPEL o usarlo per installare pacchetti invece di usarne uno remoto. Nel primo caso, tieni presente che dovrai modificare /etc/yum.repos.d/epel.repo di conseguenza.

11. Correggi le transazioni Yum non completate o interrotte

yum-complete-transaction è una parte del programma yum-utils che rileva transazioni yum non completate o interrotte su un sistema e tenta di completarle.

Ad esempio, quando aggiorniamo i server Linux tramite il gestore pacchetti yum, a volte viene generato un messaggio di avviso che recita come segue:

Rimangono transazioni non completate. Potresti prendere in considerazione l'esecuzione prima di yum-complete-transaction per completarli.

Per correggere tali messaggi di avviso e risolvere il problema, viene visualizzato il comando yum-complete-transaction per completare le transazioni non completate e trova le transazioni yum incomplete o interrotte in transaction-all* e transaction-done* che possono essere trovati nella directory /var/lib/yum.

Esegui il comando yum-complete-transaction per completare le transazioni yum incomplete:


yum-complete-transaction --cleanup-only

Ora i comandi yum verranno eseguiti senza gli avvisi di transazione incompleta.


yum update

Nota: questo suggerimento è suggerito da uno dei nostri lettori abituali Mr. Tomas nella sezione commenti qui.

Riepilogo

In questo articolo abbiamo trattato alcune delle utilità più utili fornite tramite yum-utils. Per un elenco completo, puoi fare riferimento alla pagina man (man yum-utils).

Inoltre, ognuno di questi strumenti ha una pagina man separata (vedi man reposync, ad esempio), che è la fonte principale di documentazione a cui dovresti fare riferimento se vuoi saperne di più su di essi.

Se ti prendi un minuto per controllare la pagina man di yum-utils, forse troverai un altro strumento di cui vorresti che trattassimo in modo più approfondito in un articolo separato. In tal caso, o se hai domande, commenti o suggerimenti su questo articolo, non esitare a farcelo sapere inviandoci una nota utilizzando il modulo di commento qui sotto.