Administrando paquetes con Pacman [Arch Linux].
Administrando paquetes con Pacman [Arch Linux].
- ¿Que es Pacman?.
- Que son los ¿Mirrors?.
- ¿Que son los Repositorios?.
- ¿Que es AUR?.
- Uso de comandos pacman para la gestion de paquetes.
- Agregando repositorio BlackArch en Arch.
1. ¿Que es Pacman?.
Pacman es el gestor de paquetes de Arch linux por excelencia, por estandar y oficial.
El objetivo principal del mismo es facilitar las instalaciones de las aplicaciones según nuestras necesidades en el sistema Arch.
Pacman mantiene el sistema actualizado sincronizándose con la lista de paquetes del servidor principal. Esto permite que con un simple comando se proceda la descarga, instalación del programa y resolución de dependencias necesarias si es que asi lo requiere para que el software funcione correctamente.
2. Que son los ¿Mirrors?.
Antes de pasar a los comandos utiles para gestionar pacman, hay que entender algunos conceptos que rodean a la gestion de paquetes en el sistema.
Cuando hablamos de mirrors estamos refiriendonos a servidores “Espejo” por su traducción en ingles, que almacenan los paquetes y metadatos necesarios para gestionar el software. Cuando buscamos y descargarmos un paquete por ejemplo de office, nuestra pc se conecta a un servidor principal o ‘mirror’ que contiene los repositorios oficiales. Debido a la alta demanda y trafico de cientos de personas queriendo instalar distintos paquetes al mismo tiempo, un solo servidor principal no daría abasto a cubrir todo. Es por eso que se usan multiples servidores de ‘espejo’ distribuidos en distintas partes del mundo, para una mejor respuesta a nivel conexion y una liberacion de carga del servidor principal.
En el siguiente link dejo El Pacman Mirrorlist Generator, el cual con solo elegir el país que queramos nos generara el output necesario para configurar la lista de servidores donde iremos a buscar los paquetes al momento de instalación.
El archivo a editar en cuestión se encuentra ubicado en /etc/pacman.d/mirrorlist
Link → https://archlinux.org/mirrorlist/
Lo optimo de configurar un sistema para utilizar mirrors especificos es que permite que Pacman seleccione automaticamente el servidor que seteamos de cercania, haciendo mas rapido el proceso de descarga de paquetes.
Nota: Me ha pasado que he tenido que configurar servidores de Brasil, y no siendo mi pais de origen, pero porque los servidores nacionales estaban o saturados o el ancho de banda de los servidores de Brasil los duplicaba y los tiempos de respuestas eran menores.
3. ¿Que son los Repositorios?.
Los repositorios son una colección de software y paquetes, los cuales generalmente estos son mantenidos por la comunidad de usuarios de Arch y por sus desarrolladores permitiéndonos instalarlos en nuestro sistema.
Recordemos que Arch es Rolling Release, es un modelo continuo de actualización, cada paquete en los repositorios se suelen actualizar constantemente y eliminando la versión anterior.
Existen varios tipos de repositorios en donde iremos a buscar software con fuentes confiables, estables y seguras, detallo los mas destacados:
Repositorio Core → En este repos encontraremos todo lo relacionado a paquetes esenciales para el funcionamiento básico del sistema, drivers, kernel, y demas utilidades para el mismo. Como bien dice la Wiki de Arch:
(Core tiene requisitos de calidad bastante estrictos. Los desarrolladores/usuarios deben aprobar las actualizaciones antes de que se acepten las actualizaciones de paquetes. Para paquetes con poco uso, una exposición razonable es suficiente: informar a las personas sobre la actualización, solicitar aprobaciones, mantener testing hasta una semana dependiendo de la gravedad del cambio, falta de informes de errores pendientes, junto con la aprobación implícita del mantenedor del paquete.)
- Repositorio Extra → Acá encontraremos paquetes adicionales que probablemente no sean esenciales para el funcionamiento básico del sistema pero que amplifican la productividad del mismo. Entornos de escritorios, gestores de ventanas, navegadores webs, bibliotecas, componentes de software, etc.
- Repositorio Community → Como bien dice la Wiki oficial (community contiene paquetes que han sido adoptados por Usuarios de confianza, generalmente del Repositorio de usuarios de Arch (AUR). Algunos de estos paquetes eventualmente pueden hacer la transición a los repositorios core o extra cuando los desarrolladores los consideran cruciales para la distribución.)
- Repositorio Multilib → Encontraremos bibliotecas y paquetes necesarios para ejecutar aplicaciones de 32 bits en 64 bits. Para activar Multilib tendríamos que editar y descomentarlo en
/etc/pacman.conf.
4. ¿Que es AUR?.
AUR (Arch User Repository) es un repositorio de software mantenido por la comunidad de usuarios de Arch Contiene una amplia variedad de paquetes que no están disponibles en los repositorios oficiales.
Los paquetes en AUR son mantenidos por los propios usuarios y pueden ser software nuevo, versiones actualizadas de aplicaciones existentes, software experimental o paquetes personalizados. Los usuarios pueden buscar, descargar e instalar paquetes desde AUR utilizando herramientas de gestión de paquetes como “yay” o “paru“. AUR proporciona una forma adicional de acceder a software y ampliar las opciones de personalización en Arch Linux.
5. Uso de comandos pacman para la gestión de paquetes.
Bueno vamos a la acción y veamos algunos comandos destacados para el correcto uso de Pacman en Arch que nos van a permitir administrar de forma fácil y eficaz los paquetes instalados.
# Verificar los paquetes que tenemos instalados en nuestro sistema.
1 | pacman -Q |
# Obtener descripción de los paquetes instalados.
Si al comando anterior le agregamos una ‘s’ nos daría info de la descripcion de esos paquetes. Podemos pasarle un nombre de paquete en especifico ejemplo:
1 | pacman -Qs nmap |
# Obtener datos detallados de paquetes instalados.
Al igual que antes podemos especificar el nombre de un paquete instalado y obtener su informacion detallada:
![[img/pacman/image.png)
# Verificando cuantos archivos instalo un paquete y listar cuales son.
Con el siguiente comando podremos verificar cuantos archivos instalo en nuestro sistema un paquete determinado.
1 | pacman -Qk nmap |
Y con el siguiente conocer cuales son y sus rutas (se utiliza head para filtrar a los primeros 10 resultados debido a que la lista era muy larga y no viene al caso):
1 | pacman -Ql nmap |
# Verificar a que paquete pertenece un determinado archivo.
Bien ahora supongamos que estamos en dudas, y siguiendo con el ejemplo de arriba, queremos verificar a quien pertenece el archivo “nping” ubicado en la ruta /usr/bin/nping. Podemos comprobarlo de este modo:
1 | pacman -Qo |
Bien ahora teniendo como base lo anterior, procedemos a ver como instalar paquetes y gestionar info sobre los mismos.
Preparamos la base de datos de paquetes.
Con el siguiente comando comprobamos si la base de datos está actualizada, si no lo está, vamos a sincronizar con cada uno de los repositorios y actualizarlos. Si esta actualizado no va a hacer mas nada.
1 | sudo pacman -Sy |
Verificamos si hay actualizaciones
Con este comando vamos a comprobar si hay actualizaciones en algunos de los paquetes que tengamos instalados en el sistema:
1 | sudo pacman -Syu |
Instalando paquetes simples o multiples.
Pacman nos permite instalar un paquete solo o varios de una sola vez. (Para proceder con la instalacion es necesario de sudo o root).
1 | sudo pacman -S <paquete_1> <paquete_2> |
Como vemos a continuación en este caso intento instalar dos paquetes, pingus y pingcastle. Siempre tiene que haber un espacio entre cada paquete a instalar. Vemos como Pacman se encarga de verificar si requiere dependencias para cada uno de esos paquetes y si es así instalarlas ademas de revisar por conflictos con la instalación de dichos paquetes.
Por ultimo nos informa del tamaño a descargar y de lo que ocupara instalado.
# Descargar paquetes pero NO instalarlos.
Pocas veces, pero posibles, puede suceder que simplemente queramos descargar paquetes pero no instalarlos en el momento. Esto se hace de la siguiente forma:
1 | sudo pacman -Sw <paquete> |
Siguiendo con el ejemplo del paquete pingus, en este caso descargaremos el paquete
De este modo solo bajaremos el paquete. Y según el archivo pacman.conf, nos dice que estos archivos seran descargados en la ruta /var/cache/pacman/pkg.
En el siguiente ejemplo instalaremos el paquete.
Instalando paquetes desde archivos.
Si nos dirijimos a la ruta anteriormente mencionada, /var/cache/pacman/pkg , veremos cientos de paquetes en este cache que pacman ha gestionado previamente para instalar. En principio vemos que las extensiones son .tar.zst y .sig. El primero es el archivo del paquete en cuestion y los segundos son archivos de firma digital el cual sirven para verificar la autenticidad e integridad de los paquetes de software que descargamos.
Buscamos el paquete que habiamos descargado previamente y no instalado.
Podemos alistarlo facilmente y luego con grep destacarlo y posteriormente procedemos a instalarlo con el siguiente comando:
1 | sudo pacman -U <paquete.tar.zst> |
Vemos el ejemplo:
Instalar un paquete desde una URL.
Del mismo modo podemos instalar con el flag -U paquetes desde una URL como en el siguiente caso:
Desinstalando paquetes.
Del siguiente modo le decimos a pacman que borre un determinado paquete del sistemas, esto no borra las dependencias instaladas:
1 | sudo pacman -R nmap |
Si a este mismo comando le agregamos el flag “s” eliminariamos tambien todas las depdencias que no son necesarias para otros paquetes instalados.
sudo pacman -Rs nmap
Buscar paquetes en la base de datos para luego instalarlos.
En caso de que tengamos dudas de el nombre del paquete que buscamos o si ese paquete es lo que realmente estamos buscando, podremos realizar una simple búsqueda del siguiente modo:
1 | pacman -Ss nmap |
Pero de este modo tiende a buscarlo tanto en el nombre del paquete como en la descripcion y eso puede obtener muchos resultados tediosos o desprolijos en cantidad.
Con la siguiente expresion regular se podria simplificar mucho, tal cual lo dice en la Wiki.
1 | pacman -Ss '^nmap' |
# Borrar el cache de pacman.
Generalmente luego de varias instalaciones y desinstalaciones, pacman no termina por eliminar los archivos que se encuentran en el cache:
- /var/cache/pacman/pkg
Con el pasar del tiempo, esta carpeta comienza a ganar peso y no esta de mas hacer un clean up de los mismos con el siguiente comando:
1 | sudo pacman -Sc |
6. – Agregando repositorio BlackArch en Arch.
BlackArch es una distribucion Linux de Penetration Testing. Por ende tiene un repositorio colmado de herramientas de hacking y auditorias de seguridad. Si te dedicas al pentesting, no puede faltarte en tu sistema Arch.
Para instalarlo hacemos los siguientes pasos, muy fácil:
- 1 - Bajamos el archivo strap.sh.
1 | curl -O [https://blackarch.org/strap.sh](https://blackarch.org/strap.sh) |
- 2 - Verificamos siempre el hash sum para comprobar que no fue alterado. Deberia devolvernos un OK!
1 | echo 5ea40d49ecd14c2e024deecf90605426db97ea0c strap.sh | sha1sum -c |
- 3 - Le damos permisos de ejecución:
1 | chmod +x strap.sh |
- 4 - Lo ejecutamos con sudo:
1 | sudo ./strap.sh |
Listo, ahora para listar todas las herramientas disponibles:
1 | sudo pacman -Sgg | grep blackarch | cut -d' ' -f2 | sort -u |
Veran que son muchisimas. Instalen las que le guste o necesiten. Hasta aca el paper, espero haya sido de ayuda.
Saludos.
shkz.