# FreeBSD Ports

La colección de Ports de FreeBSD es un sistema de gestión de paquetes para el sistema operativo FreeBSD, que proporciona una forma fácil y consistente de instalar paquetes de software. En febrero de 2020 había más de 38.487 ports disponibles en la colección. También ha sido adoptado por NetBSD como base de su sistema pkgsrc.
La colección de ports utiliza makefiles organizados en una jerarquía de directorios para que el software pueda ser construido, instalado y desinstalado con el comando 'make'. Cuando se instala una aplicación, se requiere muy poca (o ninguna) intervención del usuario después de emitir un comando de inicio como 'make install' o 'make install clean' en el directorio de ports de la aplicación deseada.

## Instalando desde la fuente

La colección de puertos utiliza Makefiles organizados en una jerarquía de directorios para que el software pueda construirse, instalarse y desinstalarse con el comando make. Al instalar una aplicación, se requiere muy poca (o ninguna) intervención del usuario después de emitir un comando de inicio como make install o make install clean en el directorio ports de la aplicación deseada. En la mayoría de los casos, el software se descarga automáticamente de Internet, se parcha y configura si es necesario, luego se compila, instala y registra en la base de datos de paquetes. Si el nuevo port ha necesitado dependencias de otras aplicaciones o bibliotecas, estas se instalan previamente de forma automática.
La mayoría de los ports ya están configurados con opciones por defecto que, en general, se han considerado apropiadas para la mayoría de los usuarios. Sin embargo, estas opciones de configuración (llamadas knobs, en español, perillas) a veces se pueden cambiar antes de la instalación usando el comando make config, que abre una interfaz basada en texto que permite al usuario seleccionar las opciones deseadas.
Históricamente, cada port (o paquete de software) ha sido mantenido por un mantenedor de port individual que es responsable de garantizar la vigencia del port y brindar soporte general. Hoy en día, muchos ports son mantenidos por grupos de trabajo especiales o subproyectos, cada uno con una lista de correo dedicada (por ejemplo, kde@FreeBSD.org, java@FreeBSD.org, etc.), mientras que los ports no mantenidos se asignan al grupo genérico ports@FreeBSD.org. En general, cualquiera puede convertirse en un mantenedor de ports al contribuir con su software favorito a la colección. También se puede optar por mantener un puerto existente sin un mantenedor activo.

## Paquetes

Los puertos precompilados (binarios) se denominan paquetes. Se puede crear un paquete desde el puerto correspondiente con el comando make package.
Los paquetes prediseñados también están disponibles para su descarga desde los repositorios de paquetes alojados en FreeBSD. Un usuario puede instalar un paquete pasando el nombre del paquete al comando pkg install. Esto descarga el paquete apropiado para la versión de lanzamiento de FreeBSD instalada, luego instala la aplicación, incluidas las dependencias de software que pueda tener. De forma predeterminada, los paquetes se descargan del Repositorio principal de paquetes de FreeBSD (pkg.freebsd.org), pero si hay algún problema después de actualizar los paquetes, la versión anterior de los paquetes no se puede instalar porque el repositorio niega los índices de las subcarpetas. En este caso, el usuario debe actualizar la versión del sistema operativo a la última versión e instalar los paquetes más recientes.
FreeBSD mantiene una granja de compilación llamada pointyhat cluster, en el que se compilan todos los paquetes para todas las arquitecturas admitidas y los principales lanzamientos. Los registros de compilación y los errores conocidos para todos los puertos integrados en paquetes a través del clúster pointyhat están disponibles en una base de datos y los registros de compilaciones semanales también están disponibles a través de archivos de listas de correo.
Estos paquetes precompilados se separan en categorías según las arquitecturas para las que están disponibles. Los paquetes se separan aún más en varios directorios de "lanzamiento", uno para cada lanzamiento de producción actual creada a partir de la colección de puertos y enviada con el lanzamiento. Estos directorios de versiones de producción nunca se actualizan.
Están también hay directoriosstable y current para varias ramas de versiones principales. Estos se actualizan más o menos semanalmente. En la mayoría de los casos, un paquete creado para una versión anterior de FreeBSD se puede instalar y usar en un sistema más nuevo sin dificultad, ya que la compatibilidad binaria con versiones anteriores está habilitada por defecto.
Un sistema de empaquetado para paquetes binarios llamado pkg ha reemplazado el sistema de gestión de paquetes en FreeBSD 10.

## Historia

Jordan Hubbard comprometió su port make macros al repositorio CVS de FreeBSD el 21 de agosto de 1994.​ Su paquete de instalación de paquetes Makefile había sido comprometido un año antes (26 de agosto de 1993).​ Hubbard mantuvo al principio el marco de puertos principales junto con Satoshi Asami durante varios años. Más tarde se formó el Ports Management Team para manejar esta tarea.
La colección de ports pkgsrc de NetBSD y de OpenBSD tiene sus raíces en FreeBSD.

## DPorts

Desde su lanzamiento 3.6, el proyecto DragonFly BSD utiliza FreeBSD Ports como base para su propia colección de ports, llamada DPorts. John Marino del proyecto DragonFly BSD creó el repositorio DeltaPorts: Una colección de parches y archivos que se superponen y modifican los FreeBSD ports para generar DPorts.