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


Tal vez pueda interesarte


Compartí este artículo