Questo tutorial spiega tutti i comandi di base per chi vuole sapere come usare il gestore di pacchetti DNF. Come forse già saprai, DNF è la versione di nuova generazione di YUM ed è stato il gestore di pacchetti predefinito da Fedora 22. È destinato a sostituire YUM nei sistemi basati su RPM come RHEL, CentOS. Rispetto a YUM, DNF presenta alcuni vantaggi significativi, come il supporto per più repository, il supporto di gruppi di pacchetti, una maggiore velocità di risoluzione delle dipendenze e consuma meno memoria, funziona sia in Python 2 che in Python 3, solida documentazione API, compatibilità con YUM e molti altri.
Lettura consigliata:
- Iniziare con Pacman
Esempi di comandi DNF per principianti
A partire da Fedora 22, yum è stato sostituito con DNF, quindi non è necessario installarlo se sei su Fedora. Su CentOS 7 e RHEL 7, puoi installarlo come descritto nel tutorial riportato di seguito.
- Come installare DNF su CentOS 7
L'utilizzo di DNF è molto simile a YUM. Tutti i comandi forniti qui sono stati testati su CentOS 7 edizione minima del server con root utente.
1. Ottenere aiuto
Per elencare tutti i comandi principali, i comandi del plug-in e le opzioni, esegui:
# dnf help
Per ottenere assistenza su un comando specifico, ad esempio 'installa', eseguire:
# dnf help install
Per conoscere la versione DNF attualmente installata, eseguire:
# dnf --version
2. Gestione dei pacchetti
Questa sezione spiega l'installazione, l'aggiornamento, l'elenco, la ricerca, il download, la reinstallazione e la rimozione dei pacchetti.
Ottenere informazioni sul pacchetto
Per ottenere i dettagli di qualsiasi pacchetto installato o non installato, eseguire:
# dnf info vim
Installazione dei pacchetti
Per installare un nuovo pacchetto, ad esempio vim , esegui:
# dnf install vim
Possiamo anche installare più pacchetti come di seguito.
# dnf install vim nano emacs
È necessario digitare "y" per continuare l'installazione. Se non vuoi farlo ogni volta, puoi includere l'opzione "y" nei comandi per l'auto-conferma.
# dnf install vim nano emacs -y
Questo non aspetterà la conferma dell'utente. Invece, installerà semplicemente tutti i pacchetti automaticamente.
Pacchetti di annunci
Per elencare tutti i pacchetti disponibili e installati:
# dnf list
Per elencare solo tutti i pacchetti installati, utilizziamo:
# dnf list installed
Per elencare solo i pacchetti disponibili:
# dnf list available
Aggiornamento dei pacchetti
Per verificare la presenza di tutti gli aggiornamenti disponibili, procedere come segue:
# dnf check-update
Oppure,
# dnf list updates
Per aggiornare un singolo pacchetto (es. bash), esegui:
# dnf update bash
Per visualizzare se sono presenti aggiornamenti per un pacchetto installato, eseguire:
# dnf list yum.noarch Using metadata from Sat Feb 10 14:47:22 2018 Installed Packages yum.noarch 3.4.3-150.el7.centos @System Available Packages yum.noarch 3.4.3-154.el7.centos.1 update
Questo comando visualizzerà la versione attualmente installata e l'aggiornamento disponibile dal repository. Nell'output sopra, @system specifica la versione installata e l'aggiornamento specifica l'aggiornamento disponibile dal repository.
Per aggiornare più pacchetti:
# dnf update package1 package2
Passa l'opzione "y" per la conferma automatica.
# dnf update package1 package2 -y
Per aggiornare/aggiornare tutti i pacchetti, esegui:
# dnf update
# dnf upgrade
Per sincronizzare i pacchetti installati con le ultime versioni disponibili:
# dnf distro-sync
Ricerca di pacchetti
Per cercare un pacchetto dal repository, esegui:
# dnf search vim
Questo comando elencherà tutti i pacchetti che corrispondono alla parola "vim".
Download dei pacchetti
A volte potresti voler scaricare un pacchetto, ma non vuoi installarlo in questo momento. In tal caso, esegui:
# dnf download vim
Questo comando scaricherà il pacchetto vim-enhanced-xx.xx.x.rpm, ma non lo installerà.
Per installare il pacchetto scaricato, esegui:
# dnf install vim-enhanced-7.4.160-2.el7.x86_64.rpm
Tutte le altre dipendenze richieste verranno scaricate e installate dal repository.
Pacchetti di downgrade
Per eseguire il downgrade di un pacchetto che hai aggiornato in precedenza, esegui:
# dnf downgrade bash
Reinstallazione dei pacchetti
Hai problemi con un pacchetto già installato? Nessun problema! Puoi reinstallarlo in qualsiasi momento.
Per reinstallare un pacchetto, usa:
# dnf reinstall vim
Rimozione dei pacchetti
Per rimuovere un pacchetto (es. vim) dal sistema, eseguire:
# dnf remove vim
Puoi anche utilizzare l'opzione "cancella" come di seguito.
# dnf erase vim
3. Gruppi di pacchetti
Un gruppo di pacchetti è una raccolta di pacchetti che hanno uno scopo comune, ad esempio "Strumenti di sviluppo" o "Server Web". Quando si installa un gruppo di pacchetti, tutti i pacchetti dipendenti verranno scaricati e installati. L'installazione di gruppi ti farà risparmiare una notevole quantità di tempo.
Installazione dei gruppi di pacchetti
Per elencare tutti i gruppi di pacchetti disponibili, esegui:
# dnf grouplist
Per installare un gruppo di pacchetti, ad esempio "Strumenti di sviluppo", esegui:
# dnf groupinstall 'Development Tools'
Questo comando installerà tutti i pacchetti necessari per configurare un ambiente di sviluppo.
Aggiornamento dei gruppi di pacchetti
Per aggiornare un gruppo di pacchetti, esegui:
# dnf groupupdate 'Development Tools'
Rimozione dei gruppi di pacchi
Per rimuovere un gruppo di pacchetti, esegui:
# dnf groupremove 'Development Tools'
4. Lavorare con i repository
Elenco dei repository installati
Per impostazione predefinita, tutti i repository verranno aggiunti nella directory /etc/yum.repos.d/ in CentOS/RHEL. Puoi elencare i repository installati usando il comando:
# dnf repolist
Il comando precedente visualizzerà solo i repository abilitati. Per visualizzare tutti i repository (sia abilitati che disabilitati), esegui:
# dnf repolist all
Aggiunta di repository
Puoi aggiungere un repository creando manualmente un file package.repo nella directory /etc/yum.repos.d/. Tuttavia, DNF lo rende ancora più semplice.
Per aggiungere un nuovo repository, esegui:
# dnf config-manager --add-repo repository_url
Esempio:
# dnf config-manager --add-repo http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/
Per visualizzare il repository appena aggiunto, facciamo:
# dnf repolist created by dnf config-manager from http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/ 115 kB/s | 3.5 MB 00:31 Using metadata from Sat Feb 10 14:47:22 2018 repo id repo name status base CentOS-7 - Base 9,591 epel Extra Packages for Enterprise Linux 7 - x86_64 12,278 extras CentOS-7 - Extras 388 springdale.math.ias.edu_data_puias_unsupported_7_x86_64_ created by dnf config-manager from http://springdale.math.ias.edu/data/puias/unsupporte 2,760 updates CentOS-7 - Updates
Per visualizzare solo il file .repo:
# cat /etc/yum.repos.d/springdale.math.ias.edu_data_puias_unsupported_7_x86_64_.repo [springdale.math.ias.edu_data_puias_unsupported_7_x86_64_] name=created by dnf config-manager from http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/ baseurl=http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/ enabled=1
Abilitazione dei repository
Per abilitare un repository, usa:
# dnf config-manager --set-enabled <repo-id>
Esempio:
# dnf config-manager --set-enabled epel
Possiamo verificare eseguendo il comando seguente per vedere solo i repository abilitati.
# dnf repolist
Inoltre, possiamo combinare insieme le opzioni di abilitazione e installazione come di seguito.
# dnf config-manager --set-enabled epel install zsh
Il comando precedente abilita il repository EPEL e installa il pacchetto zsh.
Disabilitazione dei repository
Per disabilitare un repository, ad esempio EPEL, utilizziamo:
# dnf config-manager --set-disabled epel
Possiamo anche combinare insieme le opzioni di abilitazione e disabilitazione come di seguito.
# dnf --enablerepo=epel --disablerepo=updates
Il comando precedente abiliterà il repository EPEL e disabiliterà il repository degli aggiornamenti.
5. Trovare ciò che fornisce qualcosa
DNF ti consente di trovare quale pacchetto fornisce un comando o un file specifico. Se non ricordi esattamente quale pacchetto fornisce un particolare comando che volevi usare, DNF può aiutarti.
Trova quale pacchetto fornisce un comando specifico
Mi manca il buon vecchio comando "ifconfig". Questo comando è deprecato e non disponibile nelle versioni recenti. Per trovare quale pacchetto fornisce questa gemma, esegui:
# dnf provides */ifconfig
Risultato di esempio:
Using metadata from Thu Feb 8 15:52:17 2018 net-tools-2.0-0.22.20131004git.el7.x86_64 : Basic networking tools Repo : base
Ah, sì! net-tools pacchetto fornisce questo comando. Quindi puoi installare questo pacchetto per usare il comando ifconfig.
Trova quale pacchetto fornisce un file
Cerchiamo di scoprire quale pacchetto fornisce /bin/ls file. Per farlo, esegui:
# dnf provides */bin/ls Using metadata from Thu Jun 30 12:51:16 2016 coreutils-8.22-18.el7.x86_64 : A set of basic GNU tools commonly used in shell scripts Repo : @System coreutils-8.22-18.el7.x86_64 : A set of basic GNU tools commonly used in shell scripts Repo : base
Come puoi vedere nell'output sopra, coreutils il pacchetto fornisce il file /bin/ls.
Leggi anche:
- Come trovare il pacchetto che fornisce un file specifico in Linux
6. Lavorare con la cronologia DNF
Usando il comando "dnf history", possiamo visualizzare tutte le azioni che abbiamo eseguito con il comando DNF.
# dnf history Using metadata from Sat Feb 10 14:47:22 2018 ID | Command line | Date a | Action | Altere ------------------------------------------------------------------------------- 2 | update bash | 2018-02-10 14:55 | Update | 1 1 | install vim | 2018-02-10 14:51 | E, I | 33 EE
Come puoi vedere nell'output sopra, c'erano due transazioni. Ho installato un pacchetto chiamato "vim" e aggiornato il pacchetto "bash". Le transazioni più recenti appariranno in alto.
Per visualizzare i dettagli di una transazione specifica, utilizza il suo ID come di seguito.
# dnf history list 2
Possiamo anche visualizzare i dettagli completi di una transazione specifica come di seguito.
# dnf history info 2 Using metadata from Sat Feb 10 14:47:22 2018 Transaction ID : 2 Begin time : Sat Feb 10 14:55:38 2018 Begin rpmdb : 360:fa7bea798a10e850b2bf800182b377443b481652 End time : 14:55:39 2018 (1 seconds) End rpmdb : 360:dc9f6bb33b00fe1d74dd205586c0ff8c4674f8f7 User : root <root> Return-Code : Success Command Line : update bash Transaction performed with: Installed dnf-0.6.4-2.sdl7.noarch (unknown) Installed rpm-4.11.3-21.el7.x86_64 (unknown) Packages Altered: Upgraded bash-4.2.46-21.el7_3.x86_64 (unknown) Upgrade 4.2.46-29.el7_4.x86_64 @updates
Come vedi, la transazione con ID 2 è stata utilizzata per aggiornare il pacchetto denominato "bash". Possiamo annullare questa transazione in qualsiasi momento usando il comando:
# dnf history undo 2
Per ripetere la precedente transazione "annulla", esegui semplicemente:
# dnf history redo 2
7. Creazione della cache di metadati DNF
La cache dei metadati DNF verrà creata automaticamente durante l'installazione e l'aggiornamento dei pacchetti. Quindi non abbiamo bisogno di costruirlo manualmente. Tuttavia, DNF ha un comando integrato per creare la cache per rendere più veloci le transazioni future.
Per creare la cache dei metadati, esegui:
# dnf makecache Extra Packages for Enterprise Linux 7 - x86_64 155 kB/s | 15 MB 01:35 created by dnf config-manager from http://springdale.math.ias.edu/data/puias/unsupported/7/x86_64/ 136 kB/s | 3.5 MB 00:26 CentOS-7 - Base 195 kB/s | 9.5 MB 00:49 CentOS-7 - Updates 240 kB/s | 7.9 MB 00:33 CentOS-7 - Extras 84 kB/s | 820 kB 00:09 Metadata cache created.
8. Pulizia
Per rimuovere i pacchetti indesiderati/orfani, esegui:
# dnf autoremove
Per rimuovere tutti i pacchetti memorizzati nella cache, esegui:
# dnf clean all
Invece di pulire completamente la cache, potresti voler eseguire una pulizia individuale di metadati, dbcache, pacchetti, plug-in ecc.
Per rimuovere i file di cache generati dai metadati del repository:
# dnf clean dbcache
Questo costringe DNF a rigenerare i file della cache la prossima volta che viene eseguito.
Per rimuovere i file cookie locali che indicano quando i metadati e gli elenchi di mirroring sono stati scaricati per ciascun repository, eseguire:
# dnf clean expire-cache
DNF riconvaliderà la cache per ogni repository al successivo utilizzo.
Per rimuovere i metadati del repository:
# dnf clean metadata
L'utilizzo di questa opzione consentirà a DNF di scaricare tutti i metadati la prossima volta che verrà eseguito.
Per rimuovere tutti i pacchetti memorizzati nella cache dal sistema:
# dnf clean packages
Il comando seguente indica a tutti i plugin abilitati di eliminare i dati memorizzati nella cache.
# dnf clean plugins
Questi sono appena sufficienti per ottenere un utilizzo di base di DNF su Fedora, RHEL e CentOS. Per maggiori dettagli, fare riferimento alle pagine man.
$ man dnf