# Ports

Ports (Ports collection o Port trees, del idioma inglés: Colección de Puertos o Árboles de Puertos, respectivamente) son un conjunto de ficheros del tipo make (herramienta de generación o automatización de código) y parches, de los sistemas operativos BSD: FreeBSD, NetBSD y OpenBSD. Por otra parte, es un método simple de instalación de software o creación de paquetes binarios. Son usualmente la base de los sistemas de gestión de paquetes, con ports gestionando la creación de paquetes y herramientas adicionales gestionado eliminación de paquetes, actualizaciones y otras acciones cómo gestión de dependencias entre paquetes.
Aparte de los sistemas BSD, algunas distribuciones Linux (GNU/Linux), han incluido una infraestructura similar, incluyendo el sistema Portage de Gentoo, Pacman en Arch Linux y pkgutils en CRUX.

## FreeBSD Ports

Jordan Hubbard comprometió su port make macros al repositorio CVS de FreeBSD el 21 de agosto de 1994. Su suite de instalación de paquetes Makefile se había comprometido un año antes (26 de agosto de 1993). Hubbard mantuvo al principio el marco de los puertos centrales junto con Satoshi Asami durante varios años. Más tarde se formó el Ports Management Team para manejar esta tarea.

## pkgsrc de NetBSD

El sistema de ports en NetBSD, pkgsrc, se caracteriza por el hecho de que es portable y puede ser usado en otros sistemas operativos distintos a NetBSD, incluyendo otros BSD, GNU/Linux y Unix. En agosto de 1997 se crea pkgsrc basándose en el sistema de ports ya existente en FreeBSD. Este sistema lleva una frecuencia de actualizaciones cuatrimestral, y así en julio de 2006 ya contenía unos 6000 ports. Con su versión 1.4 release, DragonFlyBSD anunció que adoptaría pkgsrc como su sistema de gestión de paquetes oficial.

## Ports en OpenBSD

A diferencia de los ports en FreeBSD, en los cuales se basó originalmente OpenBSD, el sistema de ports en OpenBSD está orientado a ser usado para crear el producto final: los paquetes. Al instalar un port, en primer lugar se crea un paquete y a continuación lo instala. Los paquetes están formados por un fichero makefile, ficheros de texto con descripciones y mensajes de instalación (README, INSTALL, etc.), todos los parches necesitados para que el programa funcione en el sistema OpenBSD y una lista de ficheros con aquellos que deben ser incluidos en el paquete.
El árbol usa un conjunto de ficheros makefile estándar, algunos de los cuales están compartidos en el árbol de ficheros fuente, para proporcionar el núcleo de su funcionalidad. Esta estructura compartida incluye muchas funciones de utilidad para los desarrolladores de ports y medios para realizar ports de manera sencilla. Como medida de seguridad o ayuda a la hora de desarrollar nuevos ports, la construcción de los mismos puede realizarse usando systrace con una política por defecto.
A fines de octubre de 2007, el desarrollador de OpenBSD, Nikolay Sturm, anunció que el árbol de ports stable debería considerarse sin mantenimiento debido a la falta de recursos. Esto efectivamente obligó a los usuarios a ejecutar el árbol ports/base current para continuar con las actualizaciones de seguridad.. En 2009, se decidió revivir el árbol de ports stable bajo la supervisión de Robert Nagy y Jasper Lievisse Adriaanse.
Hay tres sitios web no oficiales con una lista de puertos y paquetes de OpenBSD:
* OpenPorts.se, originalmente anunciado como ports.openbsd.nu en 2006, era un sitio web personalizado que realiza su propio análisis de la estructura del árbol de puertos y las actualizaciones, y tiene la funcionalidad de realizar un seguimiento de los cambios de un determinado port, que tiene el inconveniente de no admitir parte de la lógica Makefile más complicada y, por lo tanto, pierde alrededor del 15 % de los paquetes que requieren un conocimiento complejo de la estructura del árbol de puertos y el uso de las herramientas oficiales.
* openports.pl
* ports.su, anunciado en febrero de 2013 y está basado en la base de datos oficial de sqlports, teniendo así una colección completa de todos los paquetes y sabores que están disponibles para la plataforma amd64. Al estar basado en las herramientas oficiales, las categorías "virtuales" (no primarias) están fácilmente disponibles, al igual que la información sobre las dependencias de biblioteca, compilación y tiempo de ejecución. La fuente del sitio web se basa en gran medida en ports-readmes, y está disponible en GitHub.