En los sistemas FreeBSD más antiguos, Portsnap no se incluye automáticamente, pero se puede instalar desde el puerto sysutils/portsnap usando el comando:
# pkg_add -r portsnap
Portsnap primero busca y actualiza instantáneas comprimidas del árbol de puertos de FreeBSD almacenadas en /var/db/portsnap/ (en /usr/local/portsnap/ si Portsnap está instalado desde FreeBSD Ports Collection) de forma predeterminada, y luego solo extrae y actualiza el archivo sin comprimir. árbol de puertos en vivo en /usr/ports.
El comportamiento y la operación de Portsnap están controlados por el archivo de configuración portsnap.conf ubicado en /etc (en /usr/local/etc/ si Portsnap se instala desde FreeBSD Ports Collection, y el archivo de configuración no se genera automáticamente cuando se instala recientemente, en su lugar encontrará portsnap.conf.sample, simplemente cópielo como portsnap.conf). En general, el archivo de configuración predeterminado hará su trabajo.
En la línea de comandos, se admiten las siguientes opciones, aunque la mayoría de las veces no es necesario utilizarlas, algunas se pueden configurar en el propio archivo de configuración:
-d workdir:almacena archivos de trabajo (por ejemplo, actualizaciones descargadas) en workdir. (predeterminado:/var/db/portsnap, o como se indica en el archivo de configuración)
-f conffile:lee la configuración desde conffile. (predeterminado:/etc/portsnap.conf)
-I :Para el comando de actualización, actualice los archivos INDEX, pero no el resto del árbol de puertos.
-k CLAVE:espera una clave pública con el hash SHA256 dado. (predeterminado:leer el valor del archivo de configuración)
-p portsdir:al extraer o actualizar una instantánea sin comprimir, opere en el directorio portsdir. (predeterminado:/usr/ports/, o como se indica en el archivo de configuración).
-s servidor:Obtener archivos del servidor o grupo de servidores especificado. (predeterminado:portsnap.FreeBSD.org, o como se indica en el archivo de configuración).
ruta:solo para el comando de extracción, opere solo en partes del árbol de puertos que comiencen con la ruta. (por ejemplo, portsnap sysutils/port extraería sysutils/portsman, sysutils/portsnap, sysutils/portupgrade, etc.)
La sinopsis de la línea de comandos de Portsnap es:
portsnap [-I] [-d directorio de trabajo] [-f archivo de configuración] [-k CLAVE] [-p directorio de puertos] [-s servidor] comando … [ruta]
Uso de Portsnap
- Cree un directorio vacío /usr/ports si no existe.
# mkdir /usr/ports
- Obtenga y descargue una instantánea comprimida de la colección de puertos en /var/db/portsnap (o cualquier otra ubicación especificada en el archivo de configuración). Se necesita conexión a Internet en esta etapa) y actualice la instantánea existente.
# portsnap fetch
- Si está ejecutando Portsnap por primera vez (incluso si ya se ha creado o completado un árbol de puertos, permitir que Portsnap establezca una línea de base a partir de la cual portsnap pueda determinar qué partes del árbol de puertos deben actualizarse) o /usr /ports no se ha completado, extraiga la instantánea y reemplace los archivos y directorios existentes, y establezca el árbol de puertos mantenido por Portsnap en /usr/ports:
# portsnap extract
Este paso se puede omitir si solo está actualizando el árbol de puertos.
- Si ya tiene un /usr/ports completo y solo está actualizando, ejecute el siguiente comando en su lugar:
# portsnap update
Nota:para actualizar el árbol de puertos de FreeBSD, los pasos 1 y 3 se pueden combinar en un solo comando:portsnap fetch update (no es compatible con la versión anterior de Portsnap).
Ejecución de Portsnap como trabajo cron
La recuperación de portsnap no podrá ejecutarse desde un trabajo cron para evitar la carga de un aumento repentino de la solicitud de descarga a los servidores de Portsnap. En su lugar, existe un comando especial cron de portsnap, que espera y duerme por una duración aleatoria de hasta 3600 segundos antes de obtener actualizaciones, como si se especificara el comando de obtención.
Para ejecutar portsnap automáticamente con el trabajo cron, simplemente agregue la línea en /etc/crontab (la línea establece la hora a las 3 AM todos los días, puede elegir su propia hora):
0 3 * * * root /usr/sbin/portsnap cron
Esto garantizará que la instantánea de FreeBSD de la recopilación de puertos esté siempre actualizada y se pueda extraer rápidamente a /usr/ports.
Nota:Ejecutando actualización de portsnap from cron no se recomienda, ya que puede causar problemas si se instala o actualiza un puerto en el momento en que se ejecuta el trabajo cron. Portsnap actualizará o eliminará los archivos que utiliza la compilación del puerto. Sin embargo, ejecutar portsnap -I update es posible actualizar los archivos de índice de puertos y se puede usar junto con portversion para identificar el software instalado que está desactualizado.
Para actualizar la instantánea comprimida de los puertos y los archivos INDEX en /usr/ports/, y enviar un correo electrónico si alguno de los puertos instalados no está actualizado, use la siguiente línea en /etc/crontab:
0 3 * * * root portsnap -I cron update && pkg_version -vIL=
Nota:la versión anterior de portsnap no admite la lista de varios comandos (por ejemplo, actualización de cron) en la misma invocación de portsnap. Si la línea anterior falla, intente reemplazar portsnap -I cron update con portsnap cron &&portsnap -I update .