Articles

A Guide to Yum and Apt

Overview

I gestori di pacchetti sono una grande caratteristica di ogni sistema Linux. Ci permettono di gestire facilmente l’installazione, la rimozione e il controllo dei pacchetti software.

In questo tutorial, impareremo ad usare due tra i più famosi: YUM e APT.

Package Managers in a Nutshell

Prima di iniziare, facciamo una panoramica su cosa sono effettivamente i Package Managers.

In Windows, di solito installiamo software scaricando ed eseguendo installatori eseguibili.

In Linux, possiamo ancora fare lo stesso, scaricando e installando manualmente i pacchetti nel formato previsto dalla nostra distribuzione. Il metodo tradizionale, tuttavia, consiste nell’affidarsi ai gestori di pacchetti per sfogliare il software disponibile (insieme a quello installato), così come per installarlo, aggiornarlo e disinstallarlo.

Le versioni del software fornite dai gestori di pacchetti potrebbero non essere sempre le più recenti, ma l’intero processo è più snello, veloce e sicuro.

Diamo ora un’occhiata a cosa sono YUM e APT, e come funzionano.

YUM – Yellowdog Updater, Modified

YUM è un’utilità di gestione dei pacchetti per distribuzioni basate su RPM. RPM (Red Hat Package Manager) è il gestore di pacchetti su cui si basano sistemi come RHEL e CentOS.

YUM usa RPM sotto il cappuccio, nascondendo la sua complessità attraverso un’astrazione di alto livello.

Fedora 22 e RHEL 8 hanno introdotto una riscrittura di YUM, chiamata DNF, che probabilmente diventerà il nuovo standard per i sistemi basati su RPM.

APT – Advanced Packaging Tool

APT, dall’altro lato, è un insieme di diversi strumenti usati per gestire il software nelle distribuzioni basate su DPKG.

DPKG significa Debian PacKaGe ed è il gestore di pacchetti al centro di sistemi come Debian e Ubuntu.

APT avvolge le chiamate di basso livello a DPKG per fornire agli utenti un’interfaccia user-friendly.

È degno di nota che APT è un acronimo usato in diversi contesti. È il sistema di pacchettizzazione (APT), il pacchetto Linux sotto il quale è distribuito (apt), e anche uno degli strumenti che formano la libreria (apt, apt-get, apt-cache, e altri).

4.1. apt

apt è lo strumento più recente del gestore di pacchetti APT.

È spesso fonte di confusione perché gli utenti non sono sicuri se usare apt o apt-get per le loro operazioni e quali sono le differenze.

Ci chiariamo qui: apt è lo strumento giusto quando si gestisce manualmente un sistema basato su Debian. Dovremmo sempre preferirlo a apt-get e apt-cache, in quanto unifica e semplifica le principali operazioni degli altri due.

Fornisce anche un’utile barra di progresso insieme ad alcuni altri piccoli vantaggi, come output colorato e informazioni aggiuntive.

4.2. apt-get

apt-get, d’altra parte, è la scelta giusta se abbiamo intenzione di scrivere le nostre operazioni di gestione. Fornisce un’interfaccia più stabile, più funzionalità e permette anche una personalizzazione più profonda.

Era lo strumento predefinito per ogni tipo di operazione fino a Ubuntu 16.04. In Ubuntu 16.04, apt è diventato l’opzione preferita per l’uso umano.

4.3. apt-cache

apt-cache, infine, è uno strumento che completa apt-get, fornendo informazioni sul software installato e anche su quello disponibile.

4.4. Snappy

Canonical, l’azienda dietro Ubuntu, ha recentemente rilasciato un nuovo sistema di pacchettizzazione indipendente dalla distribuzione chiamato Snappy.

I pacchetti Snappy sono autocontenuti e possono essere installati in Ubuntu così come in Fedora, CentOS, Arch, Gentoo e così via.

Mentre le ultime versioni di Ubuntu distribuiscono alcuni pacchetti principalmente attraverso Snappy, APT rimane il modo ufficiale per gestire i pacchetti software, almeno per ora.

Query

Vediamo ora come possiamo usare questi strumenti per interrogare i nostri gestori di pacchetti.

5.1. Elencare i pacchetti

Possiamo chiedere a YUM di elencare i nostri pacchetti con i seguenti comandi:

# List installed and available packages from repositories:yum list all# List only installed packages:yum list installed# List only available packages:yum list available# List installed and available kernel packages:yum list kernel

Con APT, invece, possiamo elencare i nostri pacchetti:

# List installed and available packages from repositories:apt list# List only installed packages:apt list --installed

Nel caso in cui vogliamo vedere solo i pacchetti disponibili, possiamo ricorrere a qualche comando grep visto che non c’è nessun comando APT per farlo:

# List only available packages:apt list | grep -v installed

Per lo scripting, potremmo anche considerare di ricorrere alla soluzione più vicina ad apt list disponibile da apt-cache:

apt-cache search .

Attenzione che il risultato sarà diverso sia nel numero di occorrenze che nel loro ordine restituito, però.

5.2. Cercare i pacchetti

Con YUM, possiamo cercare un pacchetto contenente un termine specifico nel suo nome o nella sua descrizione:

yum search SOMETHING

Questa volta, in APT è identico:

apt search SOMETHINGapt-cache search SOMETHING

5.3. Ottenere i dettagli del pacchetto

Una volta che sappiamo a quale pacchetto siamo interessati, potremmo voler controllare i suoi dettagli.

In YUM:

yum info MY_PACKAGE

E similmente, in APT:

apt show MY_PACKAGEapt-cache show MY_PACKAGE

Gestione dei pacchetti

Ora che abbiamo visto come cercare e controllare i pacchetti software, vediamo come gestirli:

6.1. Aggiornamento delle informazioni sui pacchetti

Prima di tutto, dobbiamo aggiornare il nostro indice dei pacchetti.

Questi comandi non aggiornano nessun pacchetto installato, scaricano solo le ultime informazioni sui pacchetti che possono essere installati o aggiornati.

In YUM è:

yum check-update

In APT, invece, è semplicemente:

apt updateapt-get update

Dovremmo sempre eseguire apt update prima di qualsiasi altra operazione.

6.2. Installazione di un pacchetto

Per installare un pacchetto in YUM:

yum install MY_PACKAGE

Anche nei sistemi Debian non differisce affatto:

apt install MY_PACKAGEapt-get install MY_PACKAGE

6.3. Aggiornamento di un pacchetto

L’aggiornamento di un pacchetto può essere fatto in diversi modi.

In YUM, il comando yum update esegue internamente lo yum check-update, il che significa che non abbiamo bisogno di eseguire quest’ultimo a meno che non vogliamo evitare di installare qualcosa dopo aver aggiornato l’indice dei pacchetti. Possiamo aggiornare tutti o alcuni pacchetti come segue:

# Update the package index and every package:yum update# Update only the package MY_PACKAGE:yum update MY_PACKAGE# Apply security-related package updates:yum update --security

Oppure:

# Update every package:apt upgradeapt-get upgrade # Update every package along with their dependencies:apt full-upgradeapt-get dist-upgrade# Update only the package MY_PACKAGE:apt-get install --only-upgrade MY_PACKAGE# Apply security-related package updates:unattended-upgrade --dry-run -d

È importante sapere che aggiornare i pacchetti insieme alle loro dipendenze implica potenzialmente la disinstallazione del software esistente e anche l’installazione di nuovo software se questo è richiesto dal processo di aggiornamento.

I comandi di aggiornamento standard, d’altra parte, non disinstallano mai nulla. Tuttavia, diversamente da apt-get upgrade (che non installa nulla), apt upgrade potrebbe installare nuovo software se necessario.

6.4. Rimozione di un pacchetto

A volte abbiamo bisogno di rimuovere un pacchetto software. Esploriamo allora i diversi modi per farlo, da superficiale e morbido a profondo e definitivo.

Per sbarazzarci di un pacchetto installato ed eventualmente delle sue dipendenze in YUM possiamo fare uno dei due comandi equivalenti:

yum erase MY_PACKAGEyum remove MY_PACKAGE

In RHEL7 e superiori, è possibile cancellare anche pacchetti aggiuntivi non necessari con autoremove:

yum autoremove MY_PACKAGE

I modi Debian per cancellare un pacchetto invece sono:

apt remove MY_PACKAGEapt-get remove MY_PACKAGE

Tuttavia, se vogliamo rimuovere anche la configurazione del pacchetto, epurando completamente il sistema da essa, allora possiamo sfruttare purge:

apt purge MY_PACKAGEapt-get purge MY_PACKAGE

6.5. Pulire

A volte, il nostro sistema sarà inquinato da pacchetti orfani, che non sono più necessari ma stanno ancora occupando spazio.

Possiamo rimuovere questi pacchetti indesiderati in YUM attraverso autoremove, senza alcun nome di pacchetto:

yum autoremove

Questo funziona allo stesso modo anche sulle distribuzioni Debian:

apt autoremoveapt-get autoremove

Gestione dei repository

Entrambi i sistemi di packaging iniziano con un insieme di repository ufficiali da interrogare per trovare i pacchetti.

Tuttavia, la comunità è fiorente, e spesso il pacchetto di cui abbiamo bisogno manca nei repository ufficiali, o c’è ma in una versione troppo vecchia per le nostre esigenze.

In questi casi, potremmo voler aggiungere repository non ufficiali alla lista del gestore di pacchetti (facendo sempre attenzione al fatto che potrebbe rappresentare un problema di sicurezza).

7.1. Aggiunta di un repository

L’aggiunta di un repository in YUM è un’operazione manuale, che consiste nel creare un file con estensione .repo sotto la cartella /etc/yum.repos.d.

Il file deve contenere tutte le informazioni sul repository personalizzato a cui ci stiamo collegando.

Prova ad aggiungere il repository AdoptOpenJDK:

# /etc/yum.repos.d/adoptopenjdk.reponame=AdoptOpenJDKbaseurl=http://adoptopenjdk.jfrog.io/adoptopenjdk/rpm/centos/7/$(uname -m)enabled=1gpgcheck=1gpgkey=https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public

In APT, però, le cose sono abbastanza diverse. La chiave GPG del repository deve essere scaricata e aggiunta al portachiavi di APT con apt-key add:

wget -qO - https://adoptopenjdk.jfrog.io/adoptopenjdk/api/gpg/key/public | sudo apt-key add -

A questo punto, il repository può essere aggiunto tramite add-apt-repository -yes seguito dall’URL:

add-apt-repository --yes https://adoptopenjdk.jfrog.io/adoptopenjdk/deb/

Al contrario di YUM, tutti i repository sono salvati in un unico file, /etc/apt/sources.list.

7.2. Rimozione di un repository

Rimuovere un repository in YUM viene eseguito in modo diverso a seconda di come è stato installato.

Possiamo eseguire il seguente comando e analizzare il suo output:

rpm -qa | grep -i CUSTOM_REPOSITORY

Se il pacchetto RPM del repository viene trovato, significa che è stato installato tramite RPM, e possiamo rimuoverlo usando -e:

rpm -e CUSTOM_REPOSITORY_RPM_PACKAGE

Altrimenti, possiamo semplicemente cancellare il file del repository:

rm /etc/yum.repos.d/CUSTOM_REPOSITORY.repo

Possiamo anche disabilitarlo senza cancellarlo, semplicemente trasformando enabled=1 in enabled=0 nel file del repository.

In APT, invece, possiamo semplicemente fare:

add-apt-repository --remove ppa:CUSTOM_REPOSITORY/ppa

In alternativa, possiamo commentare le righe relative al repository nel file /etc/apt/sources.list.

Altre operazioni

Questi due fanno molte altre operazioni. Copriamone alcune.

8.1. Reinstallare un pacchetto

In caso di un pacchetto corrotto, come se mancassero alcuni file, possiamo reinstallarlo con:

yum reinstall MY_PACKAGEapt reinstall MY_PACKAGEapt-get reinstall MY_PACKAGE

8.2. Installare una versione specifica di un pacchetto

A volte, invece, potremmo aver bisogno di installare una versione specifica di un pacchetto.

Possiamo controllare le versioni disponibili di un pacchetto con:

yum list MY_PACKAGE --showduplicatesapt-cache showpkg MY_PACKAGE

Poi possiamo puntare alla versione desiderata per una nuova installazione:

yum install MY_PACKAGE-WANTED_VERSIONapt install MY_PACKAGE=WANTED_VERSIONapt-get install MY_PACKAGE=WANTED_VERSION

YUM ci permette anche di fare un downgrade da una versione esistente ad una delle versioni precedentemente installate:

yum downgrade MY_PACKAGE-WANTED_VERSION

8.3. Installare un gruppo di pacchetti

Alcuni pacchetti sono combinati in un gruppo per uno scopo comune e possono essere installati tutti insieme.

Prendiamo di mira un altro esempio reale e pensiamo all’installazione dell’ambiente grafico in un server Linux.

Installare i gruppi X Window System e GNOME ci risparmierà il fastidio di installare centinaia di pacchetti a mano:

yum groupinstall 'X Window System' 'GNOME'

Il gestore di pacchetti Debian, tuttavia, li gestisce come semplici pacchetti, quindi il classico comando apt install è sufficiente:

apt-get install xorg

Conclusione

In questo tutorial, abbiamo imparato i concetti relativi a YUM e APT, così come l’uso pratico dei loro comandi principali.

Anche se abbiamo solo grattato la superficie, ora dovremmo essere in grado di gestire il software sui nostri sistemi basati su RedHat e Debian.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *