What are Package Managers on Linux?
Hoy en día hablar de Manejadores de Paquetes se ha vuelto un tema ya conocido gracias a los nuevos lenguajes de programación y su rápida evolución. Lenguajes como Node.js, PHP, Python entre otros han dinamizado el concepto proporcionando soluciones para manejar librerías y dependencias que permiten aclarar el concepto.
Ahora, si hablamos de Linux, es importante entender que el concepto en su fundamento es el mismo, a diferencia de que el término inició en los Sistemas Operativos (OS), por lo cual es de entenderse que al día de hoy estas herramientas son bastante potentes y simplifican casi en su totalidad los procesos de instalación, desinstalación y configuración de aplicaciones en los Sistemas Operativos Unix-Like o Linux.
Conceptualmente un manejador de paquetes es una colección de herramientas de softwares que automatizan el proceso de instalación, actualización, configuración y eliminación de programas de computación para un Sistema Operativo de forma coherente.
El Manejador de Paquetes se encarga de lidiar con los paquetes, distribuciones del software y los archivos de datos. Estos paquetes contienen metadatos, que describen el funcionamiento y propósito, versión, distribuidor, código hash y una lista de dependencias necesarias para que el software que vallamos a instalar funcione de forma correcta.
Ok, ya los entiendo, ahora ¿Cómo funcionan?
Antes de proceder con la instalación, el manejador de paquetes se encarga de guardar de forma local una base de datos de todos los metadatos de cada repositorio configurado en el mismo. Esto permite que el sistema mantenga una relación de las versiones y dependencias necesarias para evitar incompatibilidades o falta de requisitos. Este proceso permite que el manejo de miles de cientos de softwares sea manejado de manera eficiente y rápida, ya que las consultas de cada requerimiento se trabajan de forma local hasta definir la acción a tomar con el paquete.
Los manejadores de paquetes están diseñados para eliminar la necesidad de instalar o actualizar aplicaciones de forma manual. Esto es muy útil en sistemas operativos como Linux en donde existen cientos o miles de paquetes de software distintos para un sin número de arquitecturas.
En Linux los Manejadores de Paquetes pueden servir para Instalar, Desinstalar y Actualizar Aplicaciones. Al mismo tiempo permiten tareas como búsqueda, reparación, administración de dependencias, entre otras tareas relacionadas.
Algunos ejemplos
Cada Sistema Operativo moderno dispone de su Manejador de Paquetes. Dependiendo de la familia de la distribución podremos reconocer cuál es el Manejador que le administra.
Existe un gran número de manejares por lo cual solo mencionaré los de mayor relevancia en las distribuciones de mayor uso del mercado:
Distribución | Manejador de Paquetes | Herramientas de Resolución |
---|---|---|
Debian, Ubuntu | dpkg | apt, aptitude |
Ret Hat, open Suse, Fedora | RPM | apt4rm, zypp, yum, dnf |
Arch Linux, Frugalware | Pacman | Makepkg |
Arch Linux, Debian, Knoppix, Mint, Ubuntu, Fedora, Gentoo, OpenSUSE, Red Hat and Slackware | Zero Install | 0install |
En lo adelante estaré escribiendo sobre el uso de estos manejadores, específicamente dpkg y rpm ya que son los Manejadores de Paquetes de las distribuciones de mayor uso y con las que manejo mayor experiencia.
Como nota curiosa les doy una relación de Manejadores de Paquetes en otros Sistemas Operativos:
Sistema Operativo | Manejador de Paquetes |
---|---|
macOS (OS X) | Mac App Store, Homebrew, Steam, Zero Install |
iOS | App Store, Cydia |
Android | Google Play, GetJar, Amazon Appstore |
Windows | Windows Store, Xbox Live, Cygwin, Zero Install (Really?!), Steam |
BSD | dpkg, OpenPKG |
Solaris | Image Packaging System, pjgsrc, OpenPKG |