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


Tal vez pueda interesarte


Compartí este artículo