Gestori di pacchetti Linux: dnf vs apt
I gestori di pacchetti eseguono le stesse operazioni generali, ovvero installazione, gestione e disinstallazione di applicazioni, ma non fanno tutto allo stesso modo.
Esistono molti modi per inserire applicazioni su un sistema Linux. Alcuni, come Flatpak e i contenitori, sono nuovi. Altri, come DEB e RPM, sono formati classici che hanno resistito alla prova del tempo.
Non esiste un programma di installazione universale per nessun sistema operativo. Oggi, tutti i principali sistemi operativi utilizzano un mix di app store (sia di prima che di terze parti), installazione drag-and-drop e procedure guidate di installazione perché esistono innumerevoli sviluppatori che forniscono software. Sviluppatori diversi hanno requisiti diversi per il codice che forniscono e questo influenza il metodo di installazione scelto da ciascuno.
Linux è stato il pioniere del concetto di gestore di pacchetti, un comando per installare, gestire e disinstallare le applicazioni. Due comandi comuni del gestore pacchetti sono apt
e dnf
. Il comando apt
gestisce i pacchetti DEB, mentre dnf
gestisce i pacchetti RPM. In teoria i due non si escludono strettamente l'un l'altro, anche se in pratica una distribuzione Linux generalmente utilizza l'uno o l'altro. In teoria è possibile eseguirli entrambi sullo stesso sistema, ma le installazioni dei pacchetti si sovrapporrebbero, il controllo delle versioni sarebbe difficile e i comandi sarebbero ridondanti tra loro. Tuttavia, se lavori in un ambiente Linux misto, interagendo con workstation che eseguono una distribuzione e server che ne eseguono un'altra, potresti aver bisogno di conoscerli entrambi.
Ricerca di applicazioni
Prima di poter installare un'applicazione con un gestore di pacchetti, devi conoscere il nome del pacchetto. Di solito, il nome dell'applicazione e il nome del pacchetto sono gli stessi. Il processo per verificare il nome del pacchetto che desideri installare è esattamente lo stesso su dnf
e apt
:
$ sudo dnf search zsh
====== Name Exactly Matched: zsh ======
zsh.x86_64 : Powerful interactive shell
[...]
Con apt
:
$ sudo apt search zsh
Sorting... Done
Full Text Search... Done
csh/stable 20110502-4+deb10u1 amd64
Shell with C-like syntax
ddgr/stable 1.6-1 all
DuckDuckGo from the terminal
direnv/stable 2.18.2-2 amd64
Utility to set directory specific environment variables
draai/stable 20180521-1 all
Command-line music player for MPD
[...]
Per ottenere risultati pertinenti da apt
all'inizio della ricerca, puoi utilizzare l'espressione regolare:
apt search ^zsh
Sorting... Done
Full Text Search... Done
zsh/stable 5.7.1-1 amd64
shell with lots of features
[...]
Trovare il pacchetto di un'applicazione
Alcuni comandi vengono forniti in bundle con altri comandi, tutto in un unico pacchetto. Quando ciò accade, puoi utilizzare il tuo gestore pacchetti per sapere quale pacchetto fornisce ciò di cui hai bisogno. I comandi dnf
e apt
differiscono nel modo in cui cercano questo tipo di metadati.
Su dnf
:
$ sudo dnf provides pgrep
procps-ng-3.3.15-6.el8.x86_64 : System and process monitoring utilities
Repo : baseos
Matched from:
Filename : /usr/bin/pgrep
Il comando apt
utilizza un sottocomando, apt-file
. Per utilizzare apt-file
, devi prima installarlo e poi chiedergli di aggiornare la cache:
$ sudo apt install apt-file
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following additional packages will be installed:
libapt-pkg-perl libexporter-tiny-perl liblist-moreutils-perl libregexp-assemble-perl
The following NEW packages will be installed:
apt-file libapt-pkg-perl libexporter-tiny-perl liblist-moreutils-perl libregexp-assemble-perl
0 upgraded, 5 newly installed, 0 to remove and 14 not upgraded.
Need to get 297 kB of archives.
After this operation, 825 kB of additional disk space will be used.
Do you want to continue? [Y/n] y
$ sudo apt-file update
[...]
Puoi utilizzare apt-file
per cercare un comando. Puoi lanciare una rete molto ampia semplicemente cercando il comando, ma se ti capita di conoscere il percorso previsto del comando, è più accurato:
$ sudo apt-file search /usr/bin/pgrep
pgreplay: /usr/bin/pgreplay
procps: /usr/bin/pgrep
Installazione di applicazioni
L'installazione delle applicazioni è essenzialmente identica a apt
e dnf
:
$ sudo apt install zsh
Con dnf
, puoi installare un singolo pacchetto utilizzando la stessa opzione:
$ sudo dnf install zsh
Molte distribuzioni basate su RPM dispongono di gruppi di installazione, che raccolgono applicazioni talvolta superficialmente correlate in un unico target facilmente installabile. Ad esempio, il gruppo Design Suite in Fedora contiene applicazioni creative popolari. Molti artisti che desiderano un'applicazione creativa probabilmente vorranno applicazioni simili e l'installazione dell'intero gruppo è un modo semplice e veloce per iniziare in modo sensato la costruzione di uno studio digitale. Puoi visualizzare i gruppi disponibili con elenco gruppi
(usa -v
per vedere i nomi dei gruppi senza spazi):
$ sudo dnf group list -v
[...]
Available Groups:
Container Management (container-management)
RPM Development Tools (rpm-development-tools)
Design Suite (design-suite)
Development Tools (development)
[...]
Installa un gruppo RPM utilizzando i sottocomandi group install
:
$ sudo dnf group install design-suite
Puoi utilizzare la notazione @
per ridurre la digitazione:
$ sudo dnf install @design-suite
Aggiornamento delle applicazioni
Un vantaggio dell'utilizzo di un gestore di pacchetti è che riconosce tutte le applicazioni che ha installato. Ciò significa che non devi andare a caccia di versioni aggiornate delle applicazioni. Invece, puoi dire al tuo gestore pacchetti di cercare aggiornamenti.
I sottocomandi utilizzati da dnf
e apt
sono leggermente diversi. Poiché apt
conserva una cache di informazioni che richiedono un aggiornamento regolare, utilizza il sottocomando upgrade
per gli aggiornamenti dell'applicazione:
$ sudo apt upgrade
Al contrario, dnf
aggiorna i metadati ogni volta che usi il comando, quindi i sottocomandi update
e upgrade
sono intercambiabili:
$ sudo dnf upgrade
Questo è lo stesso di:
$ sudo dnf update
Rimozione delle applicazioni
Se hai mai provato a rimuovere un'applicazione manualmente su qualsiasi piattaforma, allora sai che inevitabilmente ci sono file rimanenti, come file delle preferenze, risorse o icone, sparsi sul tuo disco rigido dopo aver rimosso l'applicazione. Un altro vantaggio derivante dall'utilizzo di un gestore di pacchetti è che il gestore di pacchetti conosce ogni singolo file installato con un pacchetto:
$ sudo dnf remove zsh
Il sottocomando remove
viene utilizzato anche per apt
:
$ sudo apt remove zsh
La rimozione di un pacchetto con apt
non rimuove i file di configurazione dell'utente modificati, nel caso in cui tu abbia rimosso il pacchetto per sbaglio. Se vuoi che apt
rimuova un'applicazione e i suoi file di configurazione, usa purge
su un'applicazione che hai precedentemente rimosso:
$ sudo apt purge zsh
Sia apt
che dnf
(anche con purge
) non rimuovono dati o file di configurazione nella tua directory home. Per rimuovere i dati dalla tua directory home, devi farlo manualmente (solitamente si trova in ~/.config
e ~/.local
).
Gestione dei pacchetti didattici
Sia che la vostra distribuzione Linux prescelta preferisca apt
o dnf
, gli scopi dei comandi sono sostanzialmente identici. Ti aiutano a installare, aggiornare e rimuovere i pacchetti. Questi due, essendo i gestori di pacchetti più comuni, rispecchiano in gran parte gli elementi sintattici più importanti l'uno dell'altro, quindi passare dall'uno all'altro è piuttosto semplice.
Ciascuno ha alcune funzionalità avanzate, come la gestione del repository, che divergono sostanzialmente, ma tendono a non essere eseguite con la stessa frequenza della sequenza classica di search
e install
.
Indipendentemente dal gestore di pacchetti che usi più spesso, puoi scaricare i nostri cheat sheet apt e dnf cheat sheet in modo da avere la sintassi più importante a portata di mano quando ne hai più bisogno.