Administración de paquetes RPM en Linux Mandrake.
Administración de paquetes RPM en Linux
Mandrake.
Introducciones.
Seguramente alguna vez nos ha sucedido que bajamos un paquete RPM
desde Internet y al intentar instalarlo mediante el comando \"rpm
-i paquete.rpm\" este nos informa que necesitamos tener instalado
previamente otros paquetes RPM, ósea las dependencias.
Entonces bajamos las dependencias del paquete original e intentamos
instalarlas, pero sucede algo similar, ¡alguna dependencia del
paquete original necesita otras dependencias!
Para facilitarnos la instalación
de aplicaciones, necesitamos una herramienta que obtenga e instale
previamente las dependencias y de forma automática, esta ya
existe en Mandrake y se llama URPMI. Veamos algunas de sus
características:
Obtiene los paquetes desde un
disco local, un CD-ROM o un servidor FTP o HTTP.
Resuelve las dependencias
automáticamente durante una instalación, actualización
o eliminación de paquetes RPM.
Mantiene una base de datos que
contiene: los nombres de los paquetes que se pueden instalar o
actualizar (paquetes disponibles), de donde se pueden bajar (CD-ROM,
servidor ftp, etc, a estos se los llama repositorios), las
dependencias que necesitan, descripciones, etc.
Nos permite hacer busqueda de paquetes en su base de datos.
En resumen, el sistema de
administración de paquetes URPMI consta de las siguientes
aplicaciones:
urpmi:
Obtiene e instala paquetes.
urpme:
Desinstala (erase) paquetes.
urpmq:
Realiza búsquedas (query) en la base de datos.
urpmf
Realiza busqueda de archivos (files) dentro de los paquetes
RPM.
urpmi.addmedia:
Agrega un repositorio.
urpmi.removemedia:
Quita un repositorio.
urpmi.update:
Actualiza un repositorio.
En las siguiente secciones veremos cada una de estas aplicaciones
con algún ejemplo.
Instalación de paquetes mediante urpmi.
urpmi es la aplicación para instalar los paquetes,
funciona en modo texto de la siguiente manera:
# urpmi paquete_a_instalar
Por ejemplo para instalar tcpdump (monitor de red) ejecutamos
el siguiente comando desde la consola:
---------------------------------------- # urpmi tcpdump Para resolver las dependencias, se instalarán los paquetes siguientes (1 MB): libpcap0-0.7.1-2mdk.i586 tcpdump-3.7.1-1mdk.i586 ¿Esta todo bien? (S/n) s Por favor inserte el soporte denominado «Installation CD 1 (x86) (cdrom1)» en el dispositivo [/dev/hdb] Presione «Intro» cuando este listo... Por favor inserte el soporte denominado «Installation CD 2 (x86) (cdrom2)» en el dispositivo [/dev/hdb] Presione «Intro» cuando este listo... Instalando /var/cache/urpmi/rpms/libpcap0-0.7.1-2mdk.i586.rpm /mnt/cdrom/Mandrake/RPMS2/tcpdump-3.7.1-1mdk.i586.rpm Preparando ############################################### 1:libpcap0 ############################################### 2:tcpdump ############################################### # ----------------------------------------
Veamos básicamente que hizo urpmi:
Busco en su base de datos
(paquetes disponibles) el paquete tcpdump y lo encontró.
Comprobó si las
dependencias de tcpdump estaban instaladas en el sistema,
faltaba libpcap0.
Solicito el CD-ROM de
Instalación 1 donde se halla el paquete libpcap0.
Solicito el CD-ROM de
Instalación 2 donde se halla el paquete tcpdump.
Realizo la instalación de la dependencia que faltaba
(libpcap0) y luego del paquete tcpdump.
Todo esto con un solo comando muy sencillo, ¡grandioso!
Mas información sobre urpmi en su pagina del manual.
Eliminación de paquetes mediante urpme.
urpme desinstala (erase) paquetes, su sintaxis es la
siguiente:
# urpme paquete_a_desinstalar
urpme desinstala el paquete que le indicamos a través
de la linea de comando y todos los paquetes que dependan de este
ultimo.
En el ejemplo anterior vimos que tcpdump depende de
libpcap0 para su correcto funcionamiento. Si ejecutamos \"urpme
tcpump\" solo desinstalara tcpdump, pero si tratamos
de desintalar libpcap0 con \"urpme libpcap0\"
primero tendremos que desinstalar tcpdump, para no generar un
error de dependencias, ósea no dejar un paquete instalado
cuando sus dependencias no lo están.
Veamos que sucede si intentamos desinstalar libpcap0 sin
haber desinstalado tcpdump.
---------------------------------------- # urpme libpcap0 Para resolver las dependencias, se desinstalarán los paquetes siguientes (1 MB): tcpdump-3.7.1-1mdk libpcap0-0.7.1-2mdk ¿Esta todo bien? (S/n) s
#
----------------------------------------
urpme desinstalo primero tcpdump y luego libpcap0
para no dejar a tcpdump sin su dependencia.
Mas información en la pagina del manual de urpme.
Búsqueda de paquetes RPM mediante urpmq.
urpmq permite realizar una consulta a
la base de datos de paquetes disponibles, se utiliza para varias
tareas:
Saber si un paquete esta
disponible en algunos de nuestros repositorios (CD-ROMs, servidores
FTP, etc), en cuales de ellos y que versión.
Conocer todas las dependencias de
un determinado paquete y las dependencias de las dependencias.
Conocer las dependencias que nos faltan para instalar un
determinado paquete.
Su sintaxis es la siguiente:
# urpmq [opciones] nombre_del_paquete
Opciones mas comunes:
--sources: Nos dice el repositorio del paquete:
Ejemplo:
# urpmq --sources tcpdump removable://mnt/cdrom/Mandrake/RPMS2/tcpdump-3.7.1-1mdk.i586.rpm
Nos dijo que el tcpdump esta en el CD de instalación
2 y el nombre completo del archivo RPM que lo contiene, donde
vemos la versión del tcpdump que disponemos.
-d: Nos indica todas las dependencias de un determinado paquete:
Ejemplo: Veamos todas las dependencias de tcpdump:
# urpmq -d tcpdump glibc libtermcap2 libpcap0 libopenssl0 bash ldconfig glibc|glibc_lsb|lsbdev tcpdump sash
¿Cuantas dependencias verdad? lo que sucede es que también
nos muestra las dependencias de las dependencias y así
sucesivamente.
--auto-select: Nos muestra los paquetes que tenemos que
instalar o actualizar de acuerdo a los paquetes que ya tenemos
instalados. Serán los paquetes que se instalaran si usamos
urpmi.
Ejemplo: con libpcap0 y tcpdump desinstalados (ver ejemplo
anterior) ejecutamos:
# urpmq tcpdump libpcap0 tcpdump
Nos informo que solo nos falta la dependencia libpcap0 para
instalar tcpdump.
--fuzzy: Nos informa todos los paquetes que contienen una
determinada palabra en su nombre.
Ejemplo: Busquemos todos los paquetes disponibles que contengan en
su nombre mozilla.
# urpmq --fuzzy mozilla Los siguientes paquetes contienen mozilla: mozilla-js-debugger mozilla-irc mozilla-la-enigmail mozilla-xmlterm mozilla mozilla-enigmime mozilla-mail mozilla-dom-inspector mozilla-fonts mozilla-spellchecker
Esto nos permitirá conocer paquetes relacionados con nuestra
aplicación favorita, probar esto mismo pero para xmms y xine,
veras todos los paquetes que salen.
Mas opciones en la pagina del manual de urpmq.
Búsqueda del paquete RPM que provee un determinado
archivo, mediante urpmf.
urpmf nos dice que paquete RPM contiene un determinado archivo, su
sintaxis es:
# urpmf archivo
Ejemplo: Intentamos ejecutar el comando zcat y nos dice \"command
not found\", entonces nuestra duda será, ¿que
paquete contiene el zcat?
# urpmf zcat gzip: /bin/zcat
El paquete gzip lo contiene, así que resolvemos nuestro
problema ejecutando:
# urpmi gzip
Agregando repositorios.
Un repositorio puede estar alojado en un disco rígido
local, un CD-ROM, un servidor FTP o un servidor HTTP, contiene
paquetes RPM y es utilizado por el comando urpmi para obtener los
paquetes RPM que instala.
Agregar repositorios a nuestro Mandrake significa hacer que urpmi
sepa de donde puede obtener los paquetes RPM en caso de que querremos
instalar alguno de ellos.
Un repositorio es un directorio en algunos de los medios
soportados (disco rígido, CD-ROM, servidor FTP o HTTP)
conteniendo los paquetes RPM y archivos adicionales que informan los
paquetes que contiene el repositorio, sus dependencias, descripción
de cada paquetes, etc. Estos archivos que contienen información
por lo general se llaman hdlist.cz o synthesis.hdlist.cz,
ambos contienen la misma información excepto que el
synthesis.hdlist.cz es una síntesis del hdlist.cz
y solo contiene la información imprescindible , por lo tanto
son mucho mas pequeños que los hdlist.cz y útiles
cuando el repositorio es un servidor FTP o HTTP y nos conectamos a
Internet mediante un modem, ya que los archivos hdlist.cz
alcanzan varios MB.
Para agregar un repositorio utilizaremos el comando
urpmi.addmedia, el cual tiene la siguiente sintaxis:
# urpmi.addmedia
Para el caso de un repositorio http:
# urpmi.addmedia \"Nombre del repositorio\" http://host/path with relative/path/hdlist|synthesis
\"Nombre del repositorio\" es un nombre
arbitrario que le daremos al repositorio.
host
será el nombre del servidor HTTP donde se encuentra el
repositorio.
path será el camino hasta el
directorio que contiene los RPMs.
relative/path/hdlist |
synthesis será el camino relativo del directorio de
RPMs hasta el archivo hdlist.cz o sysnthesis.hdlist.cz
que contiene la información del repositorio.
En la próxima sección veremos algunos ejemplos.
Para el caso de un servidos FTP es igual que para un servidor HTTP
excepto que la url debe comenzar con ftp.
Para el caso de un repositorio en un CD-ROM:
# urpmi.addmedia \"Nombre del repositorio\" removable://mnt/cdrom/path/ with relative/path/hdlist | synthesis
\"Nombre del repositorio\" es un nombre
arbitrario que le daremos al repositorio.
removable
indica que el repositorio esta en un CD-ROM.
/mnt/cdrom/path/
es el camino hasta el directorio que contiene los archivos RPMs.
relative/path/hdlist | synthesis será el
camino relativo del directorio de RPMs hasta el archivo hdlist.cz
o sysnthesis.hdlist.cz que contiene la información del
repositorio.
Ejemplo:
Los CD-ROMs de Mandrake son repositorios, supongamos
que instalamos mandrake sin el CD de Internacionalización,
luego obtenemos este CD y lo queremos agregar a nuestro Mandrake
instalado, no es necesario reinstalar, solo necesitamos agregarlo
como un nuevo repositorio. Esto lo podremos hacer con el siguiente
comando:
# urpmi.addmedia \"Internationalization CD (x86) (cdrom3)\" removable://mnt/cdrom/Mandrake/RPMS2/ with synthesis.hdlist13rpms.cz
\"Internationalization CD (x86) (cdrom3)\" es
el nombre que le dimos al repositorio, podría haber sido
cualquier otro, será usado por urpmi para solicitar el CD
cuando necesite instalar algún paquete del mismo.
removable
indica que es un dispositivo removible.
/mnt/cdrom/Mandrake/RPMS2/
es el camino hasta el directorio donde se encuentran los archivos
RPMs.
synthesis.hdlist13rpms.cz es el nombre del
archivo syntesis que viene en el CD-ROM, el cual contiene la
información necesaria (e imprescindible) para que el sistema
URPMI reconozca el CD-ROM como un repositorio.
Nota:
En el ejemplo anterior utilizamos el archivo synthesis,
el cual contiene la información imprescindible sobre el
repositorio, el archivo hdlist se encuentra en el CD de Instalación
1 en el directorio Mandrake/base/.
Mas información en la pagina del manual de urpmi.addmedia
Quitando repositorios.
Quitar un repositorio es muy sencillo, se realiza con el siguiente
comando:
# urpmi.removemedia \"Nombre del repositorio\"
Los paquetes RPM del repositorio eliminado no estarán
disponibles para su instalación mediante urpmi.
Actualizando repositorios.
Los repositorios FTP o HTTP se actualizan constantemente por su
mantenedor, este actualiza los paquetes RPM por versiones recientes o
agrega nuevos paquetes al repositorio. El mantenedor al modificar o
agregar paquetes RPM, genera nuevamente los archivos hdlist y
synthesis para reflejar los cambios.
Para que nuestro Mandrake se entere de los cambios realizados al
repositorio debemos hacer que el sistema URPMI lea nuevamente el
archivo hdlist o synthesis del repositorio. Esto se llama una
actualización del repositorio y se realiza con el comando
urpmi.update de la siguiente manera:
# urpmi.update \"Nombre del repositorio\"
Actualizara el repositorio llamado \"Nombre de
repositorio\".
También podemos ejecutarlo de la siguiente manera:
#urpmi.update -a
Este ultimo comando actualiza todos los repositorios que no son
CD-ROM (removibles).
Mas información en la pagina del manual de urpmi.update.
Repositorios FTP o HTTP disponibles.
Veremos una lista de repositorios FTP o HTTP que contienen
paquetes RPM que no están incluidos en ninguno de los CDs de
la versión GPL de Linux Mandrake.
Repositorio contrib.
Este repositorio contiene paquetes RPM creados por MandrakeSoft
que se distribuyen en CDs en la versión Power Pack de Linux
Mandrake. Los CDs contrib no están disponible en la versión
GPL y la única manera que nos brinda MandrakeSoft para
instalarlos es agregando el repositorio a nuestro Mandrake y urpmi se
encargara de bajarlos e instalarlos cuando sean necesarios.
Obviamente mientras instalemos paquetes del repositorio contrib
deberemos estar conectados a Internet para que urpmi los pueda bajar
y será recomendable disponer de banda ancha.
El repositorio contrib contiene aplicaciones muy útiles
y es uno de los mas grandes, tiene mas de 1800 paquetes RPM. Esta
alojado en los mirrors de Linux Mandrake, en el directorio contrib.
La lista de mirrors se puede ver en el sitio oficial de Linux
Mandrake.
Si utilizamos el mirror en rediris.es, los paquetes RPM del
repositorio contrib están alojados en:
ftp://ftp.rediris.es/pub/linux/distributions/mandrake/9.0/contrib/RPMS/
El archivo synthesis esta dentro del mismo directorio de los RPMs
y se llama synthesis.hdlist2.cz
Para agregar este repositorio con el mirror de rediris.es
ejecutamos el siguiente comando:
# urpmi.addmedia \"contrib\" ftp://ftp.rediris.es/pub/linux/distributions/mandrake/9.0/contrib/RPMS/ with synthesis.hdlist2.cz
Debido a que los repositorios FTP o HTTP cambian constantemente con
actualizaciones o agregados de nuevos paquetes RPM, es recomendable
actualizarlos antes de instalar paquetes mediante urpmi.
Actualizamos todos los repositorios en Internet con el siguiente
comando:
# urpmi.update -a
Luego instalamos, por ejemplo el mplayer:
# urpmi mplayer
Repositorio de actualizaciones de seguridad.
Linux Mandrake publica en sus mirrors FTP o HTTP las
actualizaciones por problemas de seguridad en el repositorio updates,
podemos agregar este repositorio ejecutando siguiente repositorio
(para el mirror de rediris.es):
# urpmi.addmedia updates ftp://ftp.rediris.es/pub/linux/distributions/mandrake/updates/9.0/RPMS/ with ../base/hdlist.cz
Una vez agregado el repositorio updates podremos mantener
nuestro Mandrake al día con las actualizaciones de seguridad
ejecutando los siguientes comandos:
# urpmi.update -a #urpmi --auto-select
Repositorio PLF (Penguin Liberation Front lair).
Este repositorio contiene paquetes RPM que no pueden ser incluidos
en la distribución Mandrake por razones legales. Es un
proyecto independiente de MandrakeSoft.
Antes de agregar este repositorio, es recomendable agregar el
repositorio contrib, ya que muchos paquetes de PLF dependen de
contrib. Con el siguiente comando agregamos PLF con un mirror de
Canadá:
# urpmi.addmedia plf ftp://plf.chem.yorku.ca/pub/plf/9.0 with hdlist.cz
Mas información en su sitio oficial: http://plf.zarb.org/
Bibliografía:
URPMI Howto
http://myweb.tiscali.co.uk/jwrobinson/docs/urpmi-howto/
