En el artículo Trabajando con ports en OpenBSD expliqué cómo gestionar software en OpenBSD a través del sistema de ports. Claro está que la instalación de software a través de ports implica, para el caso de aplicaciones grandes y complejas, compilar una gran cantidad de paquetes, lo que puede llegar a insumir una gran cantidad de tiempo y recursos y además dificultar el mantenimiento del sistema.
Por supuesto instalar desde el sistema de ports tiene sus ventajas. Principalmente, la flexibilidad de disponer de diferentes versiones para un mismo paquete. Por ejemplo, para el caso de PHP se dispone de las versiones 5.4
, 5.5
, 5.6
y 7.0
:
# ls -l /usr/ports/lang/php/ total 68 drwxr-xr-x 5 root wheel 512 Feb 25 19:59 5.4 drwxr-xr-x 5 root wheel 512 Feb 25 19:59 5.5 drwxr-xr-x 5 root wheel 512 May 24 15:11 5.6 drwxr-xr-x 5 root wheel 512 Feb 25 19:59 7.0 drwxr-xr-x 2 root wheel 512 May 24 15:11 CVS -rw-r--r-- 1 root wheel 196 Mar 21 2015 Makefile -rw-r--r-- 1 root wheel 13759 Feb 1 18:53 Makefile.inc drwxr-xr-x 3 root wheel 1024 Feb 25 19:59 files drwxr-xr-x 3 root wheel 512 Feb 25 19:59 pecl -rw-r--r-- 1 root wheel 2102 Feb 1 18:53 php.port.mk
Esto es una gran ventaja cuando se requiere instalar una aplicación ligada a una versión específica de PHP, ya que se puede contar con la versión necesaria mantenida por la comunidad. De esta forma se evita preocuparse por compilar manualmente una versión no disponible desde paquete, verificando sus dependencias y requisitos.
Sin embargo, en este artículo voy a explicar brevemente cómo trabajar con paquetes, lo cual es recomendable para la mayoría de los casos, y puede ahorrar gran tiempo de compilación y mantenimiento.
Los paquetes proveen binarios pre-compilados para las aplicaciones más utilizadas. OpenBSD provee un conjunto de herramientas específicas para gestionar los paquetes:
pkg_add
: utilitario para instalar y actualizar paquetes.pkg_delete
: utilitario para eliminar (desinstalar) paquetes instalados.pkg_info
: utilitario para mostrar información de paquetes.pkg_create
: utilitario para crear paquetes.
Estas herramientas se encargan de resolver y mantener dependencias , al igual que el sistema de ports.
El primer paso para comenzar a trabajar con paquetes consiste en seleccionar un mirror desde donde descargarlos. Para ello simplemente se debe configurar la variable de entorno PKG_PATH
. Por ejemplo:
# export PKG_PATH="http://openbsd.c3sl.ufpr.br/pub/OpenBSD/5.9/packages/amd64/"
Se observa que, una vez elegido el mirror, la ruta al directorio de paquetes depende de la versión de OpenBSD y la arquitectura. En este caso se ha seleccionado el mirror http://openbsd.c3sl.ufpr.br/pub/OpenBSD/
, y el sistema corre la versión 5.9
para la arquitectura amd64
, por ende, la ruta resultante es: http://openbsd.c3sl.ufpr.br/pub/OpenBSD/5.9/packages/amd64/
.
Cabe destacar que no todos los mirrors poseen todos los paquetes para todas las versiones y todas las arquitecturas. Además, ciertas aplicaciones pueden no funcionar en todas las arquitecturas o no pueden ser distribuidas a través de mirrors por cuestiones de licenciamiento, por lo que no estarán disponibles en ningún mirror.
Para que esta variable de entorno sea persistente, es necesario exportarla dentro del archivo /etc/profile
:
# Mirror para descargar paquetes export PKG_PATH="http://openbsd.c3sl.ufpr.br/pub/OpenBSD/5.9/packages/amd64/"
Buscar paquetes
Para buscar paquetes, simplemente se puede examinar el directorio de paquetes en el mirror desde un navegador. También, si se ha instalado el árbol de ports, es posible buscar el port correspondiente con el comando make search key=
.
Instalar paquetes
Para instalar paquetes, utilizar la herramienta pkg_add
. Por ejemplo, si se desea instalar el servidor Apache (provisto por el port apache-httpd
), ejecutar:
# pkg_add apache-httpd
Inmediatamente es posible iniciar el servicio:
# /etc/rc.d/apache2 start apache2(ok) # ps aux | grep http root 3034 0.0 0.7 1740 3500 ?? Ss 12:25PM 0:00.01 /usr/local/sbin/httpd2 www 5084 0.0 0.5 1608 2352 ?? I 12:25PM 0:00.01 /usr/local/sbin/httpd2 www 11040 0.0 0.5 1608 2312 ?? S 12:25PM 0:00.01 /usr/local/sbin/httpd2 www 22741 0.0 0.5 1608 2368 ?? I 12:25PM 0:00.01 /usr/local/sbin/httpd2 www 15875 0.0 0.5 1608 2340 ?? I 12:25PM 0:00.01 /usr/local/sbin/httpd2 www 21669 0.0 0.5 1608 2348 ?? I 12:25PM 0:00.01 /usr/local/sbin/httpd2
Se observa que el proceso de instalación a través de paquetes es tan simple y trivial como en los sistemas Debian y derivados, sólo basta con conocer el nombre del paquete o port.
Este utilitario posee una gran cantidad de opciones y parámetros, por lo que se recomienda revisar cuidadosamente su página de manual:
# man pkg_add
Obtener información de paquetes
Para listar todos los paquetes instalados, simplemente se debe ejecutar:
# pkg_info
Si en cambio se desea obtener información de un paquete específico, esté instalado o no, simplemente agregar su nombre como parámetro:
# pkg_info apache-httpd Information for inst:apache-httpd-2.4.18p1 Comment: apache HTTP server Description: The Apache HTTP Server Project is an effort to develop and maintain an open-source HTTP server for modern operating systems including UNIX and Windows NT. The goal of this project is to provide a secure, efficient and extensible server that provides HTTP services in sync with the current HTTP standards. Flavors: ldap - Enable LDAP authentication and caching support Maintainer: The OpenBSD ports mailing-list <ports@openbsd.org> WWW: http://httpd.apache.org/
Actualizar un paquete
Para actualizar también se utiliza pkg_add
, pero con le parámetro -u
(update):
# pkg_add -u apache-httpd
Desinstalar un paquete
Para desinstalar un paquete, utilizar pkg_delete
:
# pkg_delete apache-httpd
Referencias
man pkg_add man pkg_delete man pkg_info man pkg_create man make
OpenBSD FAQ - Packages and Ports - Package Management