Cada vez que se compila un nuevo port en FreeBSD (ya sea ejecutando directamente make
en el directorio del port, o a través de portmaster
) es probable que sea necesario seleccionar qué opciones de configuración se desean utilizar para el mismo. Estas opciones de configuración se presentan a través del clásico menú con fondo azul:

Estas opciones quedan guardadas en una base de datos. De esta forma, la siguiente vez que se compile el mismo port, no será necesario volver a indicarlas. Gracias a ello se ahorra mucho tiempo cuando se actualiza un sistema, y es información valiosa respecto a la configuración del sistema. Por ende es muy probable que se desee resguardar al momento de hacer un backup de un servidor FreeBSD.
Es posible obtener las opciones con las cuales ha sido compilado un port ejecutando make showconfig
en el directorio del port. Por ejemplo:
root@hal9000:~ # whereis krdc krdc: /usr/local/bin/krdc /usr/ports/net/krdc root@hal9000:~ # cd /usr/ports/net/krdc/ root@hal9000:/usr/ports/net/krdc # make showconfig ===> The following configuration options are available for krdc-4.14.3_1: FREERDP=on: Remote Desktop support via FreeRDP ===> Use 'make config' to modify these settings
De acuerdo a las opciones de configuración del port krdc
, ha sido compilado con soporte para FreeRDP.
Ahora bien, FreeBSD guarda las opciones de configuración para todos los ports en archivos options
dentro del directorio /var/db/ports/
. Este directorio posee un subdirectorio para cada port, donde la jerarquía del árbol de ports se indica en el nombre del subdirectorio utilizando guiones bajos ('_') en reemplazo de las barras directas ('/'):
emi@hal9000:~ % ll -th /var/db/ports | head total 1620 drwxr-xr-x 2 root wheel 512B Oct 7 07:51 multimedia_mlt/ drwxr-xr-x 2 root wheel 512B Oct 7 07:51 graphics_frei0r-plugins/ drwxr-xr-x 2 root wheel 512B Oct 7 07:51 lang_rust/ drwxr-xr-x 2 root wheel 512B Oct 6 14:45 databases_leveldb/ drwxr-xr-x 2 root wheel 512B Oct 6 14:44 audio_opusfile/ drwxr-xr-x 2 root wheel 512B Oct 6 14:44 devel_llvm37/ drwxr-xr-x 2 root wheel 512B Oct 6 14:44 multimedia_libva/ drwxr-xr-x 2 root wheel 512B Oct 6 14:43 lang_python34/ drwxr-xr-x 2 root wheel 512B Oct 6 14:43 lang_ruby22/
En este sentido, el directorio /var/db/ports/
no replica la jerarquía de directorios del árbol de ports, sino que utiliza un único nivel de directorios indicando la jerarquía o ruta en el árbol en el nombre de cada subdirectorio.
Por ejemplo, el subdirectorio multimedia_mlt/
almacena las opciones de configuración del port multimedia/mlt
que se encuentra en el directorio /usr/ports/multimedia/mlt/
.
Para cada port entonces, existe un archivo options
donde se almacenan las opciones que se listan al ejecutar make showconfig
:
emi@hal9000:~ % cat /var/db/ports/net_krdc/options # This file is auto-generated by 'make config'. # Options for krdc-4.14.2 _OPTIONS_READ=krdc-4.14.2 _FILE_COMPLETE_OPTIONS_LIST=FREERDP OPTIONS_FILE_SET+=FREERDP
Otro ejemplo:
emi@hal9000:~ % whereis nano nano: /usr/local/bin/nano /usr/local/man/man1/nano.1.gz /usr/ports/editors/nano emi@hal9000:~ % cd /usr/ports/editors/nano/ emi@hal9000:/usr/ports/editors/nano % make showconfig ===> The following configuration options are available for nano-2.7.0: DOCS=on: Build and/or install documentation EXAMPLES=on: Build and/or install examples NLS=on: Native Language Support ===> Use 'make config' to modify these settings
emi@hal9000:/usr/ports/editors/nano % cat /var/db/ports/editors_nano/options # This file is auto-generated by 'make config'. # Options for nano-2.4.1 _OPTIONS_READ=nano-2.4.1 _FILE_COMPLETE_OPTIONS_LIST=DOCS EXAMPLES NLS OPTIONS_FILE_SET+=DOCS OPTIONS_FILE_SET+=EXAMPLES OPTIONS_FILE_SET+=NLS
Así, si se desea hacer una copia de seguridad (backup) de todas las opciones de configuración de todos los ports, simplemente se debe resguardar el directorio /var/db/ports/
completo.
De yapa, si se desea reconfigurar un port, es posible borrar la configuración ejecutando make rmconfig
. O también es posible ejecutar make config
. Si se trabaja con portmaster
, se debe agregar la opción --force-config
.
Referencias
FreeBSD Handbook - 4.5. Using the Ports Collection