stringtranslate.com

Administrador de paquetes RPM

RPM Package Manager ( RPM ) (originalmente Red Hat Package Manager , ahora un acrónimo recursivo ) es un sistema de gestión de paquetes gratuito y de código abierto . [6] El nombre RPM se refiere al formato de archivo y al programa gestor de paquetes en sí. RPM fue pensado principalmente para distribuciones de Linux ; el formato de archivo es el formato de paquete base del estándar Linux Base ..rpm

Aunque fue creado para su uso en Red Hat Linux , RPM ahora se utiliza en muchas distribuciones Linux como PCLinuxOS , Fedora Linux , AlmaLinux , CentOS , openSUSE , OpenMandriva y Oracle Linux . También se ha portado a algunos 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), [7] IBM i , [8] y ArcaOS . [9]

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 existen "RPM fuente" (o SRPM) que contienen el código fuente utilizado para crear 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, rppy pm.

pmFue escrito por Rik Faith y Doug Hoffman en mayo de 1995 para Red Hat Software, su diseño e implementación fueron influenciados en gran medida por pms, un sistema de administración de paquetes de Faith y Kevin Martin en el 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 rastrear y verificar paquetes instalados. [4] [10] [11]

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 creación manual tiene ventajas como la simplicidad, la consistencia y la capacidad de que estos procesos se automaticen y no sean interactivos. rpm utiliza Berkeley DB como base de datos de backend, aunque desde la versión 4.15 de 2019 admite la creación de paquetes rpm sin Berkeley DB ( –disable-bdb). [12]

Las características de RPM incluyen:

Operaciones locales

Los paquetes pueden provenir de una distribución particular (por ejemplo, Red Hat Enterprise Linux ) o ser creados para ella por otras partes (por ejemplo, RPM Fusion para Fedora Linux). [13] Las dependencias circulares entre RPM mutuamente dependientes (el llamado " infierno de dependencias ") pueden ser problemáticas; [14] en tales casos, un solo comando de instalación debe especificar todos los paquetes relevantes.

Repositorios

Los RPM suelen recopilarse de forma centralizada en uno o más repositorios de Internet. Un sitio suele tener sus propios repositorios de RPM, que pueden actuar como espejos locales de dichos repositorios de Internet o ser colecciones de RPM útiles mantenidas localmente.

Partes delanteras

Existen varias interfaces para RPM que facilitan el proceso de obtención e instalación de RPM desde repositorios y ayudan a resolver sus dependencias. Entre ellas se incluyen:

Base de datos de instalación de RPM local

Detrás de escena del administrador de paquetes se encuentra la base de datos RPM, almacenada en /var/lib/rpm. Utiliza Berkeley DB como back-end. Consiste en una única base de datos ( Packages) que contiene toda la metainformación de los RPM instalados. Se crean múltiples bases de datos con 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 (que utiliza RPM) instala un paquete, lo que permite al usuario (a través de RPM) revertir los cambios y eliminar el paquete más tarde. Si la base de datos se corrompe (lo que es posible si se elimina el cliente RPM ), las bases de datos de índice se pueden volver a crear con el rpm --rebuilddbcomando. [17]

Descripción

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

Nombre de archivo y etiqueta del paquete

Un RPM se entrega en un solo 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 paquete nombre_archivo 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 RPM con la noarch.rpmextensión no dependen de una arquitectura de CPU en particular. Por ejemplo, estos RPM pueden contener gráficos y texto para que otros programas los utilicen. 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:

Los campos de etiqueta del paquete no necesitan 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 encabezados, etc. Esos paquetes tienen "-devel" adjunto a su campo de 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: [6]

Archivo SPEC

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

Los archivos de especificaciones generalmente se distribuyen dentro de archivos SRPM, que contienen el archivo de especificaciones empaquetado junto con el código fuente.

SRPM

Un RPM típico es un software precompilado listo para su instalación directa. El código fuente correspondiente también se puede distribuir. Esto se hace en un SRPM, que también incluye el archivo "SPEC" que describe el software y cómo está construido. El SRPM también permite al usuario compilar, y quizás modificar, el código en sí.

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

Centro Nacional de Investigación Nuclear

Esta es una versión especial de SRPM. Contiene el archivo "SPEC" y parches opcionales, pero no incluye fuentes (normalmente debido a la licencia). [21]

Tenedores

En junio de 2010 , hay dos versiones de RPM en desarrollo: una dirigida por el Proyecto Fedora y Red Hat, y la otra por un grupo separado dirigido por un anterior mantenedor de RPM, un ex empleado de Red Hat.

RPM.org

La primera revisión importante del código de la comunidad rpm.org fue 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 , [22] OpenEmbedded , Tizen y OpenMandriva Lx (anteriormente Mandriva ).

RPM v5 (Desactivado)

Jeff Johnson, responsable del mantenimiento de RPM desde 1999, continuó con los esfuerzos de desarrollo junto con participantes de otras distribuciones. La versión 5 de RPM se publicó 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 (antiguo Mandriva Linux que cambió a rpm5 en 2011 [23] ) y también por el proyecto OpenPKG que proporciona paquetes para otras plataformas UNIX comunes.

OpenMandriva Lx ha vuelto a rpm.org [24] para la versión 4.0. [ necesita actualización ]

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

Véase también

Referencias

  1. ^ abc "Cronología de RPM". rpm.org . Consultado el 25 de junio de 2020 .
  2. ^ "RPM - planes, objetivos, etc." Max Spevack. Archivado desde el original el 6 de octubre de 2012. Consultado el 20 de enero de 2011 .
  3. ^ "Preguntas frecuentes de RPM.org". Archivado desde el original el 5 de noviembre de 2016. Consultado el 25 de agosto de 2013 .
  4. ^ ab Bailey, Edward C. (2000). "Capítulo 1: Introducción a la gestión de paquetes". Maximum RPM: Llevando al límite el gestor de paquetes de Red Hat. Red Hat, Inc., págs. 22-25. ISBN 978-1888172782Archivado desde el original el 10 de septiembre de 2016. Consultado el 13 de agosto de 2013 .
  5. ^ "po/LINGUAS". GitHub. 23 de abril de 2022. Archivado desde el original el 23 de abril de 2022. Consultado el 23 de abril de 2022 .
  6. ^ ab Bailey, Edward C. (2000). "Apéndice A: Formato del archivo RPM". Maximum RPM: Llevando al límite el gestor de paquetes de Red Hat. Red Hat, Inc., págs. 325–336. ISBN 978-1888172782Archivado desde el original el 21 de abril de 2016. Consultado el 22 de noviembre de 2010 .
  7. ^ "Configuración de YUM y creación de repositorios locales en IBM AIX". 24 de octubre de 2018. Archivado desde el original el 3 de octubre de 2020. Consultado el 3 de septiembre de 2020 .
  8. ^ "RPM y Yum son muy importantes para IBM i. He aquí el motivo". 18 de julio de 2018. Archivado desde el original el 29 de junio de 2019. Consultado el 3 de septiembre de 2020 .
  9. ^ "Administrador de paquetes". Archivado desde el original el 25 de marzo de 2016. Consultado el 4 de septiembre de 2020 .
  10. ^ "Guía RPM - Objetivos de diseño de RPM". Archivado desde el original el 21 de marzo de 2014. Consultado el 14 de abril de 2014 .
  11. ^ "BOGUS Announcement". Archivado desde el original el 4 de noviembre de 2013. Consultado el 14 de abril de 2014 .
  12. ^ "rpm4 era compatible con la creación de rpm sin Berkeley DB (–disable-bdb)". Foros de FreeBSD . 2020-01-29. Archivado desde el original el 2024-02-23 . Consultado el 2023-09-18 .
  13. ^ "RPM Fusion". rpmfusion.org. Archivado desde el original el 11 de febrero de 2019. Consultado el 22 de noviembre de 2010 .
  14. ^ "An Analysis of RPM Validation Drift" (PDF) . Asociación USENIX. Archivado (PDF) desde el original el 28 de julio de 2011 . Consultado el 15 de marzo de 2011 .
  15. ^ "Zypper - Wiki de MeeGo". Archivado desde el original el 25 de septiembre de 2013. Consultado el 14 de abril de 2014 .
  16. ^ "Preguntas frecuentes: sobre los proyectos". Sitio oficial de Ark Linux. Archivado desde el original el 2012-02-11 . Consultado el 2014-04-14 .
  17. ^ "Reparar una base de datos RPM de forma segura". Archivado desde el original el 6 de agosto de 2019. Consultado el 11 de noviembre de 2011 .
  18. ^ "Software de empaquetado complementario". Proyecto Fedora. Archivado desde el original el 10 de marzo de 2016. Consultado el 11 de noviembre de 2011 .
  19. ^ "Cambio de RPM a compresión zstd". Proyecto Fedora (Wiki). Archivado desde el original el 2019-06-02 . Consultado el 2019-06-02 .
  20. ^ "[PARCHE] Añadir compatibilidad con lzip". Archivado desde el original el 4 de marzo de 2016. Consultado el 24 de octubre de 2013 .
  21. ^ "Cómo empaquetar software propietario". 10 de diciembre de 2014. Archivado desde el original el 2 de julio de 2018. Consultado el 2 de julio de 2018 .
  22. ^ "Notas de la versión de Mageia 3: administración de paquetes". mageia.org . 2013-05-19. Archivado desde el original el 2014-02-07 . Consultado el 2014-04-14 .
  23. ^ Bodnar, Ladislav y Smith, Jesse (22 de noviembre de 2010). «DistroWatch Weekly». DistroWatch . Archivado desde el original el 23 de junio de 2018. Consultado el 22 de noviembre de 2010 .
  24. ^ "Foro: Cambio a RPMv4". Archivado desde el original el 14 de enero de 2022. Consultado el 3 de marzo de 2018 .
  25. ^ "YP Core - Pyro 2.3". Proyecto Yocto . 2017-05-12. Archivado desde el original el 2017-12-05 . Consultado el 2017-12-04 .{{cite web}}: CS1 maint: bot: estado de URL original desconocido ( enlace )()
  26. ^ "[Openembedded-architecture] Cambios que provocará el cambio de smart a dnf". Proyecto Yocto . 2017-02-14. Archivado desde el original el 2018-11-05 . Consultado el 2018-11-04 .

Enlaces externos