LPIC-1 102.5: gestión de paquetes RPM

Otro paso más para las certificaciones LPIC-1, en esta ocasión toca el tema 102.5 destinado a la gestión de paquetes RPM. Las certificaciones buscan en este apartado analizar las competencias básicas de los administradores de sistemas a la hora de manejar paquetes binarios de este tipo con herramientas de bajo nivel y de alto nivel. También debes conocer algunos ficheros de configuración interesantes.

Por gestión se entiende conseguir el paquete RPM, obtener información, instalarlo, re-instalar, actualizar, desinstalar, comprobar el estado, su integridad y firmas, determinar los ficheros relacionados con el paquete instalado, saber configurar los repositorios nativos de tu distribución GNU/Linux y de terceros, etc.

A pesar de la aparición de los paquetes universales, aún hay varias distribuciones importantes que siguen usando este tipo de paquetes. Inicialmente fueron ideados por Red Hat, pero luego han sido adoptados por otras distribuciones como SUSE, openSUSE, y derivados. Por supuesto también Fedora, la cual se usa de base para implementar RHEL, y CentOS, una bifurcación a nivel binario de RHEL.

Aunque sea una serie que no tenga nada que ver, en un artículo previo de Programación, hablé sobre los paquetes DEB y RPM, de su contenido, qué eran, cómo se creaban, etc. Así que, al igual que hacen las certificaciones LPI, obviaré esa parte. Pero si quieres puedes ver más información aquí.

Pregunta que me hacen frecuentemente. ¿Se puede usar paquetes DEB en una distro basada en RPM o viceversa? La respuesta es sí. Puedes instalar rpm en Ubuntu, por ejemplo, y así poder gestionar paquetes rpm con ella. El problema es que no es demasiado recomendable. Igual ocurre con la herramienta alien, puedes convertir de un formato a otro, pero no siempre funciona adecuadamente… Ya lo comenté anteriormente.

Herramientas de bajo nivel

Si recuerdas el artículo de gestión de paquetes DEB, también tenían herramienta de gestión a bajo nivel. Se llama así porque no es capaz de gestionar dependencias, o de conectarse a repositorios para la descarga del paquete, etc. Simplemente puede trabajar con paquetes locales.

rpm

La herramienta rpm es la equivalente a dpkg en paquetes .deb. Ya sabes que simplemente puede actuar sobre paquetes que tengas a tu alcance, puesto que no será capaz de conectar con ningún repositorio para descargarlo. Además, si el paquete que intentas instalar tiene dependencias, tendrás que resolverlas de forma manual…

Ya sabes que para más información sobre las opciones y operaciones que se pueden hacer con rpm, puedes usar:

man rpm

Pero para poner ejemplos prácticos algo más agradables que limitarme a la teoría, aquí tienes algunos con las opciones y parámetros más empleados que deberías conocer:

#Instala el paquete, en este caso Firefox
rpm -ivh firefox-57.3.2.1-x86-64.rpm

#Al incluir --test con cualquier opción (instalar, actualizar,...) solo simula la acción pero no la realiza
rpm -ivh --test firefox-57.3.2.1-x86-64.rpm

#Actualiza el paquete
rpm -Uvh firefox-57.3.2.1-x86-64.rpm

#Elimina el paquete instalado, en este caso Mozilla Mail
rpm -ev mozilla-mail

#Igual que el anterior pero sin comprobar dependencias
rpm -ev --nodeps mozilla-mail

#Muestra un listado de los paquetes instalados o solo mostrar los últimos instalados
rpm -qa
rpm -qa --last

#Muestra información de un paquete instalado
rpm -qi firefox

#Consulta a qué paquete pertenece un fichero
rpm -qf /etc/hosts

#Muestra los ficheros de configuración del paquete indicado
rpm -qc firefox

#Consulta las dependencias que tiene un paquete no instalado o ya instalado respectivamente
rpm -qpR firefox-57.3.2.1-x86-64.rpm
rpm -qR firefox

Para ver la base de datos puedes ir a /var/lib/rpm. También puedes hacer configuraciones en /usr/lib/rpm/rpmrc (o mejor y más seguro, editar ~/.rpmrc para un usuario o /etc/rpmrc para global), aunque no es necesario, podrías cambiar algunos flags para tu CPU y optimizar el rendimiento de la herramienta rpmbuild para construir paquetes rpm.

rpm2cpio y rpmbuild

(véase artículo de empaquetado)

Herramientas de alto nivel

Existen gran cantidad de herramientas para gestión de paquetes de tipo rpm. Algunas con GUI para los que le tengan «miedo» al intérprete de comandos, aunque este tipo de herramientas no son importantes para las certificaciones aquí tienes algunas:

  • YaST/YaST2: es una potente suite con interfaz gráfica incluida en SUSE. Simplifica mucho el trabajo del administrador. Desde allí puedes hacer gran cantidad de acciones y configuraciones de forma muy sencilla y, por supuesto, gestión de paquetes desde diversas fuentes.
  • Yumex: su nombre viene de YUM Extender, una extensión de la herramienta YUM con una GUI para gestionar tus paquetes rpm de forma mucho más intuitiva y sencilla.
  • Kyum: otra herramienta similar a la anterior con GUI y basada en yum.
  • Synaptic: sí, realmente se basa en APT, pero esta herramienta gráfica también se puede usar en distribuciones basadas en paquetería RPM, aunque haya sido pensada especialmente para DEB.

Por cierto, ¿sabías que existen dos forks de RPM? Una es la original que se mantiene en rpm.org y la otra es RPMv5 (mantenida por Jeff Johnson) que se emplea para Mandriva, River Linux, etc.

También hay otras herramientas como urpmi (urpmi, urpme, urpmf, urpm.update,… usadas por Mandriva Linux), up2date, apt-rmp (Smart Package Manager), Red Carpet / ZENworks, OpenPKG, etc. Te las comento por si le quieres echar un vistazo, aunque no sean importantes para los exámenes LPI.

zypper

Zypper es un front-end para rpm, una herramienta de alto nivel que permite gestionar paquetes usando repositorios, resolver dependencias de forma automática, etc. Así no tendrás que hacerlo de forma manual y podrás obtener paquetes directamente de los repos si tienes conexión a Internet. Se emplea en distros como SUSE, openSUSE, y sistemas operativos para dispositivos móviles como Tizen OS, Sailfish OS, y MeeGo.

Su sintaxis es muy compleja, porque tiene opciones globales, un comando de acción y opciones para dicho comando. Eso da lugar a gran cantidad de combinaciones posibles. Ya sabes, más información en:

man zypper

No obstante, aquí tienes algunos buenos ejemplos prácticos de los más usados para que lo comprendas mejor:

#Instalar un paquete, en este caso Firefox e instalación de OpenSSH desde las fuentes
zypper install MozillaFirefox
zypper source-install openssh-server 

#Actualizar un paquete
zypper update MozillaFirefox

#Obtener información de un paquete
zypper info MozillaFirefox

#Desinstalar paquete
zypper remove openssh-client

#Refrescar, actualizar todos los paquetes de tu sistemas y ver los que se han actualizado
zypper refresh
zypper upgrade 
zypper list-upgrade

#Actualizar distro
zypper dup

#Buscar un paquete por nombre o que coincida con un patrón, por ejemplo terminado en usb
zypper search *usb

#Para instalar parches disponibles, primero puedes comprobar los que existen y luego especificar el que quieres instalar
zypper patch
zypper patch <nombre_del_parche>

#Bloquear un paquete para prevenir posibles modificaciones, listar los bloqueados y desbloquearlo respectivamente
zypper al httpd
zypper il 
zypper rl httpd

#Agregar un repositorio
zypper addrepo --check --refresh --name "Mozilla-repo" http://download.opensuse.org/repositories/mozilla/SLE_11/ "Mozillarepo"

#Crear un repositorio local en /home/repo llamado mirepo, dentro puedes poner paquetes .rpm para gestionar con zypper
zypper addrepo /home/repo mirepo

#Listar los repositorios
zypper lr 

#Buscar un paquete dentro de los repositorios
zypper search --repo pingus

#Renombrar un repositorio y eliminarlo respectivamente
zypper renamerepo mirepo repolocal
zypper removerepo repolocal

#Desactivar un repositorio sin quitarlo y luego volverlo a activar
zypper modifyrepo -d mirepo
zypper modifyrepo -e mirepo

Recuerda que no en todas las distros los paquetes se llaman igual. Por ejemplo, Apache puede llamarse httpd en algunas distros. Es un error muy común entre usuarios que cambian de una distro a otra…

Finalmente, hay algunos ficheros que deberías conocer. El de configuración lo tienes en /etc/zypp/zypp.conf, mientras que los repositorios los encontrarás en /etc/zypp/repos.d/. La cache la tienes en /var/cache/zypp.

dnf / yum

La otra gran herramienta de alto nivel para gestionar RPMs es dnf. YUM (Yellow Updater, Modified) fue la herramienta creada para distribuciones Fedora, Red Hat, y CentOS, entre otras. Pero apareció la nueva generación de gestor de paquetes binarios con la aparición de dnf (Dandified YUM).

En el caso de yum tiene opciones y acciones que acompañan al comando, mientras que dnf tiene opciones y subcomandos. Ya sabes, más información en:

man yum
man dnf

Los ejemplos prácticos más utilizados para estas dos herramientas los tienes aquí:

#-----------------------------------------EJEMPLOS PARA YUM--------------------------------------

#Instalar un paquete, mientras que la segunda orden es equivalente pero contestará automáticamente a todas las preguntas con un sí
yum install firefox.x86-64
yum -y install firefox.x86-64

#Desinstalar un paquete
yum remove mysql

#Actualizar un paquete
yum update firefox.x86-64

#Buscar un paquete en los repos
yum search alien

#Mostrar información de un paquete
yum info kmine

#Mostrar los paquetes disponibles o solo los que están instalados respectivamente
yum list
yum list installed

#Consultar el paquete al que pertenece un fichero
yum provides /etc/sysconfig/nfs

#Consultar grupos de software disponibles e instalar un grupo completo (y no tener que instalar uno a uno). Recuerda que también puedes usar groupremove y groupupdate para eliminar y actualizar...
yum grouplist
yum groupinstall Clustering

#Mostrar repo actual y todos los repositorios
yum repolist
yum repolist all


#----------------------------------------EJEMPLOS PARA DNF------------------------------------------

#Instalar un paquete, por ejemplo Apache, o asumir que quieres contestar si a todas las preguntas
dnf install httpd
dnf install httpd -y

#Comprobar si hay actualizaciones disponibles
dnf check-update

#LIstar los paquetes instalados o filtrar solo los que coinciden con un nombre concreto
dnf list installed
dnf list installed | grep usb

#Actualizar un paquete desde el repo
dnf update httpd -y

#Solo descargar un paquete sin instalar y conseguir información respectivamente
dnf download httpd
dnf info httpd

#Desinstalar un paquete 
dnf remove httpd

#Reinstalar el paquete
dnf reinstall httpd -y

#Ver información del repo actual o de todos
dnf repolist
dnf repolist all

#Agregar un nuevo repositorio
dnf config-manager --add-repo="https://mirror.aarnet.edu.au/pub/centos/7"

#Habilitar o deshabilitar repos
dnf --enablerepo=disabled-repo install mirepo
dnf --disablerepo=disabled-repo install mirepo

#Buscar un paquete en los repositorios
dnf search thunderbird

#Con dnf también se puede trabajar con grupos con grouplist, groupinfo, groupinstall, etc. igual que YUM
dnf grouplist
dnf groupinfo "Web Server" -y

#Actualizar distro
dnf upgrade

Como ficheros interesantes si trabajas con estas herramientas está la configuración de yum en /etc/yum.conf y, para dnf, tienes la cache en /var/cache/DNF, o la configuración en /etc/dnf/dnf.conf, y los repos en /etc/yum.repos.d/ (sirve para YUM y DNF).

Isaac

Apasionado de la computación y la tecnología en general. Siempre intentando desaprender para apreHender.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

A %d blogueros les gusta esto:

Si continuas utilizando este sitio aceptas el uso de cookies. más información

Los ajustes de cookies de esta web están configurados para "permitir cookies" y así ofrecerte la mejor experiencia de navegación posible. Si sigues utilizando esta web sin cambiar tus ajustes de cookies o haces clic en "Aceptar" estarás dando tu consentimiento a esto.

Cerrar