stringtranslate.com

Gerente de empaquetación

Synaptic , ejemplo de gestor de paquetes

Un administrador de paquetes o sistema de administración de paquetes es una colección de herramientas de software que automatiza el proceso de instalación, actualización, configuración y eliminación de programas informáticos para una computadora de manera consistente. [1]

Un administrador de paquetes se ocupa de paquetes , distribuciones de software y datos en archivos de almacenamiento . Los paquetes contienen metadatos , como el nombre del software, descripción de su propósito, número de versión, proveedor, suma de verificación (preferiblemente una función hash criptográfica ) y una lista de dependencias necesarias para que el software se ejecute correctamente. Tras la instalación, los metadatos se almacenan en una base de datos de paquetes local. Los administradores de paquetes suelen mantener una base de datos de dependencias de software e información de versión para evitar discrepancias de software y requisitos previos faltantes. Trabajan en estrecha colaboración con repositorios de software , administradores de repositorios binarios y tiendas de aplicaciones .

Los administradores de paquetes están diseñados para eliminar la necesidad de instalaciones y actualizaciones manuales. Esto puede resultar especialmente útil para grandes empresas cuyos sistemas operativos suelen constar de cientos o incluso decenas de miles de paquetes de software distintos. [2]

Historia

Uno de los primeros administradores de paquetes fue SMIT (y su instalación backend) de IBM AIX . SMIT se introdujo con AIX 3.0 en 1989.

Los primeros administradores de paquetes, de alrededor de 1994, no tenían resolución automática de dependencias [3] pero ya podían simplificar drásticamente el proceso de agregar y eliminar software de un sistema en ejecución. [4]

Alrededor de 1995, comenzando con CPAN , los administradores de paquetes comenzaron a hacer el trabajo de descargar paquetes de un repositorio, resolviendo automáticamente sus dependencias e instalándolos según fuera necesario, haciendo mucho más fácil instalar, desinstalar y actualizar software de un sistema. [5]

Funciones

Ilustración de un administrador de paquetes que se utiliza para descargar software nuevo. Las acciones manuales pueden incluir aceptar un acuerdo de licencia o seleccionar algunas opciones de configuración específicas del paquete.

Un paquete de software es un archivo que contiene un programa informático, así como los metadatos necesarios para su implementación. El programa de computadora puede estar en un código fuente que primero debe compilarse y construirse. [6] Los metadatos del paquete incluyen la descripción del paquete, la versión del paquete y las dependencias (otros paquetes que deben instalarse de antemano).

Los administradores de paquetes se encargan de la tarea de buscar, instalar, mantener o desinstalar paquetes de software según las órdenes del usuario. Las funciones típicas de un sistema de gestión de paquetes incluyen:

Desafíos con las bibliotecas compartidas

Los sistemas informáticos que dependen de la vinculación dinámica de bibliotecas , en lugar de la vinculación estática de bibliotecas , comparten bibliotecas ejecutables de instrucciones de máquina entre paquetes y aplicaciones. En estos sistemas, las relaciones conflictivas entre diferentes paquetes que requieren diferentes versiones de bibliotecas dan como resultado un desafío conocido coloquialmente como " infierno de dependencia ". En los sistemas Microsoft Windows , esto también se denomina " infierno de DLL " cuando se trabaja con bibliotecas vinculadas dinámicamente. [7]

Los administradores de paquetes modernos han resuelto en su mayoría estos problemas al permitir la instalación paralela de múltiples versiones de una biblioteca (por ejemplo, el sistema Framework de OPENSTEP ), una dependencia de cualquier tipo (por ejemplo, ranuras en Gentoo Portage ) e incluso paquetes compilados con diferentes versiones del compilador. (por ejemplo, bibliotecas dinámicas creadas por el compilador Haskell de Glasgow , donde no existe una ABI estable ), para permitir que otros paquetes especifiquen con qué versión se vincularon o incluso se instalaron.

Interfaces para paquetes compilados localmente

Los administradores del sistema pueden instalar y mantener software utilizando herramientas distintas al software de administración de paquetes. Por ejemplo, un administrador local puede descargar el código fuente sin empaquetar, compilarlo e instalarlo. Esto puede hacer que el estado del sistema local no esté sincronizado con el estado de la base de datos del administrador de paquetes . Se requerirá que el administrador local tome medidas adicionales, como administrar manualmente algunas dependencias o integrar los cambios en el administrador de paquetes.

Hay herramientas disponibles para garantizar que los paquetes compilados localmente se integren con la gestión de paquetes. Para distribuciones basadas en archivos .deb y .rpm , así como Slackware Linux, existe CheckInstall , y para sistemas basados ​​en recetas como Gentoo Linux y sistemas híbridos como Arch Linux , es posible escribir primero una receta, lo que luego garantiza que el paquete encaje en la base de datos de paquetes local. [ cita necesaria ]

Mantenimiento de configuración

Particularmente problemáticas con las actualizaciones de software son las actualizaciones de los archivos de configuración. Dado que los administradores de paquetes, al menos en los sistemas Unix, se originaron como extensiones de las utilidades de archivado de archivos , generalmente solo pueden sobrescribir o retener archivos de configuración, en lugar de aplicarles reglas. Hay excepciones a esto que generalmente se aplican a la configuración del kernel (que, si se rompe, dejará la computadora inutilizable después de reiniciar). Pueden surgir problemas si cambia el formato de los archivos de configuración; por ejemplo, si el archivo de configuración antiguo no deshabilita explícitamente las nuevas opciones que deberían deshabilitarse. Algunos administradores de paquetes, como dpkg de Debian , permiten la configuración durante la instalación. En otras situaciones, es deseable instalar paquetes con la configuración predeterminada y luego sobrescribir esta configuración, por ejemplo, en instalaciones sin cabeza en una gran cantidad de computadoras. Este tipo de instalación preconfigurada también es compatible con dpkg.

Repositorios

Para brindar a los usuarios más control sobre los tipos de software que permiten instalar en su sistema (y, a veces, por razones legales o de conveniencia por parte de los distribuidores), el software a menudo se descarga de varios repositorios de software . [8]

Supresión de actualización

Cuando un usuario interactúa con el software de administración de paquetes para realizar una actualización, es habitual presentarle la lista de acciones que se ejecutarán (generalmente la lista de paquetes que se actualizarán y, posiblemente, los números de versión antigua y nueva). y permitir al usuario aceptar la actualización de forma masiva o seleccionar paquetes individuales para las actualizaciones. Muchos administradores de paquetes se pueden configurar para que nunca actualicen ciertos paquetes, o para actualizarlos solo cuando se encuentren vulnerabilidades o inestabilidades críticas en la versión anterior, según lo definido por el empaquetador del software. Este proceso a veces se denomina fijación de versión .

Por ejemplo:

Eliminación de paquetes en cascada

Algunas de las funciones de administración de paquetes más avanzadas ofrecen "eliminación de paquetes en cascada", [10] en la que también se eliminan todos los paquetes que dependen del paquete de destino y todos los paquetes de los que depende sólo el paquete de destino.

Comparación de comandos

Aunque los comandos son específicos para cada administrador de paquetes en particular, en gran medida son traducibles, ya que la mayoría de los administradores de paquetes ofrecen funciones similares.

La wiki de Arch Linux Pacman/Rosetta ofrece una descripción general extensa. [dieciséis]

Predominio

Los administradores de paquetes como dpkg existen ya en 1994. [17]

Las distribuciones de Linux orientadas a paquetes binarios dependen en gran medida de los sistemas de gestión de paquetes como medio principal para gestionar y mantener el software. Los sistemas operativos móviles como Android (basado en Linux), iOS ( basado en Unix ) y Windows Phone dependen casi exclusivamente de las tiendas de aplicaciones de sus respectivos proveedores y, por tanto, utilizan sus propios sistemas de gestión de paquetes dedicados.

Comparación con instaladores

Un administrador de paquetes a menudo se denomina "administrador de instalación", lo que puede generar confusión entre los administradores de paquetes y los instaladores . Las diferencias incluyen:

Comparación con la utilidad de automatización de compilación

La mayoría de los sistemas de gestión de configuración de software tratan la creación de software y su implementación como pasos separados e independientes. Una utilidad de automatización de compilación generalmente toma archivos de código fuente legibles por humanos que ya están en una computadora y automatiza el proceso de convertirlos en un paquete ejecutable binario en la misma computadora o en una remota. Más tarde, un administrador de paquetes que normalmente se ejecuta en otras computadoras descarga esos paquetes ejecutables binarios prediseñados a través de Internet y los instala.

Sin embargo, ambos tipos de herramientas tienen muchos puntos en común:

Algunas herramientas, como Maak y AAP , están diseñadas para manejar tanto la construcción como la implementación, y pueden usarse como una utilidad de automatización de construcción, como administrador de paquetes o ambas. [18]

Comparación con tiendas de aplicaciones

Las tiendas de aplicaciones también pueden considerarse administradores de paquetes a nivel de aplicaciones. A diferencia de los administradores de paquetes tradicionales, las tiendas de aplicaciones están diseñadas para permitir el pago por el software en sí (en lugar del desarrollo de software) y solo pueden ofrecer paquetes monolíticos sin dependencias ni resolución de dependencias. Por lo general, su funcionalidad de gestión es extremadamente limitada, debido a un fuerte enfoque en la simplificación por encima del poder o la emergencia , y son comunes en sistemas operativos comerciales y dispositivos "inteligentes" bloqueados.

Formatos y administradores de paquetes comunes

Administrador de paquetes universal

También conocido como administrador de repositorios binarios , es una herramienta de software diseñada para optimizar la descarga y el almacenamiento de archivos, artefactos y paquetes binarios utilizados y producidos en el proceso de desarrollo de software . [19] Estos administradores de paquetes tienen como objetivo estandarizar la forma en que las empresas tratan todos los tipos de paquetes. Brindan a los usuarios la capacidad de aplicar métricas de seguridad y cumplimiento en todos los tipos de artefactos. Se ha dicho que los administradores de paquetes universales están en el centro de una cadena de herramientas de DevOps . [20]

Formatos de paquete

Cada administrador de paquetes depende del formato y los metadatos de los paquetes que puede administrar. Es decir, los administradores de paquetes necesitan agrupar grupos de archivos para el administrador de paquetes específico junto con los metadatos apropiados, como las dependencias. A menudo, un conjunto básico de utilidades gestiona la instalación básica de estos paquetes y varios administradores de paquetes utilizan estas utilidades para proporcionar funcionalidad adicional.

Por ejemplo, yum depende de rpm como backend. Yum amplía la funcionalidad del backend agregando características como una configuración simple para mantener una red de sistemas. Como otro ejemplo, Synaptic Package Manager proporciona una interfaz gráfica de usuario mediante el uso de la biblioteca Advanced Packaging Tool (apt) , que, a su vez, se basa en dpkg para su funcionalidad principal.

Alien es un programa que convierte entre diferentes formatos de paquetes de Linux y admite la conversión entre paquetes .rpm compatibles con Linux Standard Base (LSB) , .deb , Stampede (.slp), Solaris (.pkg) y Slackware ( .tgz , .txz , . tbz, .tlz) paquetes.

En los sistemas operativos móviles, Google Play consume el formato de paquete de aplicaciones de Android (APK), mientras que Microsoft Store usa los formatos APPX y XAP . (Tanto Google Play como Microsoft Store tienen administradores de paquetes del mismo nombre).

Sistemas de software gratuitos y de código abierto.

Por la naturaleza del software gratuito y de código abierto , hay paquetes con licencias similares y compatibles disponibles para su uso en varios sistemas operativos. Estos paquetes se pueden combinar y distribuir utilizando sistemas de empaquetado configurables e internamente complejos para manejar muchas permutaciones de software y gestionar dependencias y conflictos específicos de la versión. Algunos sistemas de empaquetado de software gratuito y de código abierto también se publican como software gratuito y de código abierto. Una diferencia típica entre la gestión de paquetes en sistemas operativos propietarios, como Mac OS X y Windows, y aquellos en software libre y de código abierto, como Linux, es que los sistemas de software libre y de código abierto también permiten instalar y administrar paquetes de terceros. actualizado a través del mismo mecanismo, mientras que los administradores de paquetes de Mac OS X y Windows solo actualizarán el software proporcionado por Apple y Microsoft, respectivamente (con la excepción de algunos controladores de terceros en Windows). La capacidad de actualizar continuamente software de terceros generalmente se agrega agregando la URL del repositorio correspondiente al archivo de configuración de administración de paquetes.

Administradores de paquetes a nivel de aplicación

Además de los administradores de aplicaciones a nivel de sistema, existen algunos administradores de paquetes complementarios para sistemas operativos con capacidades limitadas y para lenguajes de programación en los que los desarrolladores necesitan las bibliotecas más recientes .

A diferencia de los administradores de paquetes a nivel de sistema, los administradores de paquetes a nivel de aplicación se centran en una pequeña parte del sistema de software. Por lo general, residen dentro de un árbol de directorios que no es mantenido por el administrador de paquetes a nivel del sistema, como c:\cygwin o /opt/sw . [21] Sin embargo, este podría no ser el caso de los administradores de paquetes que se ocupan de las bibliotecas de programación, lo que genera un posible conflicto ya que ambos administradores de paquetes pueden afirmar que son "dueños" de un archivo y podrían interrumpir las actualizaciones.

Gestión de dependencia de datos

En 2016, Edgard Marx, informático de la Universidad de Leipzig, acuñó el término Data Dependency Management [22] para referirse a los sistemas que se ocupan de la gestión de datos. Los sistemas de gestión de dependencia de datos están diseñados para facilitar la implementación y gestión de datos en la nube, computadoras personales o dispositivos inteligentes (edge). Los marcos de gestión de dependencia de datos se pueden utilizar para describir cómo se concibieron los datos, las licencias y sus dependencias. El concepto de gestión de dependencia de datos proviene de herramientas de gestión de dependencia de paquetes de software como npm para JavaScript, gem para Ruby y NuGet para .NET. Su razón fundamental es permitir a los usuarios gestionar la dependencia del software en los datos, como los modelos de aprendizaje automático para aplicaciones basadas en datos. Son útiles para publicar, localizar e instalar paquetes de datos. Un ejemplo típico de marcos de gestión de dependencia de datos son Hugging Face, KBox, [23] entre otros.

Impacto

Ian Murdock había comentado que la gestión de paquetes es "el mayor avance que Linux ha aportado a la industria", que desdibuja los límites entre el sistema operativo y las aplicaciones, y que hace que sea "más fácil impulsar nuevas innovaciones [...] mercado y [...] evolucionar el sistema operativo". [24]

También hay una conferencia para desarrolladores de administradores de paquetes conocida como PackagingCon. Se estableció en 2021 con el objetivo de comprender diferentes enfoques para la gestión de paquetes. [25]

Ver también

Referencias

  1. ^ "¿Qué es un administrador de paquetes?". Archivado desde el original el 17 de octubre de 2017 . Consultado el 19 de diciembre de 2018 .
  2. ^ "Distribución de software". Dell KACE. Archivado desde el original el 3 de octubre de 2015 . Consultado el 11 de julio de 2012 .
  3. ^ "La historia de la gestión de paquetes *nix". 14 de agosto de 2017. Archivado desde el original el 24 de octubre de 2021 . Consultado el 12 de octubre de 2021 .
  4. ^ "Una revisión de la versión de diciembre de 1994 de InfoMagic". Archivado desde el original el 29 de octubre de 2021 . Consultado el 12 de octubre de 2021 .
  5. ^ "La cronología de Perl y su cultura". Archivado desde el original el 11 de enero de 2013 . Consultado el 29 de octubre de 2021 .
  6. Ludovic Courtès, Gestión de paquetes funcionales con Guix Archivado el 15 de mayo de 2020 en Wayback Machine , junio de 2013, Madrid, Simposio Europeo Lisp 2013
  7. ^ Tucker, Chris (15 de marzo de 2007). "OPIUM: Administrador óptimo de instalación/desinstalación de paquetes" (PDF) . 29ª Conferencia Internacional sobre Ingeniería de Software (ICSE'07). Universidad de California en San Diego. pag. 1. doi :10.1109/ICSE.2007.59. ISBN 978-0-7695-2828-1. S2CID  1279451. Archivado (PDF) desde el original el 14 de junio de 2011 . Consultado el 14 de septiembre de 2011 .
  8. ^ "Esquemas de clasificación de repositorios de Linux". Braintickle.blogspot.com. 13 de enero de 2006. Archivado desde el original el 11 de octubre de 2007 . Consultado el 1 de marzo de 2008 .
  9. ^ "CentOS yum fijando rpms". centos.org. Archivado desde el original el 2 de noviembre de 2007 . Consultado el 1 de marzo de 2008 .{{cite web}}: Mantenimiento CS1: URL no apta ( enlace )
  10. ^ ab "Página del manual de pacman (8)". archlinux.org . Archivado desde el original el 31 de agosto de 2019 . Consultado el 1 de marzo de 2008 .
  11. ^ "Cómo mantener instaladas versiones específicas de paquetes (complejo)". debian.org. Archivado desde el original el 14 de noviembre de 2019 . Consultado el 1 de marzo de 2008 .
  12. ^ "Apto para fijar un paquete en la lista negra". Archivado desde el original el 22 de julio de 2011 . Consultado el 19 de agosto de 2010 .
  13. ^ "documentación/sles11". es.opensuse.org . Archivado desde el original el 1 de diciembre de 2022 . Consultado el 16 de agosto de 2017 .
  14. ^ "Administrador de paquetes XBPS - Manual de Void Linux". docs.voidlinux.org . Archivado desde el original el 23 de enero de 2023 . Consultado el 19 de diciembre de 2022 .
  15. ^ "swupd-client/swupd.1.rst en master · clearlinux/swupd-client · GitHub". github.com . Archivado desde el original el 7 de diciembre de 2022 . Consultado el 22 de junio de 2022 .
  16. ^ "Pacman/Rosetta - ArchWiki". wiki.archlinux.org . Archivado desde el original el 20 de noviembre de 2016 . Consultado el 17 de septiembre de 2017 .
  17. ^ "Código fuente de dpkg versión 0.93.15". Archivado desde el original el 2 de abril de 2015 . Consultado el 19 de diciembre de 2018 .
  18. ^ Eelco Dolstra, "Integración de la construcción y la implementación de software" Archivado el 21 de septiembre de 2019 en Wayback Machine .
  19. ^ Waters, John K. (8 de septiembre de 2015). "JFrog lanza el repositorio de artefactos 'universal'". Revista ADT . Revista de tendencias de desarrollo de aplicaciones. Archivado desde el original el 2 de marzo de 2016 . Consultado el 19 de febrero de 2016 .
  20. ^ Decoster, Xavier (18 de agosto de 2013). "Una descripción general del ecosistema NuGet". CodeProject.com . Archivado desde el original el 5 de julio de 2020 . Consultado el 6 de febrero de 2020 .
  21. ^ "Fink - Inicio". finkproject.org . Archivado desde el original el 18 de agosto de 2021 . Consultado el 2 de septiembre de 2021 .
  22. ^ "Gestión de la dependencia de datos". github.com . Consultado el 13 de julio de 2023 .
  23. ^ "KBox". gieeexplore.ieee.org : 125–132. Enero de 2017. doi :10.1109/ICSC.2017.77. S2CID  14980310 . Consultado el 13 de julio de 2023 .
  24. ^ "Cómo la gestión de paquetes lo cambió todo". ianmurdock.com. Archivado desde el original el 23 de febrero de 2009 . Consultado el 1 de marzo de 2008 .
  25. ^ "PackagingCon 2021: una conferencia para desarrolladores y empaquetadores de administradores de paquetes". embalaje-con.org . Archivado desde el original el 2 de septiembre de 2021 . Consultado el 2 de septiembre de 2021 .

enlaces externos