20 ordres YUM per a la gestió de paquets de Linux


En aquest article, aprendrem a instal·lar, actualitzar, eliminar, trobar paquets, gestionar paquets i dipòsits en sistemes Linux mitjançant l'eina YUM (Yellowdog Updater Modified) desenvolupada per RedHat.

Les ordres d'exemple que es mostren en aquest article estan pràcticament provades a les nostres certificacions RHEL, o simplement per explorar maneres d'instal·lar nous paquets i mantenir el vostre sistema actualitzat.

El requisit bàsic d'aquest article és que heu de tenir una comprensió bàsica de les ordres i un sistema operatiu Linux que funcioni, on podeu explorar i practicar totes les ordres que s'enumeren a continuació.

Què és YUM?

YUM (Yellowdog Updater Modified) és una línia d'ordres de codi obert i una eina de gestió de paquets basada en gràfics per a sistemes Linux basats en RPM (RedHat Package Manager).

Permet als usuaris i administradors del sistema instal·lar, actualitzar, eliminar o cercar paquets de programari fàcilment en un sistema. Va ser desenvolupat i llançat per Seth Vidal sota GPL (Llicència Pública General) com a codi obert, el que significa que qualsevol pot descarregar-se i accedir al codi per corregir errors i desenvolupar paquets personalitzats.

YUM utilitza nombrosos repositoris de tercers per instal·lar paquets automàticament resolent els problemes de dependències.

Actualització: l'ordre yum es substitueix per les distribucions basades en RPM.

Per instal·lar un paquet anomenat Firefox, només cal que executeu l'ordre següent, trobarà i instal·larà automàticament totes les dependències necessàries per al Firefox.

# yum install firefox
Loaded plugins: fastestmirror
Dependencies Resolved

================================================================================================
 Package                    Arch        Version                    Repository            Size        
================================================================================================
Updating:
firefox                        i686        10.0.6-1.el6.centos     updates             20 M
Updating for dependencies:
 xulrunner                     i686        10.0.6-1.el6.centos     updates             12 M

Transaction Summary
================================================================================================
Install       0 Package(s)
Upgrade       2 Package(s)

Total download size: 32 M
Is this ok [y/N]: y
Downloading Packages:
(1/2): firefox-10.0.6-1.el6.centos.i686.rpm                                |  20 MB   01:10
(2/2): xulrunner-10.0.6-1.el6.centos.i686.rpm                              |  12 MB   00:52
------------------------------------------------------------------------------------------------
Total                                                           63 kB/s |  32 MB   02:04

Updated:
  firefox.i686 0:10.0.6-1.el6.centos

Dependency Updated:
  xulrunner.i686 0:10.0.6-1.el6.centos

Complete!

L'ordre anterior us demanarà confirmació abans d'instal·lar qualsevol paquet al vostre sistema. Si voleu instal·lar paquets automàticament sense demanar cap confirmació, utilitzeu l'opció -y com es mostra a continuació.

# yum -y install firefox

Per eliminar completament un paquet amb totes les dependències, només cal que executeu l'ordre següent tal com es mostra a continuació.

# yum remove firefox
Loaded plugins: fastestmirror
Setting up Remove Process
Resolving Dependencies
--> Running transaction check
---> Package firefox.i686 0:10.0.6-1.el6.centos set to be erased
--> Finished Dependency Resolution

Dependencies Resolved

====================================================================================================
 Package                    Arch        Version                        Repository            Size        
====================================================================================================
Removing:
 firefox                    i686        10.0.6-1.el6.centos            @updates              23 M

Transaction Summary
====================================================================================================
Remove        1 Package(s)
Reinstall     0 Package(s)
Downgrade     0 Package(s)

Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Erasing        : firefox-10.0.6-1.el6.centos.i686                                                                                                                          1/1

Removed:
  firefox.i686 0:10.0.6-1.el6.centos

Complete!

De la mateixa manera, l'ordre anterior demanarà confirmació abans d'eliminar un paquet. Per desactivar el missatge de confirmació, només cal que afegiu l'opció -y tal com es mostra a continuació.

# yum -y remove firefox

Suposem que teniu una versió obsoleta del paquet MySQL i voleu actualitzar-la a la darrera versió estable. Només heu d'executar l'ordre següent, resoldrà automàticament tots els problemes de dependències i els instal·larà.

# yum update mysql
Loaded plugins: fastestmirror
Dependencies Resolved

============================================================================================================
 Package            Arch                Version                    Repository                    Size
============================================================================================================
Updating:
 vsftpd             i386                2.0.5-24.el5_8.1           updates                       144 k

Transaction Summary
============================================================================================================
Install       0 Package(s)
Upgrade       1 Package(s)

Total size: 144 k
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Updating       : vsftpd                                                                     1/2
  Cleanup        : vsftpd                                                                     2/2

Updated:
  vsftpd.i386 0:2.0.5-24.el5_8.1

Complete!

Utilitzeu la funció de llista per cercar el paquet específic amb un nom. Per exemple, per cercar un paquet anomenat OpenSSH, utilitzeu l'ordre.

# yum list openssh
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.neu.edu.cn
 * epel: mirror.neu.edu.cn
 * extras: mirror.neu.edu.cn
 * rpmforge: mirror.nl.leaseweb.net
 * updates: mirror.nus.edu.sg
Installed Packages
openssh.i386                                       4.3p2-72.el5_6.3                                                                      installed
Available Packages                                 4.3p2-82.el5                                                                          base

Per fer la cerca més precisa, definiu els noms dels paquets amb la seva versió, per si ho sabeu. Per exemple, per cercar una versió específica OpenSSH-4.3p2 del paquet, utilitzeu l'ordre.

# yum list openssh-4.3p2

[ També us pot agradar: Com protegir i endurir el servidor OpenSSH ]

Si no recordeu el nom exacte del paquet, feu servir la funció de cerca per cercar tots els paquets disponibles perquè coincideixin amb el nom del paquet que heu especificat. Per exemple, per cercar tots els paquets que coincideixen amb la paraula.

# yum search vsftpd
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.neu.edu.cn
 * epel: mirror.neu.edu.cn
 * extras: mirror.neu.edu.cn
 * rpmforge: mirror.nl.leaseweb.net
 * updates: ftp.iitm.ac.in
============================== Matched: vsftpd ========================
ccze.i386 : A robust log colorizer
pure-ftpd-selinux.i386 : SELinux support for Pure-FTPD
vsftpd.i386 : vsftpd - Very Secure Ftp Daemon

Digues que t'agradaria conèixer la informació sobre un paquet abans d'instal·lar-lo. Per obtenir informació sobre un paquet només heu d'emetre l'ordre següent.

# yum info firefox
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.neu.edu.cn
 * epel: mirror.neu.edu.cn
 * extras: mirror.neu.edu.cn
 * rpmforge: mirror.nl.leaseweb.net
 * updates: ftp.iitm.ac.in
Available Packages
Name       : firefox
Arch       : i386
Version    : 10.0.6
Release    : 1.el5.centos
Size       : 20 M
Repo       : updates
Summary    : Mozilla Firefox Web browser
URL        : http://www.mozilla.org/projects/firefox/
License    : MPLv1.1 or GPLv2+ or LGPLv2+
Description: Mozilla Firefox is an open-source web browser, designed for standards
           : compliance, performance and portability.

Per llistar tots els paquets disponibles a la base de dades Yum, utilitzeu l'ordre següent.

# yum list | less

Per llistar tots els paquets instal·lats en un sistema, només heu d'emetre l'ordre següent, mostrarà tots els paquets instal·lats.

# yum list installed | less

La funció Yum proporciona s'utilitza per trobar a quin paquet pertany un fitxer específic. Per exemple, si voleu saber el nom del paquet que té el fitxer /etc/httpd/conf/httpd.conf.

# yum provides /etc/httpd/conf/httpd.conf
Loaded plugins: fastestmirror
httpd-2.2.3-63.el5.centos.i386 : Apache HTTP Server
Repo        : base
Matched from:
Filename    : /etc/httpd/conf/httpd.conf

httpd-2.2.3-63.el5.centos.1.i386 : Apache HTTP Server
Repo        : updates
Matched from:
Filename    : /etc/httpd/conf/httpd.conf

httpd-2.2.3-65.el5.centos.i386 : Apache HTTP Server
Repo        : updates
Matched from:
Filename    : /etc/httpd/conf/httpd.conf

httpd-2.2.3-53.el5.centos.1.i386 : Apache HTTP Server
Repo        : installed
Matched from:
Other       : Provides-match: /etc/httpd/conf/httpd.conf

Per saber quants paquets instal·lats al vostre sistema tenen actualitzacions disponibles, comproveu utilitzar l'ordre següent.

# yum check-update

Per mantenir el vostre sistema actualitzat amb totes les actualitzacions de paquets binaris i de seguretat, executeu l'ordre següent. Instal·larà tots els darrers pedaços i actualitzacions de seguretat al vostre sistema.

# yum update

A Linux, una sèrie de paquets s'agrupen en un grup particular. En lloc d'instal·lar paquets individuals amb yum, podeu instal·lar un grup concret que instal·larà tots els paquets relacionats que pertanyen al grup. Per exemple, per llistar tots els grups disponibles, només heu d'emetre l'ordre següent.

# yum grouplist
Installed Groups:
   Administration Tools
   DNS Name Server
   Dialup Networking Support
   Editors
   Engineering and Scientific
   FTP Server
   Graphics
   Java Development
   Legacy Network Server
Available Groups:
   Authoring and Publishing
   Base
   Beagle
   Cluster Storage
   Clustering
   Development Libraries
   Development Tools
   Eclipse
   Educational Software
   KDE (K Desktop Environment)
   KDE Software Development

Per instal·lar un grup de paquets concret, utilitzem l'opció com a groupinstall. Per exemple, per instal·lar MySQL Database, només cal que executeu l'ordre següent.

# yum groupinstall 'MySQL Database'
Dependencies Resolved

=================================================================================================
Package								Arch      Version			 Repository        Size
=================================================================================================
Updating:
 unixODBC                           i386      2.2.11-10.el5      base              290 k
Installing for dependencies:
 unixODBC-libs                      i386      2.2.11-10.el5      base              551 k

Transaction Summary
=================================================================================================
Install       1 Package(s)
Upgrade       1 Package(s)

Total size: 841 k
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing     : unixODBC-libs	1/3
  Updating       : unixODBC         2/3
  Cleanup        : unixODBC         3/3

Dependency Installed:
  unixODBC-libs.i386 0:2.2.11-10.el5

Updated:
  unixODBC.i386 0:2.2.11-10.el5

Complete!

Per actualitzar els paquets de grup instal·lats existents, només cal que executeu l'ordre següent, tal com es mostra a continuació.

# yum groupupdate 'DNS Name Server'

Dependencies Resolved
================================================================================================================
 Package			Arch	        Version				Repository           Size
================================================================================================================
Updating:
 bind                           i386            30:9.3.6-20.P1.el5_8.2          updates              981 k
 bind-chroot                    i386            30:9.3.6-20.P1.el5_8.2          updates              47 k
Updating for dependencies:
 bind-libs                      i386            30:9.3.6-20.P1.el5_8.2          updates              864 k
 bind-utils                     i386            30:9.3.6-20.P1.el5_8.2          updates              174 k

Transaction Summary
================================================================================================================
Install       0 Package(s)
Upgrade       4 Package(s)

Total size: 2.0 M
Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Updating       : bind-libs            1/8
  Updating       : bind                 2/8
  Updating       : bind-chroot          3/8
  Updating       : bind-utils           4/8
  Cleanup        : bind                 5/8
  Cleanup        : bind-chroot          6/8
  Cleanup        : bind-utils           7/8
  Cleanup        : bind-libs            8/8

Updated:
  bind.i386 30:9.3.6-20.P1.el5_8.2                  bind-chroot.i386 30:9.3.6-20.P1.el5_8.2

Dependency Updated:
  bind-libs.i386 30:9.3.6-20.P1.el5_8.2             bind-utils.i386 30:9.3.6-20.P1.el5_8.2

Complete!

Per suprimir o eliminar qualsevol grup instal·lat existent del sistema, només cal que utilitzeu l'ordre següent.

# yum groupremove 'DNS Name Server'

Dependencies Resolved

===========================================================================================================
 Package                Arch              Version                         Repository          Size
===========================================================================================================
Removing:
 bind                   i386              30:9.3.6-20.P1.el5_8.2          installed           2.1 M
 bind-chroot            i386              30:9.3.6-20.P1.el5_8.2          installed           0.0

Transaction Summary
===========================================================================================================
Remove        2 Package(s)
Reinstall     0 Package(s)
Downgrade     0 Package(s)

Is this ok [y/N]: y
Downloading Packages:
Running rpm_check_debug
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
  Erasing        : bind                                                   1/2
warning: /etc/sysconfig/named saved as /etc/sysconfig/named.rpmsave
  Erasing        : bind-chroot                                            2/2

Removed:
  bind.i386 30:9.3.6-20.P1.el5_8.2                                        bind-chroot.i386 30:9.3.6-20.P1.el5_8.2

Complete!

Per llistar tots els dipòsits Yum activats al vostre sistema, utilitzeu l'opció següent.

# yum repolist

repo id                     repo name                                            status
base                        CentOS-5 - Base                                      enabled:  2,725
epel                        Extra Packages for Enterprise Linux 5 - i386         enabled:  5,783
extras                      CentOS-5 - Extras                                    enabled:    282
mod-pagespeed               mod-pagespeed                                        enabled:      1
rpmforge                    RHEL 5 - RPMforge.net - dag                          enabled: 11,290
updates                     CentOS-5 - Updates                                   enabled:    743
repolist: 20,824

La següent comanda mostrarà tots els dipòsits yum activats i desactivats al sistema.

# yum repolist all

repo id                     repo name                                            status
C5.0-base                   CentOS-5.0 - Base                                    disabled
C5.0-centosplus             CentOS-5.0 - Plus                                    disabled
C5.0-extras                 CentOS-5.0 - Extras                                  disabled
base                        CentOS-5 - Base                                      enabled:  2,725
epel                        Extra Packages for Enterprise Linux 5 - i386         enabled:  5,783
extras                      CentOS-5 - Extras                                    enabled:    282
repolist: 20,824

Per instal·lar un paquet concret des d'un dipòsit específic activat o desactivat, heu d'utilitzar --enablerepo una opció a la vostra comanda yum. Per exemple, per instal·lar el paquet PhpMyAdmin, només heu d'executar l'ordre.

# yum --enablerepo=epel install phpmyadmin

Dependencies Resolved
=============================================================================================
 Package                Arch           Version            Repository           Size
=============================================================================================
Installing:
 phpMyAdmin             noarch         3.5.1-1.el6        epel                 4.2 M

Transaction Summary
=============================================================================================
Install       1 Package(s)

Total download size: 4.2 M
Installed size: 17 M
Is this ok [y/N]: y
Downloading Packages:
phpMyAdmin-3.5.1-1.el6.noarch.rpm                       | 4.2 MB     00:25
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
  Installing : phpMyAdmin-3.5.1-1.el6.noarch             1/1
  Verifying  : phpMyAdmin-3.5.1-1.el6.noarch             1/1

Installed:
  phpMyAdmin.noarch 0:3.5.1-1.el6

Complete!

La utilitat Yum proporciona un shell personalitzat on podeu executar diverses ordres.

# yum shell
Loaded plugins: fastestmirror
Setting up Yum Shell
> update httpd
Loading mirror speeds from cached hostfile
 * base: mirrors.sin3.sg.voxel.net
 * epel: ftp.riken.jp
 * extras: mirrors.sin3.sg.voxel.net
 * updates: mirrors.sin3.sg.voxel.net
Setting up Update Process
>

De manera predeterminada, yum manté totes les dades dels paquets habilitats per al repositori a /var/cache/yum/ amb cada subdirectori, per netejar tots els fitxers de la memòria cau del dipòsit habilitat, heu d'executar l'ordre següent regularment per netejar tota la memòria cau i fer Assegureu-vos que no s'està utilitzant res d'espai innecessari. No volem donar la sortida de l'ordre següent, perquè ens agrada mantenir les dades a la memòria cau tal com estan.

# yum clean all

Per veure totes les transaccions anteriors de l'ordre yum, només cal que utilitzeu l'ordre següent.

# yum history

Loaded plugins: fastestmirror
ID     | Login user               | Date and time    | Action(s)      | Altered
-------------------------------------------------------------------------------
    10 | root               | 2012-08-11 15:19 | Install        |    3
     9 | root               | 2012-08-11 15:11 | Install        |    1
     8 | root               | 2012-08-11 15:10 | Erase          |    1 EE
     7 | root               | 2012-08-10 17:44 | Install        |    1
     6 | root               | 2012-08-10 12:19 | Install        |    2
     5 | root               | 2012-08-10 12:14 | Install        |    3
     4 | root               | 2012-08-10 12:12 | I, U           |   13 E<
     3 | root               | 2012-08-09 13:01 | Install        |    1 >
     2 | root               | 2012-08-08 20:13 | I, U           |  292 EE
     1 | System            | 2012-08-08 17:15 | Install        |  560
history list

Hem intentat cobrir totes les ordres bàsiques per avançar yum amb els seus exemples. Si alguna cosa relacionada amb les ordres yum pot haver perdut. Si us plau, actualitzeu-nos a través del nostre quadre de comentaris. Per tant, seguim actualitzant el mateix en funció dels comentaris rebuts.