Articulo de referencia

gestor de paquetes

apt-get , una utilidad CLI que instala MediaWiki Un gestor de paquetes , o sistema de gestión de paquetes , es un software que permite instalar , actualizar, configurar y elimin...

apt-get, una utilidad CLI que instala MediaWiki

Un gestor de paquetes , o sistema de gestión de paquetes , es un software que permite instalar , actualizar, configurar y eliminar software para el sistema anfitrión de forma consistente. [ 1 ]

Un gestor de paquetes se encarga de los paquetes , distribuciones de software y datos en archivos comprimidos . Los paquetes contienen metadatos , como el nombre del software, la descripción de su propósito, el número de versión , el proveedor, la suma de verificación (generalmente una función hash criptográfica ) y una lista de dependencias necesarias para que el software funcione correctamente. Tras la instalación, los metadatos se almacenan en una base de datos local de paquetes . Los gestores de paquetes suelen mantener una base de datos de dependencias de software e información de versiones para evitar incompatibilidades de software y la falta de requisitos previos. Colaboran estrechamente con repositorios de software , gestores de repositorios binarios y tiendas de aplicaciones .

Los gestores de paquetes están diseñados para eliminar la necesidad de instalaciones y actualizaciones manuales. Esto puede ser particularmente útil para grandes empresas cuyos sistemas operativos (SO) suelen constar de cientos o incluso decenas de miles de paquetes distintos. [ 2 ]

Historia

Un gestor de paquetes primitivo fue SMIT (y su instalación de backend ) de IBM AIX . SMIT se introdujo con AIX 3.0 en 1989. Los gestores de paquetes como dpkg existían ya en 1994. [ 3 ] Los primeros gestores de paquetes, de alrededor de 1994, no tenían resolución automática de dependencias [ 4 ] pero ya podían simplificar el proceso de añadir y eliminar software de un sistema en ejecución. [ 5 ]

Hacia 1995, comenzando con CPAN , los gestores de paquetes comenzaron a manejar las descargas de repositorios de paquetes, la resolución de dependencias y la instalación según fuera necesario, lo que facilitó la instalación, desinstalación y actualización de software. [ 6 ]

Funciones

Ilustración de un gestor de paquetes que se utiliza para descargar software nuevo. Las acciones manuales pueden incluir la aceptación de un acuerdo de licencia de software o la selección de opciones de configuración específicas del paquete.

Un paquete de software es un archivo comprimido que contiene un programa informático, así como los metadatos necesarios para su implementación . El programa puede estar en código fuente que debe compilarse y construirse previamente. [ 7 ] Los metadatos del paquete incluyen la descripción del software, el número de versión y las dependencias.

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

Problemas con las bibliotecas compartidas

Los sistemas informáticos que utilizan el enlace dinámico de bibliotecas , en lugar del enlace estático , comparten bibliotecas ejecutables de instrucciones de máquina entre paquetes y aplicaciones. En estos sistemas, las relaciones conflictivas entre diferentes paquetes que requieren distintas versiones de bibliotecas dan lugar a una situación denominada " infierno de dependencias" . En los sistemas Microsoft Windows , esto también se conoce como "infierno de DLL" cuando se trabaja con bibliotecas de enlace dinámico. [ 8 ]

Los gestores de paquetes modernos han resuelto en gran medida estos problemas permitiendo la instalación paralela de múltiples versiones de bibliotecas (por ejemplo, el sistema Framework de OPENSTEP ), dependencias de cualquier tipo (por ejemplo, ranuras en Gentoo Portage ) e incluso paquetes compilados con diferentes versiones de compilador (por ejemplo, bibliotecas dinámicas creadas por el compilador Glasgow Haskell , donde no existe una ABI estable ), para permitir que otros paquetes especifiquen con qué versión están vinculados o instalados.

Interfaces para paquetes compilados localmente

Los administradores de sistemas pueden instalar y mantener software utilizando herramientas distintas a los gestores de paquetes. Por ejemplo, un administrador local puede descargar código fuente sin empaquetar, compilarlo e instalarlo. Esto puede provocar que el sistema local pierda la sincronización con la base de datos del gestor de paquetes . El administrador local deberá tomar medidas adicionales, como gestionar manualmente algunas dependencias o integrar los cambios en el gestor de paquetes.

Existen herramientas para garantizar que los paquetes compilados localmente se integren con el sistema de gestión de paquetes. Para sistemas operativos basados ​​en archivos .deb y .rpm , así como para 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 garantiza que el paquete se ajuste a la base de datos de paquetes local.

Mantenimiento de la configuración

Las actualizaciones de archivos de configuración pueden resultar particularmente problemáticas. Dado que los gestores de paquetes, al menos en sistemas Unix , se originaron como extensiones de los archivadores de archivos, generalmente solo pueden sobrescribir o conservar los archivos de configuración, en lugar de aplicarles reglas. Existen excepciones que suelen aplicarse a la configuración del kernel (que, si se daña, dejará el equipo inutilizable tras un reinicio). Pueden surgir problemas si cambia el formato del archivo de configuración; por ejemplo, si el archivo antiguo no desactiva explícitamente las nuevas opciones que deberían estar desactivadas. Algunos gestores de paquetes, como dpkg de Debian , permiten la configuración durante la instalación. En otros casos, los paquetes se instalan con la configuración predeterminada, que luego se sobrescribe, por ejemplo, en instalaciones sin interfaz gráfica para un gran número de equipos. Este tipo de instalación preconfigurada también es compatible con dpkg.

Repositorios

Para dar a los usuarios más control sobre el software que permiten que se instale en sus sistemas, y a veces debido a razones legales o de conveniencia por parte de los distribuidores, los paquetes a menudo se descargan de repositorios de software . [ 9 ]

Supresión de actualización

Cuando un usuario actualiza un paquete con un software de gestión de paquetes, es habitual que se le muestren las acciones a ejecutar (normalmente la lista de paquetes a actualizar y, posiblemente, los números de versión antiguos y nuevos), y que pueda aceptar la actualización en bloque o seleccionar paquetes individuales para actualizar. Muchos gestores de paquetes se pueden configurar para que nunca actualicen ciertos paquetes, o para que los actualicen solo cuando se encuentren vulnerabilidades o inestabilidades críticas en la versión anterior, según lo defina el empaquetador del software. Este proceso se denomina supresión de actualizaciones o fijación de versiones . Por ejemplo, para evitar las actualizaciones del programa OpenOffice :

  • yum admite la supresión de actualizaciones con la sintaxis exclude=openoffice*[ 10 ].
  • pacman con IgnorePkg= openoffice[ 11 ] (para suprimir la actualización de openoffice en ambos casos)
  • dpkg y dselect admiten la supresión parcial mediante el indicador hold en las selecciones de paquetes.
  • APT extiende la bandera de retención a través de un mecanismo de fijación, [ 12 ] y los usuarios también pueden incluir un paquete en la lista negra [ 13 ].
  • aptitude utiliza banderas hold y forbid : [ 14 ]
    • hold : impide que un paquete se actualice o modifique durante las instalaciones/actualizaciones.
    • forbid : impide que un paquete se instale o reinstale.
  • Portage admite la supresión a través del archivo de configuración package.mask.

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 , [ 11 ] en la que también se eliminan todos los paquetes que dependen del paquete objetivo y todos los paquetes de los que solo depende este.

Comparación de comandos

Aunque los comandos son específicos de cada gestor de paquetes, son traducibles en gran medida, ya que la mayoría de los gestores de paquetes ofrecen funciones similares. La wiki de Arch Linux ofrece una descripción general exhaustiva de los comandos. [ 15 ]

Predominio

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

Programas y plataformas similares

Instaladores

A menudo se denomina gestor de paquetes o gestor de instalación , lo que puede generar confusión entre gestores de paquetes e instaladores . Las diferencias incluyen:

Utilidades de automatización de la creación

La mayoría de los sistemas de gestión de configuración de software tratan la compilación y la implementación del software como pasos separados e independientes. Una utilidad de automatización de compilación suele tomar archivos de código fuente legibles que ya se encuentran en un ordenador y automatiza el proceso de convertirlos en un paquete ejecutable en el mismo ordenador o en uno remoto. Posteriormente, un gestor de paquetes, normalmente ejecutándose en otro ordenador, descarga el ejecutable precompilado y lo instala.

Sin embargo, ambos tipos de herramientas tienen muchas características en común:

  • La ordenación topológica del grafo de dependencias que se utiliza en un gestor de paquetes para gestionar las dependencias entre componentes binarios también se utiliza en un gestor de compilación para gestionar las dependencias entre componentes fuente.
  • Muchos makefiles admiten no solo la creación de ejecutables, sino también su instalación con make install.
  • Todos los gestores de paquetes para distribuciones basadas en código fuente , como Portage , Sorcery o Homebrew , permiten convertir el código fuente en ejecutables binarios e instalarlos.  

Algunas herramientas, como Maak y AAP, están diseñadas para gestionar tanto la compilación como la implementación, y pueden utilizarse como utilidades de automatización de compilación, gestores de paquetes o ambas cosas. [ 22 ]

Tiendas de aplicaciones

GNOME Software , una interfaz gráfica de usuario GTK para PackageKit y Flatpak.

Las tiendas de aplicaciones también pueden considerarse gestores de paquetes a nivel de aplicación (sin la capacidad de instalar todos los niveles de programas [ 23 ] [ 24 ] ). A diferencia de los gestores de paquetes tradicionales, las tiendas de aplicaciones están diseñadas para permitir el pago del software en sí (en lugar del desarrollo del software) y pueden ofrecer únicamente paquetes monolíticos sin dependencias ni resolución de dependencias. [ 25 ] [ 24 ] Suelen tener una funcionalidad de gestión limitada, debido a que se centran en la facilidad de uso por encima de la potencia o la aparición , y son comunes en sistemas operativos comerciales y dispositivos inteligentes .

Los gestores de paquetes también suelen tener solo código revisado por humanos. Muchas tiendas de aplicaciones, como Google Play y la App Store de Apple, examinan las aplicaciones principalmente usando solo herramientas automatizadas; el malware puede pasar estas pruebas detectando cuándo se está probando la aplicación y retrasando la actividad maliciosa. [ 26 ] [ 27 ] [ 28 ] Hay excepciones: la base de datos de paquetes npm , por ejemplo, se basa completamente en la revisión posterior a la publicación de su código, [ 29 ] [ 30 ] mientras que la base de datos de paquetes Debian tiene un extenso proceso de revisión humana antes de que cualquier paquete se incorpore a la base de datos principal. La puerta trasera XZ Utils usó años de construcción de confianza para insertar una puerta trasera, que no obstante fue detectada mientras estaba en la base de datos de pruebas.

Gestores de paquetes y formatos comunes

gestor de paquetes universal

También conocido como gestor de repositorio binario, es una herramienta de software diseñada para optimizar la descarga y el almacenamiento de archivos binarios, artefactos y paquetes utilizados y producidos en el proceso de desarrollo de software. [ 31 ] Estos gestores de paquetes buscan estandarizar la forma en que las empresas manejan todos los tipos de paquetes. Ofrecen a los usuarios la capacidad de aplicar métricas de seguridad y cumplimiento a todos los tipos de artefactos. Se ha dicho que los gestores de paquetes universales se encuentran en el centro de una cadena de herramientas DevOps. [ 32 ]

Formatos de paquete

Synaptic , una interfaz gráfica de usuario para muchos gestores de paquetes de Linux.

Cada gestor de paquetes depende del formato y los metadatos de los paquetes en su repositorio. Es decir, los gestores de paquetes necesitan que los grupos de archivos se agrupen junto con los metadatos correspondientes, como las dependencias. A menudo, un conjunto básico de utilidades gestiona la instalación básica de estos paquetes, y varios gestores de paquetes utilizan estas utilidades para proporcionar funcionalidades adicionales.

Por ejemplo, yum se basa en rpm como motor . Yum amplía la funcionalidad de rpm añadiendo características como la configuración sencilla para el mantenimiento de una red de sistemas. Otro ejemplo es el gestor de paquetes Synaptic , que proporciona una interfaz gráfica de usuario mediante la biblioteca Advanced Packaging Tool (apt), la cual, a su vez, se basa en dpkg para su funcionalidad principal.

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

Para sistemas operativos móviles, Google Play utiliza el formato de paquete de aplicación de Android (APK), mientras que Microsoft Store utiliza los formatos APPX y XAP . Tanto Google Play como Microsoft Store cuentan con gestores de paquetes homónimos.

Sistemas de software libre y de código abierto

Debido a la naturaleza del software libre y de código abierto (FOSS), existen paquetes con licencias similares y compatibles disponibles para diversos sistemas operativos. Estos paquetes se pueden combinar y distribuir mediante sistemas de empaquetado configurables para gestionar múltiples combinaciones de software y administrar dependencias y conflictos específicos de cada versión. Algunos gestores de paquetes FOSS se publican como software libre. Una diferencia típica entre la gestión de paquetes en sistemas operativos propietarios, como Mac OS X y Windows, y en software libre y de código abierto, como Linux, radica en que los sistemas de software libre y de código abierto permiten instalar y actualizar paquetes de terceros mediante el mismo mecanismo, mientras que los gestores de paquetes de Mac OS X y Windows solo actualizan el software proporcionado por Apple y Microsoft, respectivamente (con la excepción de algunos controladores de terceros en Windows). La capacidad de actualizar continuamente el software de terceros se suele añadir agregando la URL del repositorio correspondiente al archivo de configuración del gestor de paquetes.

Gestores de paquetes a nivel de aplicación

Además de los gestores de aplicaciones a nivel de sistema, existen gestores de paquetes adicionales 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 gestores de paquetes a nivel de sistema, los gestores de paquetes a nivel de aplicación se centran en una pequeña parte del sistema de software. Suelen residir en un árbol de directorios que no es mantenido por el gestor a nivel de sistema, como c:\cygwin o /opt/sw . [ 33 ] Esto puede no ser así para los gestores que se ocupan de las bibliotecas de programación, lo que puede dar lugar a conflictos, ya que ambos gestores pueden reclamar la propiedad de un archivo y provocar fallos en las actualizaciones.

Impacto

Ian Murdock comentó que la gestión de paquetes es "el mayor avance que Linux ha aportado a la industria", que difumina los límites entre sistemas operativos y aplicaciones, y que facilita "impulsar nuevas innovaciones [...] al mercado y [...] evolucionar el sistema operativo". [ 34 ]

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

Véase también

Referencias

  1. "¿Qué es un gestor de paquetes?" . debian.org . Archivado del original el 17 de octubre de 2017 . Consultado el 19 de diciembre de 2018 .
  2. "Distribución de software" . Dell KACE. Archivado del original el 3 de octubre de 2015. Recuperado el 11 de julio de 2012 .
  3. "Código fuente de dpkg versión 0.93.15" . Archivado del original el 2 de abril de 2015. Recuperado el 19 de diciembre de 2018 .
  4. "La historia de la gestión de paquetes *nix" . 14 de agosto de 2017. Archivado del original el 24 de octubre de 2021. Consultado el 12 de octubre de 2021 .
  5. "Reseña del lanzamiento de InfoMagic en diciembre de 1994" . Archivado del original el 29 de octubre de 2021. Consultado el 12 de octubre de 2021 .
  6. "Cronología de Perl y su cultura" . Archivado del original el 11 de enero de 2013. Consultado el 29 de octubre de 2021 .
  7. Ludovic Courtès, Gestión funcional de paquetes con Guix. Archivado el 15 de mayo de 2020 en Wayback Machine , junio de 2013, Madrid, Simposio Europeo de Lisp 2013.
  8. Tucker, Chris (15 de marzo de 2007). "OPIUM: Gestor óptimo de instalación/desinstalación de paquetes" (PDF) . 29.ª Conferencia Internacional sobre Ingeniería de Software (ICSE'07) . UC San Diego. pág. 1. doi : 10.1109/ICSE.2007.59 . ISBN  978-0-7695-2828-1. S2CID 1279451 . Archivado (PDF) del original el 14 de junio de 2011 . Recuperado el 14 de septiembre de 2011 . 
  9. "Esquemas de clasificación de repositorios Linux" . braintickle.blogspot.com. 13 de enero de 2006. Archivado del original el 11 de octubre de 2007. Consultado el 1 de marzo de 2008 .
  10. "CentOS yum fijando rpms" . centos.org. Archivado del original el 2 de noviembre de 2007. Recuperado el 1 de marzo de 2008 .
  11. 1 2 "Página del manual de pacman(8)" . archlinux.org . Archivado del original el 31 de agosto de 2019. Recuperado el 1 de marzo de 2008 .
  12. "Cómo mantener instaladas versiones específicas de paquetes (complejo)" . debian.org. Archivado del original el 14 de noviembre de 2019. Consultado el 1 de marzo de 2008 .
  13. "Fijar permisos para incluir un paquete en la lista negra" . Archivado del original el 22 de julio de 2011. Recuperado el 19 de agosto de 2010 .
  14. "Aptitude - página man de Linux" .
  15. "Pacman/Rosetta – ArchWiki" . wiki.archlinux.org . Archivado del original el 20 de noviembre de 2016. Consultado el 17 de septiembre de 2017 .
  16. "apt(8) — apt — Debian trixie — Debian Manpages" . manpages.debian.org . Consultado el 26 de abril de 2026 .
  17. "Referencia de comandos de DNF" . dnf.readthedocs.io . Consultado el 26 de abril de 2026 .
  18. "Archivo:Manual de Zypper (plano) - Wiki de openSUSE" . Wiki de openSUSE . Archivado del original el 26 de abril de 2026. Consultado el 26 de abril de 2026 .
  19. "Utilice WinGet para instalar y administrar aplicaciones" . Microsoft Learn . Consultado el 29 de abril de 2026 .
  20. "Administrador de paquetes XBPS - Manual de Void Linux" . docs.voidlinux.org . Archivado del original el 23 de enero de 2023. Consultado el 19 de diciembre de 2022 .
  21. "DNF y sus comandos APT equivalentes en Fedora" . Documentación de Fedora . Consultado el 29 de abril de 2026 .
  22. Eelco Dolstra, "Integración de la construcción y el despliegue de software" . Archivado el 21 de septiembre de 2019 en Wayback Machine .
  23. "Brew es el reemplazo de la tienda de aplicaciones de macOS que no sabías que necesitabas" . www.msn.com . Consultado el 25 de mayo de 2024 .
  24. 1 2 King, Bertel (17 de marzo de 2017). "Comparativa de tiendas de aplicaciones de Linux: ¿Cuál es la adecuada para ti?" . MUO . Recuperado el 25 de mayo de 2024 .
  25. "¿Qué es un gestor de paquetes?" . www.debian.org .
  26. Barrett, Brian. "Cómo 18 aplicaciones de malware se infiltraron en la App Store de Apple" . Wired .
  27. Whittaker, Zack (24 de octubre de 2019). "Millones de personas descargaron decenas de aplicaciones de Android desde Google Play que estaban infectadas con adware" . TechCrunch .
  28. Newman, Lily Hay. "Nunca jamás (jamás) descargues aplicaciones de Android fuera de Google Play" . Wired .
  29. Ojamaa, Andres; Duuna, Karl (2012). "Evaluación de la seguridad de la plataforma Node.js" . Conferencia Internacional de 2012 sobre Tecnología de Internet y Transacciones Seguras . IEEE. ISBN 978-1-4673-5325-0Consultado el 22 de julio de 2016 .
  30. "Código de conducta de npm: contenido aceptable de los paquetes" . Consultado el 9 de mayo de 2017 .
  31. Waters, John K. (8 de septiembre de 2015). "JFrog lanza un repositorio de artefactos 'universal'" . ADT Mag . Application Development Trends Magazine. Archivado del original el 2 de marzo de 2016. Recuperado el 19 de febrero de 2016 .
  32. "Una visión general del ecosistema NuGet" . CodeProject.com . 18 de agosto de 2013. Archivado del original el 5 de julio de 2020. Consultado el 6 de febrero de 2020 .
  33. "Fink – Inicio" . finkproject.org . Archivado del original el 18 de agosto de 2021. Consultado el 2 de septiembre de 2021 .
  34. "Cómo la gestión de paquetes lo cambió todo" . ianmurdock.com. Archivado del original el 23 de febrero de 2009. Consultado el 1 de marzo de 2008 .
  35. "PackagingCon 2021: una conferencia para desarrolladores y empaquetadores de gestores de paquetes" . packaging-con.org . Archivado del original el 2 de septiembre de 2021. Consultado el 2 de septiembre de 2021 .
  • Guía rápida de gestión de paquetes de Distrowatch
  • Wiki de Arch Linux Pacman/Rosetta: comparación de líneas de comando para gestores de paquetes
  • upkg – gestor de paquetes universal, un envoltorio que proporciona la misma sintaxis para todas las variantes de Linux.