Come usare il comando YUM in Linux

Yum (Yellowdog Updater Modified) è un’utilità fornita su sistemi basati su RHEL per installare, rimuovere e cercare pacchetti. Può fare molto di più che installare e disinstallare ed è quello che dimostrerò in questo tutorial.
Yum installa automaticamente le dipendenze dei pacchetti, ad esempio yum install httpd
installerà automaticamente il server Web Apache e le dipendenze richieste. Qualcosa che non è così facile durante l’installazione tramite il comando rpm. Con rpm è necessario scaricare tutte le dipendenze richieste e quindi installarle di conseguenza.
L’utilità yum recupera le informazioni sui pacchetti da un repository ospitato (di solito dal fornitore del sistema operativo). Un repository è fondamentalmente una raccolta di rpm che dovrebbero funzionare su una particolare architettura. Ad esempio, ci sarebbe un repository separato per i sistemi a 32 e 64 bit e lo stesso vale per RHEL 5, 6 o 7 o 8. Puoi ospitare il repository locale e configurare yum per cercare, installare pacchetti dal repository locale.
Negli esempi seguenti, ti mostrerò alcuni dei comandi yum più comunemente usati.
1) Cerca un pacco dal magazzino
Il comando seguente cerca un pacchetto specifico nell’intero repository:
# yum search httpd
Loaded plugins: amazon-id, rhui-lb, security
=============================================== N/S Matched: httpd ==========
httpd.x86_64 : Apache HTTP Server
httpd-devel.i686 : Development interfaces for the Apache HTTP server
httpd-devel.x86_64 : Development interfaces for the Apache HTTP server
httpd-manual.noarch : Documentation for the Apache HTTP server
httpd-tools.x86_64 : Tools for use with the Apache HTTP Server
mod_dav_svn.x86_64 : Apache httpd module for Subversion server
mod_dnssd.x86_64 : An Apache HTTPD module which adds Zeroconf support
Per un output più dettagliato, utilizzare il seguente comando:
# yum provides httpd
Loaded plugins: amazon-id, rhui-lb, security
httpd-2.2.15-26.el6.x86_64 : Apache HTTP Server
Repo : rhui-REGION-rhel-server-releases
Matched from:
yum provides */httpd
Cerca nei pacchetti yum per trovare il pacchetto contenente “httpd”.
È anche possibile trovare maggiori informazioni sui pacchetti utilizzando il seguente comando:
# yum info httpd
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
...
Installed Packages
Name : httpd
Arch : x86_64
Version : 2.2.15
Release : 69.el6.centos
Size : 3.0 M
Repo : installed
From repo : base
Summary : Apache HTTP Server
URL : http://httpd.apache.org/
License : ASL 2.0
Description : The Apache HTTP Server is a powerful, efficient, and extensible
2) Operare su gruppi di colli
Puoi elencare tutti i gruppi di pacchetti installati e disponibili sul tuo computer. Il seguente comando ti mostrerà il pool di pacchetti installato e disponibile.
# yum grouplist
...
Installed Groups:
E-mail server
Perl Support
Scalable Filesystems
Security Tools
...
Available Groups:
Additional Development
Backup Client
Backup Server
Base
CIFS file server
.....
Se vuoi avere una rapida idea dei pacchetti inclusi in un gruppo, puoi usare il comando parameter groupinfo
.
# yum groupinfo "PHP Support"
Loaded plugins: fastestmirror
Setting up Group Process
...
Group: PHP Support
Description: PHP web application framework.
Mandatory Packages:
php
Default Packages:
php-gd
php-pdo
php-pear
php-xml
Optional Packages:
php-ldap
php-mysql
...
È possibile installare un gruppo di pacchetti individualmente con l’opzione di installazione di gruppo. Ad esempio, installeremo il gruppo di pacchetti di supporto PHP. Questo gruppo di pacchetti contiene i pacchetti PHP richiesti.
# yum groupinstall "PHP Support"
Loaded plugins: amazon-id, downloadonly, rhui-lb, security
Setting up Group Process
Warning: Group Support does not exist.
Resolving Dependencies
--> Running transaction check
---> Package php.x86_64 0:5.3.3-23.el6_4 will be installed
--> Processing Dependency: php-common(x86-64) = 5.3.3-23.el6_4 for package: php-5.3.3-23.el6_4.x86_64
--> Processing Dependency: php-cli(x86-64) = 5.3.3-23.el6_4 for package: php-5.3.3-23.el6_4.x86_64
---> Package php-gd.x86_64 0:5.3.3-23.el6_4 will be installed
--> Processing Dependency: libXpm.so.4()(64bit) for package: php-gd-5.3.3-23.el6_4.x86_64
Dependencies Resolved
=====================================================================
Package Arch Version Repository Size
=====================================================================
Installing:
php x86_64 5.3.3-23.el6_4 rhui-REGION-rhel-server-releases 1.1 M
...
Puoi aggiornare i pacchetti di un gruppo con il seguente comando:
]# yum groupupdate "PHP Support"
Loaded plugins: fastestmirror
Setting up Group Process
Loading mirror speeds from cached hostfile
...
Resolving Dependencies
--> Running transaction check
---> Package php.x86_64 0:5.3.3-49.el6 will be installed
--> Processing Dependency: php-common(x86-64) = 5.3.3-49.el6 for package: php-5.3.3-49.el6.x86_64
--> Processing Dependency: php-cli(x86-64) = 5.3.3-49.el6 for package: php-5.3.3-49.el6.x86_64
...
Per rimuovere un pacchetto di gruppo, utilizzare il seguente comando:
# yum groupremove "PHP Support"
Loaded plugins: fastestmirror
Setting up Group Process
Loading mirror speeds from cached hostfile
...
Resolving Dependencies
--> Running transaction check
---> Package php.x86_64 0:5.3.3-49.el6 will be erased
---> Package php-gd.x86_64 0:5.3.3-49.el6 will be erased
...
3) Installa il pacchetto usando YUM
Un pacchetto può essere installato utilizzando yum install
ordinare come segue:
# yum install httpd
Loaded plugins: amazon-id, rhui-lb, security
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package httpd.x86_64 0:2.2.15-29.el6_4 will be installed
--> Processing Dependency: httpd-tools = 2.2.15-29.el6_4 for package: httpd-2.2.15-29.el6_4.x86_64
--> Processing Dependency: apr-util-ldap for package: httpd-2.2.15-29.el6_4.x86_64
Dependencies Resolved
=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
httpd x86_64 2.2.15-29.el6_4 rhui-REGION-rhel-server-releases 821
Come puoi vedere, yum ha aggiunto pacchetti aggiuntivi con l’installazione “httpd”. Questo si chiama risoluzione delle dipendenze è fatto da yum. Se vuoi yum non chiedere [y/N] opzione. Uso yum install -y httpd
4) Reinstallare un pacchetto
A volte potresti incontrare alcuni problemi con i pacchetti già nel tuo sistema.Una possibilità è disinstallare e reinstallare di nuovo, ma è troppo lungo. Puoi semplicemente chiedere a yum di eseguire la reinstallazione per te e lo farà automaticamente
# yum reinstall httpd -y
Questo processo reinstallerà solo i pacchetti per te
5) Aggiorna i pacchetti
Quando si desidera eseguire l’aggiornamento, potrebbe essere necessario verificare prima tutti gli aggiornamenti disponibili. Questo è possibile con check-update
parametro. Se ci sono degli aggiornamenti disponibili otterrai un output, altrimenti niente.
# yum check-update
Puoi aggiornare direttamente tutti i pacchetti sul server usando il comando “update”. Ciò aggiornerà anche il pacchetto del kernel all’ultima versione, il che significa che il sistema operativo verrà aggiornato all’ultimo fornito da RHEL.
# yum update
Puoi aggiornare un pacchetto specifico come segue:
# yum update httpd
Loaded plugins: amazon-id, rhui-lb, security
Setting up Update Process
No Packages marked for Update
È possibile escludere un pacchetto durante il processo di aggiornamento con -x
parametro
# yum update -x httpd
6) Scarica il file del pacchetto RPM senza installare
Usa yum per scaricare il pacchetto RPM dal repository RHN o CentOS senza installarlo. Per prima cosa devi installare un plugin per yum in modo che yum scarichi solo l’rpm. Il nome dell’utilità è yum-downloadonly
e può essere installato tramite yum come segue:
# yum install yum-downloadonly
Loaded plugins: amazon-id, rhui-lb, security
Setting up Install Process
Resolving Dependencies
--> Running transaction check
Dependencies Resolved
===========================================================================
Package Arch Version Repository Size
===========================================================================
Installing:
yum-plugin-downloadonly noarch 1.1.30-14.el6 rhui-REGION-rhel-server-releases 20 k
Transaction Summary
===========================================================================
Install 1 Package(s)
Ora puoi scaricare un pacchetto dal repository senza installarlo usando questo comando:
# yum install httpd-devel --downloadonly
Per impostazione predefinita, i pacchetti vengono scaricati in /var/cache/yum/<arch>
directory, ma puoi scaricarli in una posizione specifica aggiungendo un’altra opzione al comando yum
# yum install httpd-devel --downloadonly --downloaddir=/opt
7) Eseguire un’installazione locale dei file rpm
Se hai un rpm di un pacchetto ma non hai le dipendenze e non sai dove trovarlo. puoi ancora avere yum per installare quell’rpm e ottenere le dipendenze richieste dal repository. Installiamo httpd-devel-2.2.15-29.el6_4.x86_64 RPM che ho appena scaricato.
# yum localinstall /opt/httpd-devel-2.2.15-29.el6_4.x86_64.rpm
Loaded plugins: amazon-id, downloadonly, rhui-lb, security
Setting up Local Package Process
Examining /opt/httpd-devel-2.2.15-29.el6_4.x86_64.rpm: httpd-devel-2.2.15-29.el6_4.x86_64
Marking /opt/httpd-devel-2.2.15-29.el6_4.x86_64.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package httpd-devel.x86_64 0:2.2.15-29.el6_4 will be installed
--> Processing Dependency: apr-devel for package: httpd-devel-2.2.15-29.el6_4.x86_64
--> Processing Dependency: apr-util-devel for package: httpd-devel-2.2.15-29.el6_4.x86_64
--> Running transaction check
...
--> Finished Dependency Resolution
Dependencies Resolved
=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
httpd-devel x86_64 2.2.15-29.el6_4 /httpd-devel-2.2.15-29.el6_4.x86_64 526 k
Installing for dependencies:
apr-devel x86_64 1.3.9-5.el6_2 rhui-REGION-rhel-server-releases 176 k
...
Transaction Summary
=======================================================================
Install 8 Package(s)
Upgrade 2 Package(s)
Total size: 10 M
Is this ok [y/N]: y
8) Rimozione di pacchetti utilizzando yum
yum remove Rimuove un pacchetto.
# yum remove httpd
Failed to set locale, defaulting to C
Loaded plugins: amazon-id, downloadonly, rhui-lb, security
Setting up Remove Process
Resolving Dependencies
--> Running transaction check
---> Package httpd.x86_64 0:2.2.15-29.el6_4 will be erased
--> Processing Dependency: httpd-mmn = 20051115 for package: php-5.3.3-23.el6_4.x86_64
...
--> Finished Dependency Resolution
...
Removing:
httpd x86_64 2.2.15-29.el6_4 @rhui-REGION-rhel-server-releases 2.9 M
Removing for dependencies:
httpd-devel x86_64 2.2.15-29.el6_4 @/httpd-devel-2.2.15-29.el6_4.x86_64 526 k
php x86_64 5.3.3-23.el6_4 @rhui-REGION-rhel-server-releases 3.5 M
9) Elenca tutti i pacchetti installati
Se vuoi elencare tutti i pacchetti installati, puoi usare il comando yum list install. Questo è utile in combinazione con grep o per verificare se un particolare pacchetto è stato installato. Questo è simile all’interrogazione dei pacchetti installati con rpm -qa
comando.
# yum list installed
Loaded plugins: amazon-id, downloadonly, rhui-lb, security
Installed Packages
ConsoleKit.x86_64 0.4.1-3.el6 @koji-override-0/$releasever
ConsoleKit-libs.x86_64 0.4.1-3.el6 @koji-override-0/$releasever
MAKEDEV.x86_64 3.24-6.el6 @koji-override-0/$releasever
PyYAML.x86_64 3.10-3.1.el6 @koji-override-0/$releasever
Red_Hat_Enterprise_Linux-Release_Notes-6-en-US.noarch
4-2.el6 @koji-override-0/$releasever
....
10) Elenca la memoria disponibile
Elenca il repository disponibile da cui i pacchetti vengono interrogati, installati e aggiornati.
# yum repolist
Loaded plugins: amazon-id, downloadonly, rhui-lb, security
repo id repo name status
rhui-REGION-client-config-server-6 Red Hat Update Infrastructure 2.0 Client Configuration Server 6 4
rhui-REGION-rhel-server-releases Red Hat Enterprise Linux Server 6 (RPMs) 10994
rhui-REGION-rhel-server-releases-optional Red Hat Enterprise Linux Server 6 Optional (RPMs) 6250
repolist: 17248
Puoi elencare i repository abilitati e disabilitati
# yum repolist all
Puoi anche scegliere di installare un pacchetto da un repository specifico
# yum --enablerepo=epel install phpmyadmin
Loaded plugins: fastestmirror
Setting up Install Process
Loading mirror speeds from cached hostfile
epel/metalink | 14 kB ...
epel | 4.7 kB 00:00
epel/primary_db | 6.0 MB 00:00
Resolving Dependencies
--> Running transaction check
---> Package phpMyAdmin.noarch 0:4.0.10.20-1.el6 will be installed
--> Processing Dependency: php-mbstring for package: phpMyAdmin-4.0.10.20-1.el6.noarch
--> Processing Dependency: php-mcrypt for package: phpMyAdmin-4.0.10.20-1.el6.noarch
--> Processing Dependency: php-mysqli for package: phpMyAdmin-4.0.10.20-1.el6.noarch
...
11) Yum storia
È possibile vedere la cronologia di tutte le azioni eseguite dal comando yum sul tuo server.
# yum history
Loaded plugins: fastestmirror
ID | Login user | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
7 | root <root> | 2019-02-20 09:57 | Reinstall | 1
6 | root <root> | 2019-02-20 09:48 | Install | 1
5 | root <root> | 2019-02-20 09:14 | Install | 22
4 | root <root> | 2019-02-20 07:56 | I, U | 103 EE
3 | root <root> | 2017-03-01 20:32 | Install | 15
2 | root <root> | 2017-03-01 20:30 | I, U | 48
1 | System <unset> | 2017-03-01 20:16 | Install | 205
history list
Il risultato viene filtrato dall’azione più recente in cima alla più vecchia in fondo all’elenco. È anche possibile visualizzare le informazioni dettagliate di un’azione. Per esempio
# yum history info 5
Loaded plugins: fastestmirror
Transaction ID : 5
Begin time : Wed Feb 20 09:14:37 2019
Begin rpmdb : 222:02bf9bb9fcdb46cf7494b5b4b01b7df711c6d44d
End time : 09:14:39 2019 (2 seconds)
End rpmdb : 244:874a3a793190f9951bca4b6de4c2326da6ec5de7
User : root <root>
Return-Code : Success
Command Line : groupinstall PHP Support
....
Packages Altered:
Dep-Install apr-1.3.9-5.el6_9.1.x86_64 @base
Dep-Install apr-util-1.3.9-3.el6_0.1.x86_64 @base
Dep-Install apr-util-ldap-1.3.9-3.el6_0.1.x86_64 @base
...
Ed è possibile annullare un’azione, come annullarla. Ad esempio, annulliamo la precedente azione 5, che consisteva nell’installare il gruppo di pacchetti “Supporto PHP”.
# yum history undo 5
Loaded plugins: fastestmirror
Undoing transaction 5, from Wed Feb 20 09:14:37 2019
Dep-Install apr-1.3.9-5.el6_9.1.x86_64 @base
Dep-Install apr-util-1.3.9-3.el6_0.1.x86_64 @base
Dep-Install apr-util-ldap-1.3.9-3.el6_0.1.x86_64 @base
...
...
php-cli x86_64 5.3.3-49.el6 @base 6.2 M
php-common x86_64 5.3.3-49.el6 @base 2.9 M
php-gd x86_64 5.3.3-49.el6 @base 324 k
php-pdo x86_64 5.3.3-49.el6 @base 168 k
php-pear noarch 1:1.9.4-5.el6 @base 2.2 M
php-xml x86_64 5.3.3-49.el6 @base 307 k
Transaction Summary
============================================================================================================
Remove 22 Package(s)
Installed size: 27 M
Is this ok [y/N]:
Ed è possibile ripetere l’azione 5 con il comando.
# yum history redo 5
o per annullare l’azione che abbiamo fatto prima. Ma prima, devi controllare di nuovo la cronologia
# yum history
Loaded plugins: fastestmirror
ID | Login user | Date and time | Action(s) | Altered
-------------------------------------------------------------------------------
8 | root <root> | 2019-02-20 14:15 | Erase | 22
7 | root <root> | 2019-02-20 09:57 | Reinstall | 1
6 | root <root> | 2019-02-20 09:48 | Install | 1
5 | root <root> | 2019-02-20 09:14 | Install | 22
Puoi vedere che l’azione di annullamento è l’azione 8 Rimuoverequindi puoi cancellarlo con
# yum history undo 8
Ma quando ci pensiamo, è facile ripetere l’azione 5 se vuoi tornare a quello che hai fatto.
12) Elenca i pacchetti installati e disponibili
È possibile elencare tutti i pacchetti installati nel computer con il seguente comando:
# yum list installed
Ma l’elenco può essere molto lungo, quindi potresti decidere di andare pagina per pagina
# yum list installed | more
o per elencare solo poche righe
# yum list installed | head -n 20
Perché puoi decidere di ordinare solo le righe che contengono il nome del modello di un pacchetto che stai cercando
# yum list installed | grep php
php.x86_64 5.3.3-49.el6 @base
php-cli.x86_64 5.3.3-49.el6 @base
php-common.x86_64 5.3.3-49.el6 @base
php-gd.x86_64 5.3.3-49.el6 @base
php-pdo.x86_64 5.3.3-49.el6 @base
php-pear.noarch 1:1.9.4-5.el6 @base
php-xml.x86_64 5.3.3-49.el6 @base
Oltre ai pacchetti installati, c’è anche la possibilità di elencare i pacchetti che puoi installare, in ordine di pacchetti disponibili per il tuo sistema, ma questo comando sarà molto lungo
# yum list available
Quindi puoi filtrare con grep per avere le righe dei pacchi che possono contenere i pacchi che stai cercando
# yum list available | grep mysql
13) Installa l’aggiornamento di sicurezza
Durante l’aggiornamento del sistema, puoi scegliere di aggiornare solo gli aggiornamenti di sicurezza invece di aggiornare tutti i pacchetti se sei preoccupato per una modifica che potrebbe apparire su uno dei tuoi pacchetti.
Ma prima, dovrai installare la sicurezza del plugin
# yum -y install yum-plugin-security
...
--> Running transaction check
---> Package yum-plugin-security.noarch 0:1.1.30-42.el6_10 will be installed
Quindi puoi mostrare tutti gli aggiornamenti di sicurezza
# yum updateinfo list security all
Quindi puoi installare gli aggiornamenti di sicurezza
# yum update --security
Oppure puoi scegliere di aggiornare tutti i pacchetti che contengono almeno informazioni di sicurezza all’ultimo aggiornamento di sicurezza
# yum --security update-minimal
Conclusione
Apt viene utilizzato con le distribuzioni Debian e gestisce i pacchetti deb, mentre Yum viene utilizzato nelle distribuzioni basate su RHEL tra cui CentOS, Fedora che gestisce i pacchetti software RPM. Fedora ora usa DNF per la gestione dei pacchetti rpm.
Se hai domande o feedback, sentiti libero di lasciare un commento.