Ricerca nel sito web

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.

Articoli correlati: