Hay ocasiones en las que una versión determinada de un port tiene algún bug o no nos interesa tenerla instalada por alguna razón, para poder instalar un commit en concreto del port debemos utilizar la herramienta portdowngrade, con esta seremos capaces de ver el histórico de commits y revertir a uno de ellos.
En este ejemplo vamos a downgradear Nginx, primero iniciamos la configuración de este para comprobar que versión nos instalaría:
cd /usr/ports/www/nginx
make config
nginx-1.18.0_12,2
Presionamos Ctrl+c ya que no vamos a instalar esta versión.
Instalamos portdowngrade:
make
make install
make clean
Podemos buscar por el nombre genérico para mas tarde concretar el nombre del port exactamente:
portdowngrade nginx
modsecurity3-nginx-1.0.1_1 -> security/modsecurity3-nginx
py37-certbot-nginx-1.4.0 -> security/py-certbot-nginx
py27-certbot-nginx-1.4.0 -> security/py-certbot-nginx
nginx-1.18.0_12,2 -> www/nginx
nginx-devel-1.19.0_4 -> www/nginx-devel
nginx-full-1.18.0_4,2 -> www/nginx-full
nginx-lite-1.18.0_12,2 -> www/nginx-lite
nginx-naxsi-1.18.0_12,2 -> www/nginx-naxsi
nginx-prometheus-exporter-0.6.0 -> www/nginx-prometheus-exporter
nginx-ultimate-bad-bot-blocker-4.2020.03.2005_1 -> www/nginx-ultimate-bad-bot-blocker
nginx-vts-exporter-0.10.3 -> www/nginx-vts-exporter
rubygem-passenger-nginx-6.0.5 -> www/rubygem-passenger
Choose a port origin (directory) from the list
above, and then run portdowngrade category/portcd /usr/ports/www/nginx
Consultamos los commits del port empleando el nombre exacto de este:
NOTA: Podemos consultar la misma información de los commits en https://www.freshports.org/www/nginx
Elegimos el commit al que nos interese revertir y ejecutamos:
portdowngrade www/nginx COMMITID
Si elegimos este del 2019:
r517054 | tobik | 2019-11-08 13:53:37 +0100 (Fri, 08 Nov 2019) | 2 lines
Nos habrá creado un directorio con las fuentes de ese commit, volvemos a configurar Nginx:
make config
Y efectivamente nos configura la versión 1.16.1_4,2:
nginx-1.16.1_4,2
Esto puede parecer la panacea pero solo debe utilizarse de forma temporal ya que si volvemos atrás mucho tiempo pueden haber incompatibilidades con el resto del sistema y además estaremos corriendo una versión del software que no recibe parches de ningún tipo desde esa fecha.