Instalar wget de GNU Linux en macOS

Instalar en macOS High Sierra, desde el código fuente, openssl y la herramienta wget de GNU Linux. Utilizar wget para descargar a nuestro ordenador una copia estática de un sitio web remoto.

Nota previa: para compilar e instalar aplicaciones desde su código fuente en macOS es necesario disponer de las Command Line Tools (CLT) correspondientes a la versión del sistema. Si tienes Xcode instalado, ya las tienes. En caso contrario puedes instalarlas de 2 maneras diferentes:

  • Abre Terminal y teclea uno de los comandos que están incluidos en esas herramientas, por ejemplo gcc, y se abrirá una ventana de alerta con 3 opciones: instalar las CLT, instalar Xcode completo (no es necesario) o no instalar por ahora.
  • Descarga directa desde la web de Apple, elige la versión de las CLT correspondiente a tu versión de macOS.

Instalar wget compilando el código fuente

En primer lugar hay que instalar la versión más reciente de openssl que en el momento de escribir este artículo es openssl-1.1.1f. Se descarga con curl y se instala con los comandos habituales. Openssl es necesario si wget tiene que acceder a sitios seguros.

curl -O https://www.openssl.org/source/openssl-1.1.1f.tar.gz

./configure
make
sudo make install

En segundo lugar hay que instalar la versión más reciente de wget que en el momento de escribir este artículo es 1.20.3. Se descarga con curl y se instala con los comandos habituales (configure > make > make install) pero con unas anotaciones que se detallan a continuación.

curl -O http://ftp.gnu.org/gnu/wget/wget-latest.tar.gz

Antes de empezar el proceso de instalación conviene darle a configure valores iniciales exportando 2 variables de entorno, desde línea de comandos, para que configure sepa dónde buscar las librerías necesarias para el soporte SSL.

export OPENSSL_CFLAGS="-I/usr/local/include"
export OPENSSL_LIBS="-L/usr/local/lib -lssl -lcrypto -lz"

El comando configure se ejecuta con soporte para SSL:

./configure --with-ssl=openssl
make
sudo make install

Para comprobar si está bien instalada:

wget http://ftp.gnu.org/gnu/wget/wget-latest.tar.gz
Resolving ftp.gnu.org... 209.51.188.20
Connecting to ftp.gnu.org|209.51.188.20|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 4489249 (4.3M) [application/x-gzip]
Saving to: 'wget-latest.tar.gz'

wget-latest.tar.gz      100%[==========>]   4.28M   936KB/s    in 4.7s    

'wget-latest.tar.gz.1' saved [4489249/4489249]

Al terminar puedes borrar los paquetes descargados y las carpetas descomprimidas.

Error con certificados al acceder a sitios seguros

Si al acceder con wget a un sitio seguro se interrumpe al empezar con este error

ERROR: cannot verify sitio.es's certificate
 Unable to locally verify the issuer's authority.
To connect to perez987.es insecurely, use `--no-check-certificate'

es porque wget no encuentra ningún certificado válido. Hay 2 formas de solucionarlo:

  • Acceder de modo inseguro añadiendo a wget el parámetro –no-check-certificate
  • Descargar el paquete cURL desde http://curl.haxx.se/download > descomprimirlo > ir a la carpeta descomprimida y entrar en la carpeta lib > ejecutar el script ./mk-ca-bundle.pl. Al terminar obtienes un archivo ca-bundle.crt que hay que copiar a la carpeta /usr/share/curl (si no existe hay que crearla) y decirle a wget que busque ahí el certificado, esto se consigue generando un archivo .wgetrc y escribiendo en él esta ruta con el comando
echo CA_CERTIFICATE=/usr/share/curl/ca-bundle.crt >> ~/.wgetrc

Nota: si el archivo /usr/share/curl/ca-bundle.crt ya existe, renómbralo antes de copiar el nuevo.

Descargar un sitio entero con wget

wget --mirror --convert-links --adjust-extension --page-requisites --no-parent --domains sitio.es --timestamping --html-extension --restrict-file-names=windows https://sitio.es

Esto crea una copia del sitio web en la carpeta actual. Las opciones son:

-m –mirror: entre otras cosas, hace la descarga recursiva.
-k –convert-links: convertir los enlaces para que funcionen en modo local, off-line.
-E –adjust-extension: añade extensiones a los archivos (html or css) dependiendo de su contenido.
-p –page-requisites: obtener todos los elementos que componen la página (imágenes, CSS, etc.).
-np –no-parent: no seguir los enlaces más arriba del directorio.
-N –timestamping: sólo descarga archivos que sean más nuevos que el equivalente local.
-D –domains sitio.es: no seguir los enlaces fuera de sitio.es.
–html-extension: guardar archivos con la extensión .html.
–restrict-file-names=windows: modificar nombres de archivos para que funcionen correctamente en Windows.

Nota: En macOS el equivalente de wget de Linux es curl -O. Es apropiado para descargar elementos sueltos de un sitio web pero no para hacer un espejo del sitio web como wget.

Deja un comentario