# Slapt-get

library(ggplot2)
ggplot(data.frame(x = c(-6, 0)), aes(x)) +
stat_function(fun = function(x) (x+3)^2) +
geom_point(aes(-3, 0), size = 3, color = "red") +
geom_vline(xintercept = -3, linetype = "dashed") +
labs(x = "x", y = "y", title = "Gráfica de y = (x+3)^2")
slapt-get es un sistema basado en APT para el manejo de paquetes en la distribución Slackware GNU/Linux. Fue escrito por Jason Woodward en el año 2003 y trata de proporcionar las mismas capacidades que la versión original de Debian GNU/Linux del software apt-get
slapt-get contiene una biblioteca en C llamada libslapt-get que permite la creación de otros entornos de interfaz gráfica, como gslapt.
Puede utilizarse o está incluido de serie en varias distribuciones basadas en Slackware como Slamd64, SLAX, GoblinX, Vector Linux, Wolvix
La última versión es la 0.10.1 de diciembre de 2008

## Características

Las características más notables del sistema son:
* Utiliza herramientas nativas de Slackware como installpkg o updatepkg.
* Soporta múltiples fuentes de paquetes.
* Almacena datos temporales en la caché relativos a paquetes y los actualiza desde las fuentes.
* Soporta protocolo HTTP, HTTPS, FTP, FTPS, file:// y más (a través de libcurl).
* Continúa con descargas interrumpidas y revisa integridad de los ficheros descargados mediante sumas MD5.
* Muestra paquetes disponibles e instalados según los datos de la caché.
* Soporta búsqueda de paquetes mediante estándares POSIX y expresiones regulares.
* Manejo de paquetes por nombre y/o por versión específica.
* Obtener y aplicar actualizaciones de software.
* Actualizar de una versión de Slackware a otra mediante pasos muy simples.
* Muestra descripciones de paquetes como tamaño, dependencias, conflictos, etc.
* Excluye paquetes de las actualizaciones según nombre o expresiones regulares.
* Motor de transacción para instalar, actualizar y eliminación, reportando información de lo que se hará y asegurando así la integridad de la ejecución de la acción.
* Algoritmo de comparación de versiones para evitar cambios a versiones anteriores de un paquete.
* Soporte de internacionalización mediante GNU gettext, soportando más de 20 lenguajes.
* Verificación exhaustiva de integridad de los datos, como escribir cambios sólo si todas las fuentes fueron descargadas correctamente y así también sólo descargando fuentes que hayan cambiado desde la última vez que se actualizaron.

## Dependencias

slapt-get no proporciona soporte para la resolución de dependencias de paquetes incluidos en la distribución de Slackware. Sin embargo, proporciona un marco de trabajo para la resolución de dependencias de paquetes compatibles con Slackware, parecida al estilo de personalización manual de APT. Varias fuentes de paquetes y distribuciones basadas en Slackware hacen uso extensivo de esta característica.
Agregar información para la resolución de dependencias no requiere la modificación del paquete en sí mismo, sino que puede ser incluida en el archivo PACKAGES.TXT, provisto por Patrick Volkerding y similar al archivo Packages.gz de Debian. Hay varios códigos disponibles para la creación dinámica de un archivo PACKAGES.TXT a partir de un grupo de paquetes. Al formato oficial del archivo se le agregan unas cuántas líneas por paquete que luego son procesadas por slapt-get al momento de descargar las fuentes. Es bastante común que los paquetes de terceras personas incluyan estas líneas para la posterior extracción en el archivo PACKAGES.TXT. La inclusión de esta información en el archivo no inhibe a pkgtool de instalar los paquetes satisfactoriamente, sino que es silenciosamente ignorada y descartada tras la instalación.
Existen otros métodos para agregar información de dependencias a los paquetes sin modificar el paquete provisto por Volkerding.

## Fuentes de paquetes

slapt-get trabaja con repositorios oficiales de Slackware así como repositorios de terceros, revisando los archivos PACKAGES.TXT y CHECKSUMS.md5 que le proporcionan a la herramienta el nombre, tamaño (tanto comprimido como descomprimidos), versión y sumas MD5 de los paquetes. Estos archivos pueden ser extendidos, como se dijo en la sección anterior, agregando dependencias, conflictos y sugerencias además de repositorios alternativos para un paquete.