Esta pagina se ve mejor con JavaScript habilitado

Downgradear un port en FreeBSD

 ·  🎃 kr0m

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:

portsnap fetch update
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:

cd /usr/ports/ports-mgmt/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:

portdowngrade www/nginx

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:

cd
portdowngrade www/nginx COMMITID

Si elegimos este del 2019:

r517054 | tobik | 2019-11-08 13:53:37 +0100 (Fri, 08 Nov 2019) | 2 lines
portdowngrade www/nginx r517054

Nos habrá creado un directorio con las fuentes de ese commit, volvemos a configurar Nginx:

cd 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.

Si te ha gustado el artículo puedes invitarme a un RedBull aquí