Articulo de referencia

Administrador de paquetes RPM

{{cite web |title=RPM timeline |url=https://rpm.org/timeline.html |access-date=25 June 2020 |publisher=rpm.org}} [[Red Hat]]"},"developer":{"wt":"Community & [[Red Hat]] {{cite ...

RPM (originalmente Red Hat Package Manager , ahora un acrónimo recursivo de RPM Package Manager ) es un sistema de gestión de paquetes gratuito y de código abierto . [ 7 ] El nombre RPM se refiere al formato de archivo y al propio programa gestor de paquetes. RPM fue diseñado principalmente para distribuciones de Linux ; el formato de archivo es el formato de paquete base de Linux Standard Base ..rpm

Aunque se creó para su uso en Red Hat Linux , RPM ahora se usa en muchas distribuciones de Linux como PCLinuxOS , Fedora Linux , AlmaLinux , CentOS , openSUSE , OpenMandriva y Oracle Linux . También se ha portado a otros sistemas operativos , como Novell NetWare (a partir de la versión 6.5 SP3), AIX de IBM (a partir de la versión 4), [ 8 ] IBM i , [ 9 ] y ArcaOS . [ 10 ] Un paquete RPM puede contener un conjunto arbitrario de archivos. La mayoría de los archivos RPM son "RPM binarios" (o BRPM) que contienen la versión compilada de algún software. También hay "RPM de código fuente" (o SRPM) que contienen el código fuente utilizado para construir un paquete binario. Estos tienen una etiqueta apropiada en el encabezado del archivo que los distingue de los (B)RPM normales, lo que hace que se extraigan a /usr/src durante la instalación. Los SRPM suelen llevar la extensión de archivo ".src.rpm" (.spm en sistemas de archivos limitados a 3 caracteres de extensión, por ejemplo, el antiguo DOS FAT ).

Historia

RPM fue escrito originalmente en 1997 por Erik Troan y Marc Ewing , [ 1 ] basándose en las experiencias de pms, rpp, y pm.

pmfue escrito por Rik Faith y Doug Hoffman en mayo de 1995 para Red Hat Software. Su diseño e implementaciones fueron influenciados en gran medida por pms, un sistema de gestión de paquetes de Faith y Kevin Martin en otoño de 1993 para la distribución Bogus Linux. pmconserva el paradigma de " Fuentes prístinas + parches" de pms, al tiempo que agrega características y elimina limitaciones arbitrarias presentes en la implementación. pmproporciona un soporte de base de datos muy mejorado para el seguimiento y la verificación de los paquetes instalados. [ 5 ] [ 11 ] [ 12 ]

Características

Para un administrador de sistemas que realiza la instalación y el mantenimiento de software, el uso de la gestión de paquetes en lugar de la compilación manual tiene ventajas como la simplicidad, la consistencia y la capacidad de automatizar y hacer no interactivos estos procesos. rpm utiliza Berkeley DB como base de datos backend, aunque desde la versión 4.15 de 2019, admite la compilación de paquetes rpm sin Berkeley DB ( –disable-bdb). [ 13 ]

Las características de RPM incluyen:

  • Los paquetes RPM se pueden verificar criptográficamente con GPG y MD5.
  • Los archivos fuente originales (por ejemplo .tar.gz, .tar.bz2) se incluyen en los SRPM, lo que facilita la verificación.
  • Actualización incremental : Los PatchRPM y DeltaRPM, el equivalente en RPM a un archivo de parche , pueden actualizar de forma incremental el software instalado mediante RPM.
  • Evaluación automática de dependencias en tiempo de compilación.

Operaciones locales

Los paquetes pueden provenir de una distribución específica (por ejemplo, Red Hat Enterprise Linux ) o ser compilados para ella por terceros (por ejemplo, RPM Fusion para Fedora Linux). [ 14 ] Las dependencias circulares entre RPM que dependen mutuamente (el llamado " infierno de dependencias ") pueden ser problemáticas; [ 15 ] en tales casos, un único comando de instalación debe especificar todos los paquetes relevantes.

Repositorios

Los paquetes RPM suelen recopilarse de forma centralizada en uno o más repositorios de internet. Un sitio web a menudo tiene sus propios repositorios de RPM, que pueden funcionar como copias locales de dichos repositorios de internet o ser colecciones locales de paquetes RPM útiles.

partes delanteras

Varias interfaces para RPM facilitan el proceso de obtención e instalación de paquetes RPM desde repositorios y ayudan a resolver sus dependencias. Estas incluyen:

Base de datos de instalación local de RPM

Detrás del gestor de paquetes funciona la base de datos RPM, almacenada en /var/lib/rpm. Utiliza Berkeley DB como backend. Consta de una única base de datos ( Packages) que contiene toda la metainformación de los RPM instalados. Se crean varias bases de datos para fines de indexación, replicando datos para acelerar las consultas. La base de datos se utiliza para realizar un seguimiento de todos los archivos que se modifican y crean cuando un usuario (mediante RPM) instala un paquete, lo que permite al usuario (a través de RPM) revertir los cambios y eliminar el paquete posteriormente. Si la base de datos se corrompe (lo cual es posible si se cierra el cliente RPM ), las bases de datos de índice se pueden recrear con el rpm --rebuilddbcomando. [ 18 ]

Descripción

Si bien el formato RPM es el mismo en las diferentes distribuciones de Linux , las convenciones y directrices detalladas pueden variar entre ellas.

Nombre del archivo y etiqueta del paquete

Un paquete RPM se entrega en un único archivo, normalmente con un nombre de archivo en el formato:

<name>-<version>-<release>.src.rpmpara paquetes fuente, o
<name>-<version>-<release>.<architecture>.rpmpara binarios.

Por ejemplo, en el archivo del paquete libgnomeuimm-2.0-2.0.0_3.i386.rpm, el <name>es libgnomeuimm, el <version>es 2.0, el <release>es 2.0.0_3y el <architecture>es i386. El paquete fuente asociado se llamaríalibgnomeuimm-2.0-2.0.0_3.src.rpm

Los paquetes RPM con esta noarch.rpmextensión no dependen de una arquitectura de CPU específica. Por ejemplo, estos paquetes RPM pueden contener gráficos y texto para que los utilicen otros programas. También pueden contener scripts de shell o programas escritos en otros lenguajes de programación interpretados, como Python .

El contenido del RPM también incluye una etiqueta de paquete , que contiene la siguiente información:

  • nombre del software
  • Versión del software (la versión tomada de la fuente original del software)
  • Versión del paquete (número de veces que el paquete se ha recompilado utilizando la misma versión del software). Este campo también se usa a menudo para indicar la distribución específica a la que está destinado el paquete, añadiendo cadenas como "mdv" (anteriormente, "mdk") ( Mandriva Linux ), "mga" ( Mageia ), "fc4" ( Fedora Core 4), "rh9" ( Red Hat Linux 9), "suse100" ( SUSE Linux 10.0), etc.
  • arquitectura para la que se creó el paquete (i386, i686, x86_64, ppc, etc.)

Los campos de la etiqueta del paquete no tienen por qué coincidir con el nombre del archivo.

Embalaje de biblioteca

Las bibliotecas se distribuyen en dos paquetes separados para cada versión. Uno contiene el código precompilado para su uso en tiempo de ejecución, mientras que el segundo contiene los archivos de desarrollo relacionados, como los archivos de cabecera, etc. Estos paquetes tienen la extensión "-devel" añadida al nombre. El administrador del sistema debe asegurarse de que las versiones de los paquetes binarios y de desarrollo coincidan.

Formato binario

El formato es binario y consta de cuatro secciones: [ 7 ]

  • El encabezado, que identifica el archivo como un archivo RPM y contiene algunos encabezados obsoletos.
  • La firma, que puede utilizarse para garantizar la integridad y/o autenticidad.
  • El encabezado, que contiene metadatos como el nombre del paquete, la versión, la arquitectura, la lista de archivos, etc.
  • Un archivo comprimido (la carga útil ), que generalmente está en formato cpio , comprimido con gzip . La rpm2cpioherramienta permite recuperar el archivo cpio sin necesidad de instalar el paquete RPM. [ 19 ]
    • Linux Standard Base requiere el uso de gzip, pero los paquetes de Fedora 30 están comprimidos con xz y los paquetes de Fedora 31 podrían estar comprimidos con zstd . [ 20 ] Las versiones recientes de RPM también pueden usar compresión bzip2 , lzip , [ 21 ] o lzma .
    • El formato RPM 5.0 admite el uso de xar para el archivado.

Archivo SPEC

La "receta" para crear un paquete RPM es un archivo de especificación. Estos archivos terminan con la extensión ".spec" y contienen el nombre del paquete, la versión, el número de revisión RPM, los pasos para compilar, instalar y limpiar el paquete, y un registro de cambios. Si se desea, se pueden crear varios paquetes a partir de un único archivo de especificación RPM. Los paquetes RPM se crean a partir de archivos de especificación RPM mediante la herramienta rpmbuild.

Los archivos de especificación suelen distribuirse dentro de los archivos SRPM, que contienen el archivo de especificación empaquetado junto con el código fuente.

SRPM

Un RPM típico es un software precompilado listo para su instalación directa. También se puede distribuir el código fuente correspondiente. Esto se realiza mediante un SRPM, que incluye el archivo "SPEC" que describe el software y su proceso de compilación. El SRPM también permite al usuario compilar y, posiblemente, modificar el código.

Un paquete de software podría contener únicamente scripts independientes de la plataforma. En tal caso, el desarrollador podría proporcionar solo un SRPM, que sigue siendo un RPM instalable.

NOSRC

Esta es una versión especial de SRPM. Contiene el archivo "SPEC" y, opcionalmente, parches, pero no incluye el código fuente (generalmente debido a la licencia). [ 22 ]

Horquillas

A fecha de junio de 2010 Actualmente, existen dos versiones de RPM en desarrollo: una liderada por el Proyecto Fedora y Red Hat, y la otra por un grupo independiente liderado por un antiguo responsable del mantenimiento de RPM, un ex empleado de Red Hat.

RPM.org

La primera revisión importante del código de la comunidad rpm.org se produjo en julio de 2007; la versión 4.8 se lanzó en enero de 2010, la versión 4.9 en marzo de 2011, la 4.10 en mayo de 2012, la 4.11 en enero de 2013, la 4.12 en septiembre de 2014 y la 4.13 en julio de 2015.

Esta versión es utilizada por distribuciones como Fedora Linux , Red Hat Enterprise Linux y derivados , openSUSE , SUSE Linux Enterprise , Unity Linux , Mageia , [ 23 ] OpenEmbedded , Tizen y OpenMandriva Lx (anteriormente Mandriva ).

RPM v5 (Descatalogado)

Jeff Johnson, responsable del mantenimiento de RPM desde 1999, continuó los esfuerzos de desarrollo junto con participantes de varias otras distribuciones. La versión 5 de RPM se lanzó en mayo de 2007.

Esta versión fue utilizada por distribuciones como Wind River Linux (hasta Wind River Linux 10), Rosa Linux y OpenMandriva Lx (anteriormente Mandriva Linux , que cambió a rpm5 en 2011 [ 24 ] ) y también por el proyecto OpenPKG , que proporciona paquetes para otras plataformas UNIX comunes.

OpenMandriva Lx ha vuelto a utilizar rpm.org [ 25 ] para la versión 4.0.

OpenEmbedded , el último usuario importante de RPM5, volvió a rpm.org debido a problemas en RPM5. [ 26 ] [ 27 ]

Véase también

Referencias

  1. 1 2 3 "Cronología de RPM" . rpm.org . Consultado el 25 de junio de 2020 .
  2. Spevack, Max (14 de diciembre de 2006). "RPM -- planes, objetivos, etc." . fedora-announce-list (Lista de correo). Archivado del original el 6 de octubre de 2012. Recuperado el 20 de enero de 2011 .
  3. "Preguntas frecuentes de RPM.org" . rpm.org . Archivado del original el 5 de noviembre de 2016. Consultado el 25 de agosto de 2013 .
  4. "Versión 6.0.2" . 16 de julio de 2026. Consultado el 17 de julio de 2026 .
  5. 1 2 Bailey 2000 , págs. 22–25, Capítulo 1: Introducción a la gestión de paquetes
  6. "po/LINGUAS" . GitHub . Archivado del original el 23 de abril de 2022. Consultado el 23 de septiembre de 2025 .
  7. 1 2 Bailey 2000 , págs. 325–336, Apéndice A: Formato del archivo RPM 
  8. Mallayya, Sangamesh; Mishra, Nitish; Rathi, Sanket; Ayappan p (24 de octubre de 2018). "Configuración de YUM y creación de repositorios locales en IBM AIX" . developer.ibm.com . Archivado del original el 3 de octubre de 2020. Recuperado el 3 de septiembre de 2020 .
  9. Woodie, Alex (18 de julio de 2018). "RPM y Yum son muy importantes para IBM i. He aquí por qué" . IT Jungle . Archivado del original el 29 de junio de 2019. Recuperado el 3 de septiembre de 2020 .
  10. "Administrador de paquetes" . arcanoae.com . Archivado del original el 25 de marzo de 2016. Consultado el 4 de septiembre de 2020 .
  11. "Objetivos de diseño de RPM" . docs.fedoraproject.org . Archivado del original el 21 de marzo de 2014. Consultado el 14 de abril de 2014 .
  12. "ANUNCIO FALSO" . ibiblio.org . Archivado del original el 4 de noviembre de 2013. Consultado el 14 de abril de 2014 .
  13. zoujiaqing (29 de enero de 2020). "rpm4 era compatible con la compilación de rpm sin Berkeley DB (–disable-bdb)" . Los foros de FreeBSD . Archivado del original el 23 de febrero de 2024. Recuperado el 18 de septiembre de 2023 .
  14. "RPM Fusion" . rpmfusion.org. Archivado del original el 11 de febrero de 2019. Consultado el 22 de noviembre de 2010 .
  15. Hart, John; D'Amelia, Jeffrey. Un análisis de la deriva de validación de RPM (PDF) . Actas de LISA '02: Decimosexta Conferencia de Administración de Sistemas. Berkeley, CA: USENIX Association. págs. 155–166 . Archivado (PDF) del original el 28 de julio de 2011. Recuperado el 15 de marzo de 2011 . 
  16. "Zypper" . Wiki de MeeGo . Archivado del original el 25 de septiembre de 2013. Consultado el 14 de abril de 2014 .
  17. "Preguntas frecuentes: Acerca de los proyectos" . Sitio oficial de Ark Linux. Archivado del original el 11 de febrero de 2012. Consultado el 14 de abril de 2014 .
  18. "Reparar una base de datos RPM de forma segura" . oldrpm.org . Archivado del original el 6 de agosto de 2019. Consultado el 11 de noviembre de 2011 .
  19. "Software de empaquetado suplementario" . Proyecto Fedora. Archivado del original el 10 de marzo de 2016. Recuperado el 11 de noviembre de 2011 .
  20. "Cambiar las RPM a compresión zstd" . Proyecto Fedora (Wiki). Archivado del original el 2 de junio de 2019. Recuperado el 2 de junio de 2019 .
  21. " [ PARCHE ] Agregar soporte para lzip" . rpm.org . Archivado del original el 4 de marzo de 2016 . Recuperado el 24 de octubre de 2013 .
  22. Suchý, Miroslav (10 de diciembre de 2014). "Cómo empaquetar software propietario" . Red Hat Developers . Archivado del original el 2 de julio de 2018. Recuperado el 2 de julio de 2018 .
  23. "Notas de la versión de Mageia 3: Gestión de paquetes" . mageia.org . 19 de mayo de 2013. Archivado del original el 7 de febrero de 2014. Consultado el 14 de abril de 2014 .
  24. Bodnar, Ladislav y Smith, Jesse (22 de noviembre de 2010). "DistroWatch Weekly" . DistroWatch . Archivado del original el 23 de junio de 2018. Recuperado el 22 de noviembre de 2010. Mandriva busca abandonar la serie RPM 4.x sin mantenimiento y reemplazarla con RPM 5.x para una mejor gestión de paquetes.
  25. Gajc, Tomasz Paweł. "Foro: Cambio a RPMv4" . forum.openmandriva.org . Archivado del original el 14 de enero de 2022. Consultado el 3 de marzo de 2018 .
  26. "YP Core – Pyro 2.3" . Proyecto Yocto . 12 de mayo de 2017. Archivado del original el 5 de diciembre de 2017. Consultado el 4 de diciembre de 2017 .()
  27. Kanavin, Alexander (14 de febrero de 2017). " [ Openembedded-architecture ] Cambios que provocará el cambio de smart a dnf" . openembedded-architecture (Lista de correo). Proyecto Yocto . Archivado del original el 5 de noviembre de 2018. Recuperado el 4 de noviembre de 2018 .
  • Schroeder, Jeff (30 de enero de 2008). "Cadenas de consulta RPM avanzadas" . www.digitalprognosis.com . Archivado del original el 9 de agosto de 2011. Recuperado el 28 de marzo de 2018 .
  • Bailey, Edward C. (2000). Maximum RPM: Taking the Red Hat Package Manager to the Limit . Red Hat, Inc. ISBN 978-1-888172-78-2. OCLC 36758622 . OL 8710068M . Consultado el 13 de agosto de 2013 .  
  • Sitio web oficialEdita esto en Wikidata
  • "Referencia de comandos RPM y DPKG" . packman.linux.is . Archivado del original el 28 de octubre de 2016. Consultado el 23 de septiembre de 2025 .
  • Frye, Matt (8 de febrero de 2007). "La historia de RPM" . Revista Red Hat . Recuperado el 23 de septiembre de 2025 .{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )
  • "Tutorial de empaquetado" . docs.fedoraproject.org . Consultado el 23 de septiembre de 2025 .- Cómo crear un paquete RPM
  • msamir. "RPM" . MSamir . Archivado del original el 9 de noviembre de 2009. Recuperado el 23 de septiembre de 2025 .- Tutoriales en vídeo para compilar y parchear los paquetes RPM.
  • "Notas sobre RPM: Cómo crear RPM de forma sencilla" . grahams.free-online.co.uk . Consultado el 23 de septiembre de 2025 .{{cite web}}: CS1 maint: servicio de archivado obsoleto ( enlace )
  • Poirier, Dan (noviembre de 2001). "Empaquetado de software con RPM, Parte 1" . www-106.ibm.com . Archivado del original el 7 de febrero de 2002. Recuperado el 23 de septiembre de 2025 .
  • Shields, Ian (11 de mayo de 2010). "Aprende Linux, 101: Gestión de paquetes RPM y YUM" . ibm.com . Archivado del original el 16 de mayo de 2010. Consultado el 23 de septiembre de 2025 .