En este artículo, aprenderemos a instalar, actualizar, eliminar, encontrar paquetes, gestionar paquetes y repositorios en sistemas Linux utilizando la herramienta YUM (Yellowdog Updater Modified) desarrollada por RedHat. Los comandos de ejemplo que se muestran en este artículo están prácticamente probados en nuestro servidor CentOS 6.3, puedes utilizar este material con fines de estudio, certificaciones o simplemente para explorar formas de instalar nuevos paquetes y mantener tu sistema actualizado. El requisito básico de este artículo es, que usted debe tener una comprensión básica de los comandos y un sistema operativo Linux de trabajo, donde se puede explorar y practicar todos los comandos que se enumeran a continuación.
¿Qué es YUM?
YUM (Yellowdog Updater Modified) es una herramienta de gestión de paquetes de código abierto, tanto gráfica como de línea de comandos, para sistemas Linux basados en RPM (RedHat Package Manager). Permite a los usuarios y al administrador del sistema instalar, actualizar, eliminar o buscar fácilmente paquetes de software en un sistema. Fue desarrollado y publicado por Seth Vidal bajo licencia GPL (General Public License) como código abierto, lo que significa que cualquiera puede descargar y acceder al código para corregir errores y desarrollar paquetes personalizados. YUM utiliza numerosos repositorios de terceros para instalar paquetes automáticamente resolviendo sus problemas de dependencias.
1. Instalar un paquete con YUM
Para instalar un paquete llamado Firefox 14, basta con ejecutar el siguiente comando que encontrará e instalará automáticamente todas las dependencias necesarias para Firefox.
# yum install firefoxLoaded plugins: fastestmirrorDependencies Resolved================================================================================================ Package Arch Version Repository Size ================================================================================================Updating:firefox i686 10.0.6-1.el6.centos updates 20 MUpdating for dependencies: xulrunner i686 10.0.6-1.el6.centos updates 12 MTransaction Summary================================================================================================Install 0 Package(s)Upgrade 2 Package(s)Total download size: 32 MIs this ok : yDownloading 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:04Updated: firefox.i686 0:10.0.6-1.el6.centosDependency Updated: xulrunner.i686 0:10.0.6-1.el6.centosComplete!
El comando anterior pedirá confirmación antes de instalar cualquier paquete en tu sistema. Si quieres instalar los paquetes automáticamente sin pedir ninguna confirmación, utiliza la opción -y como se muestra en el siguiente ejemplo.
# yum -y install firefox
2. Eliminar un paquete con YUM
Para eliminar un paquete completamente con todas sus dependencias, simplemente ejecute el siguiente comando como se muestra a continuación.
# yum remove firefoxLoaded plugins: fastestmirrorSetting up Remove ProcessResolving Dependencies--> Running transaction check---> Package firefox.i686 0:10.0.6-1.el6.centos set to be erased--> Finished Dependency ResolutionDependencies Resolved==================================================================================================== Package Arch Version Repository Size ====================================================================================================Removing: firefox i686 10.0.6-1.el6.centos @updates 23 MTransaction Summary====================================================================================================Remove 1 Package(s)Reinstall 0 Package(s)Downgrade 0 Package(s)Is this ok : yDownloading Packages:Running rpm_check_debugRunning Transaction TestTransaction Test SucceededRunning Transaction Erasing : firefox-10.0.6-1.el6.centos.i686 1/1Removed: firefox.i686 0:10.0.6-1.el6.centosComplete!
De la misma manera el comando anterior pedirá confirmación antes de eliminar un paquete. Para deshabilitar la solicitud de confirmación sólo tiene que añadir la opción -y como se muestra a continuación.
# yum -y remove firefox
3. Actualizar un paquete usando YUM
Digamos que tiene una versión obsoleta del paquete MySQL y quiere actualizarlo a la última versión estable. Simplemente ejecuta el siguiente comando que resolverá automáticamente todos los problemas de dependencias y los instalará.
# yum update mysqlLoaded plugins: fastestmirrorDependencies Resolved============================================================================================================ Package Arch Version Repository Size============================================================================================================Updating: vsftpd i386 2.0.5-24.el5_8.1 updates 144 kTransaction Summary============================================================================================================Install 0 Package(s)Upgrade 1 Package(s)Total size: 144 kIs this ok : yDownloading Packages:Running rpm_check_debugRunning Transaction TestFinished Transaction TestTransaction Test SucceededRunning Transaction Updating : vsftpd 1/2 Cleanup : vsftpd 2/2Updated: vsftpd.i386 0:2.0.5-24.el5_8.1Complete!
4. Listar un paquete usando YUM
Usa la función de lista para buscar el paquete específico con nombre. Por ejemplo para buscar un paquete llamado openssh, usa el comando.
# yum list opensshLoaded plugins: fastestmirrorLoading 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.sgInstalled Packagesopenssh.i386 4.3p2-72.el5_6.3 installedAvailable Packages 4.3p2-82.el5 base
Para hacer tu búsqueda más precisa, define el nombre del paquete con su versión, en caso de que lo sepas. Por ejemplo para buscar una versión específica openssh-4.3p2 del paquete, utiliza el comando.
# yum list openssh-4.3p2
5. Buscar un paquete con YUM
Si no recuerda el nombre exacto del paquete, entonces utilice la función de búsqueda para buscar todos los paquetes disponibles que coincidan con el nombre del paquete que especificó. Por ejemplo, para buscar todos los paquetes que coincidan con la palabra .
# yum search vsftpdLoaded plugins: fastestmirrorLoading 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 colorizerpure-ftpd-selinux.i386 : SELinux support for Pure-FTPDvsftpd.i386 : vsftpd - Very Secure Ftp Daemon
6. Obtener información de un paquete usando YUM
Supongamos que desea conocer la información de un paquete antes de instalarlo. Para obtener la información de un paquete sólo tienes que ejecutar el siguiente comando.
# yum info firefoxLoaded plugins: fastestmirrorLoading 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.inAvailable PackagesName : firefoxArch : i386Version : 10.0.6Release : 1.el5.centosSize : 20 MRepo : updatesSummary : Mozilla Firefox Web browserURL : 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.
7. Listar todos los paquetes disponibles usando YUM
Para listar todos los paquetes disponibles en la base de datos de Yum, utiliza el siguiente comando.
# yum list | less
8. Listar todos los paquetes instalados usando YUM
Para listar todos los paquetes instalados en un sistema, simplemente emite el siguiente comando, que mostrará todos los paquetes instalados.
# yum list installed | less
9. Función Yum Provides
La función Yum provides se utiliza para encontrar a qué paquete pertenece un archivo específico. Por ejemplo, si quieres saber el nombre del paquete que tiene el archivo /etc/httpd/conf/httpd.conf.
# yum provides /etc/httpd/conf/httpd.confLoaded plugins: fastestmirrorhttpd-2.2.3-63.el5.centos.i386 : Apache HTTP ServerRepo : baseMatched from:Filename : /etc/httpd/conf/httpd.confhttpd-2.2.3-63.el5.centos.1.i386 : Apache HTTP ServerRepo : updatesMatched from:Filename : /etc/httpd/conf/httpd.confhttpd-2.2.3-65.el5.centos.i386 : Apache HTTP ServerRepo : updatesMatched from:Filename : /etc/httpd/conf/httpd.confhttpd-2.2.3-53.el5.centos.1.i386 : Apache HTTP ServerRepo : installedMatched from:Other : Provides-match: /etc/httpd/conf/httpd.conf
10. Comprobar si hay actualizaciones disponibles usando Yum
Para saber cuántos de los paquetes instalados en tu sistema tienen actualizaciones disponibles, para comprobarlo utiliza el siguiente comando.
# yum check-update
11. Actualizar el sistema con Yum
Para mantener tu sistema al día con todas las actualizaciones de seguridad y paquetes binarios, ejecuta el siguiente comando. Instalará todos los últimos parches y actualizaciones de seguridad en su sistema.
# yum update
12. Listar todos los paquetes de grupo disponibles
En Linux, un número de paquetes están agrupados en un grupo particular. En lugar de instalar paquetes individuales con yum, puede instalar un grupo particular que instalará todos los paquetes relacionados que pertenecen al grupo. Por ejemplo, para listar todos los grupos disponibles, simplemente emita el siguiente comando.
# yum grouplistInstalled Groups: Administration Tools DNS Name Server Dialup Networking Support Editors Engineering and Scientific FTP Server Graphics Java Development Legacy Network ServerAvailable Groups: Authoring and Publishing Base Beagle Cluster Storage Clustering Development Libraries Development Tools Eclipse Educational Software KDE (K Desktop Environment) KDE Software Development
13. Instalar un grupo de paquetes
Para instalar un grupo de paquetes en particular, usamos la opción como groupinstall. Por ejemplo, para instalar «Base de datos MySQL», basta con ejecutar el siguiente comando.
# yum groupinstall 'MySQL Database'Dependencies Resolved=================================================================================================PackageArch Version Repository Size=================================================================================================Updating: unixODBC i386 2.2.11-10.el5 base 290 kInstalling for dependencies: unixODBC-libs i386 2.2.11-10.el5 base 551 kTransaction Summary=================================================================================================Install 1 Package(s)Upgrade 1 Package(s)Total size: 841 kIs this ok : yDownloading Packages:Running rpm_check_debugRunning Transaction TestFinished Transaction TestTransaction Test SucceededRunning Transaction Installing : unixODBC-libs1/3 Updating : unixODBC 2/3 Cleanup : unixODBC 3/3Dependency Installed: unixODBC-libs.i386 0:2.2.11-10.el5Updated: unixODBC.i386 0:2.2.11-10.el5Complete!
14. Actualizar un paquete de grupo
Para actualizar cualquier paquete de grupo existente instalado, sólo tiene que ejecutar el siguiente comando como se muestra a continuación.
# yum groupupdate 'DNS Name Server'Dependencies Resolved================================================================================================================ PackageArch VersionRepository 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 kUpdating 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 kTransaction Summary================================================================================================================Install 0 Package(s)Upgrade 4 Package(s)Total size: 2.0 MIs this ok : yDownloading Packages:Running rpm_check_debugRunning Transaction TestFinished Transaction TestTransaction Test SucceededRunning 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/8Updated: bind.i386 30:9.3.6-20.P1.el5_8.2 bind-chroot.i386 30:9.3.6-20.P1.el5_8.2Dependency Updated: bind-libs.i386 30:9.3.6-20.P1.el5_8.2 bind-utils.i386 30:9.3.6-20.P1.el5_8.2Complete!
15. Eliminar un Grupo de Paquetes
Para eliminar o quitar cualquier grupo instalado existente en el sistema, sólo tienes que utilizar el siguiente comando.
# 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.0Transaction Summary===========================================================================================================Remove 2 Package(s)Reinstall 0 Package(s)Downgrade 0 Package(s)Is this ok : yDownloading Packages:Running rpm_check_debugRunning Transaction TestFinished Transaction TestTransaction Test SucceededRunning Transaction Erasing : bind 1/2warning: /etc/sysconfig/named saved as /etc/sysconfig/named.rpmsave Erasing : bind-chroot 2/2Removed: bind.i386 30:9.3.6-20.P1.el5_8.2 bind-chroot.i386 30:9.3.6-20.P1.el5_8.2Complete!
16. List Enabled Yum Repositories
Para listar todos los repositorios Yum habilitados en su sistema, utilice la siguiente opción.
# yum repolistrepo id repo name statusbase CentOS-5 - Base enabled: 2,725epel Extra Packages for Enterprise Linux 5 - i386 enabled: 5,783extras CentOS-5 - Extras enabled: 282mod-pagespeed mod-pagespeed enabled: 1rpmforge RHEL 5 - RPMforge.net - dag enabled: 11,290updates CentOS-5 - Updates enabled: 743repolist: 20,824
16. Listar todos los repositorios Yum habilitados y deshabilitados
El siguiente comando mostrará todos los repositorios yum habilitados y deshabilitados en el sistema.
# yum repolist allrepo id repo name statusC5.0-base CentOS-5.0 - Base disabledC5.0-centosplus CentOS-5.0 - Plus disabledC5.0-extras CentOS-5.0 - Extras disabledbase CentOS-5 - Base enabled: 2,725epel Extra Packages for Enterprise Linux 5 - i386 enabled: 5,783extras CentOS-5 - Extras enabled: 282repolist: 20,824
17. Instalar un paquete desde un repositorio específico
Para instalar un paquete concreto desde un repositorio específico habilitado o deshabilitado, debe utilizar la opción -enablerepo en su comando yum. Por ejemplo, para instalar el paquete PhpMyAdmin 3.5.2, simplemente ejecute el comando.
# yum --enablerepo=epel install phpmyadminDependencies Resolved============================================================================================= Package Arch Version Repository Size=============================================================================================Installing: phpMyAdmin noarch 3.5.1-1.el6 epel 4.2 MTransaction Summary=============================================================================================Install 1 Package(s)Total download size: 4.2 MInstalled size: 17 MIs this ok : yDownloading Packages:phpMyAdmin-3.5.1-1.el6.noarch.rpm | 4.2 MB 00:25Running rpm_check_debugRunning Transaction TestTransaction Test SucceededRunning Transaction Installing : phpMyAdmin-3.5.1-1.el6.noarch 1/1 Verifying : phpMyAdmin-3.5.1-1.el6.noarch 1/1Installed: phpMyAdmin.noarch 0:3.5.1-1.el6Complete!
18. Shell interactivo de Yum
La utilidad Yum proporciona un shell personalizado donde se pueden ejecutar múltiples comandos.
# yum shellLoaded plugins: fastestmirrorSetting up Yum Shell> update httpdLoading 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.netSetting up Update Process>
19. Limpiar la caché de Yum
Por defecto yum guarda todos los datos de los paquetes habilitados en el repositorio en /var/cache/yum/ con cada subdirectorio, para limpiar todos los archivos en caché del repositorio habilitado, es necesario ejecutar el siguiente comando regularmente para limpiar toda la caché y asegurarse de que no hay nada innecesario está utilizando el espacio. No queremos dar la salida del siguiente comando, porque nos gusta mantener los datos en caché tal y como están.
# yum clean all
20. Ver el historial de Yum
Para ver todas las transacciones pasadas del comando yum, basta con utilizar el siguiente comando.
# yum historyLoaded plugins: fastestmirrorID | 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 | 560history list