Archive

Posts Tagged ‘linux’

Instalando paquetes rápidamente con yum en RedHat

19 de abril de 2012 Deja un comentario

Uno de los aspectos por los que más trabajo les cuesta adaptarse a trabajar con entornos Unix a los que procenden de Windows es lo tedioso que, a veces, puede resultar instalar nuevo software. En Windows, uno se descarga el instalador, lo ejecuta, contesta a unas cuantas preguntas y listo. En el mundo Linux la cosa no suele ser tan sencilla.

A la hora de instalar, una opción tirar de los ficheros fuente y compilarlos, pero estos no siempre están disponibles y, además, a muchos usuarios les produce cierto respeto (con razón) el tema de compilar. Para facilitar la tarea de instalación, se recurre a gestores de paquetes como el RPM de RedHat o el APT de debian.

Así, un gestor de paquetes facilita bastante el trabajo debido a que nos evita todo el proceso de compilar, pero para ello es necesario que alguien se haya tomado previamente la molestia de generar el paquete de software para ese gestor y lo haya publicado en un repositori de paquetes. Por ejemplo, en RedHat, si queremos instalar un paquete, nos bajaríamos el software empaquetado en formato .rpm de alguno de estos repositorios (por ejemplo, RPM Find).

Una vez tenemos el rpm, instalaríamos con el comando rpm:

# rpm -hiv paquete.rpm
advertencia: la espera de bloqueo de transacción / var/lib/rpm/__db.000
Preparación...########### ################################[100%]
1: paquete ############## #############################[100%]

Fácil, ¿verdad? Pues en realidad… no tanto. Cualquier administrador de sistemas Linux ha sufrido en algún momento la pesadilla de las dependencias de software: hay que instalar el paquete A; pero al ejecutar el rpm nos avisa de que A tiene dependencias de B y C; buscamos y descargamos el paquete B y, cuando lo vamos a instalar, nos aparece una nueva dependencia, esta vez de D; por su parte, al buscar C, no hay forma de encontrar la versión exacta para nuestro sistema, por lo que intentamos instalar una de un sistema inferior; nos funciona, pero cuando intentemos volver a instalar A nos llevaremos la desagradable sorpresa de que no le vale la versión de C que hemos instalado porque necesita una más reciente, etc.

El tema de las dependencias puede llegar a resultar bastante tedioso como se ve. Por eso, lo ideal es trabajar contra repositorios: en lugar de instalar paquete a paquete, configuramos nuestro gestor de paquetes para que se conecte a un repositorio y resuelva las dependencias (esto es, se descargue e instale solito todo lo que necesita para llevar a cabo la instalación que le hemos solicitado).

Las distribuciones Linux pensadas para usuario final, tales como Ubuntu, suelen venir ya con un repositorio on line configurado, de forma que la instalación de software para un usuario novato resulta bastante sencilla. Sin embargo, en un CPD, es más que frecuente que los servidores no tengan salida a Internet por cuestiones de seguridad. En estos casos, podemos montar un repositorio local a partir del DVD de instalacion o de una ISO. Para ello, los pasos a seguir son los siguientes:

  • Creamos un punto de montaje fijo para nuestro repositorio:
# mkdir /repositorio
  • Montamos el dispositivo de CD en el repositorio:
# mount -o loop /dev/cdrom /repositorio
  • Configuramos yum, el gestor avanzado de paquetes de RedHat, para que use ese repositorio. Para ello, hay que editar el fichero /etc/yum.repos.d/file.repo para incluir las siguientes líneas:
[RHEL-Repository]
 name=RHEL Repository
 baseurl=file:///repositorio/Server
 gpgcheck=0
 enable=1

Ojo, porque en el campo baseurl, la parte que hay a continuación de repositorio va a depender de la organización interna del CD que estemos utilizando. Para encontrar el software disponible, yum busca el fichero repomd.xml que cuelga siempre de un directorio llamado repodata. Si no en la ruta que le hemos indicado en baseurl no encuentra un recurso repodata/repomd.xml, nos devolverá un error.

Una vez configurado el repositorio correctamente en el fichero, podemos comprobar que todo es correcto haciendo un listado del software disponible:

# yum list
Loading "rhnplugin" plugin
Loading "security" plugin
Loading "installonlyn" plugin
This system is not registered with RHN.
RHN support will be disabled.
Setting up repositories
RHEL-Repository           100% |=========================| 1.3 kB    00:00                                                                                    
Reading repository metadata in from local files
primary.xml.gz            100% |=========================| 753 kB    00:00                                                                                    
################################################## 2348/2348
Installed Packages
Deployment_Guide-en-US.noarch            5.1.0-11               installed   
...

El comando yum install nos informa de si el paquete está ya instalado (installed) o se encuentra en el repositorio (RHEL Repository). Si el paquete deseado se encuentra en el repositorio, para instalar -ahora sí- basta con ejecutar yum install y él solo se encargará de resolver las dependencias e instalar todo lo necesario:

# yum install mi_paquete_de_soft
Loaded plugins: rhnplugin, security
RHN support will be disabled.
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package mi_paquete_de_soft 0:6.6-2.el5_1.7 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

==========================================================================
 Package           Arch   Version       Repository            Size
=====================================================================
Installing:
 mi_paquete_de_soft i386  6.6-2.el5_1.7 RHEL-Repository       176 k

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

Total download size: 176 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     : paquete                                1/1

Installed:
  mi_paquete_de_soft 0:6.6-2.el5_1.7

Complete!

Ojo, no compilar no es la panacea. Si pretendemos instalar con cierta personalización (elegir la ruta de instalación, que nuestro software utilice una librería determinada de entre las varias posibles que tenemos instalades, etc.), lo suyo es hacer el pequeño esfuerzo de compilar. Al principio es complicado, pero el aprendizaje merece la pena.

Categorías:Linux Etiquetas: , , ,