Latinoamérica
de.novatoanovato@gmail.com

Gestor de paquetes Pacman

Gestor de paquetes Pacman

Gestor de paquetes pacman

Contenido

¿Qué es pacman?

Pacman es el gestor de paquetes emblema de la distribución GNU/Linux ArchLinux y también utilizado por la mayoría de las distribuciones que de Archlinux derivan, tales como; Manjaro, Chakra, ArchLabs, entre otras. Fue desarrollado por el creador de esta distribución, Judd Vinet y su lanzamiento inicial tuvo fecha el 25 de febrero de 2002.

Este potente y ágil gestor de paquetes es capaz de resolver las dependencias, descargar e instalar automáticamente todos los paquetes o grupos de paquetes que sean necesarios y que estén disponibles en los repositorios para su acceso, gestionar actualizaciones y eliminar aquellos que no estaríamos necesitando.

Conceptos que hacen a la gestión de paquetes

Conozcamos algunos términos que necesitaremos comprender para el posterior desarrollo de pacman como gestor de paquetes.

Repositorios de software

Conocemos por repositorios de software a un sitio centralizado (servidor dedicado) donde se almacenan y mantienen programas, actualizaciones de programas y actualizaciones de sistema.

Cada distribución, así como ArchLinux, tiene sus repositorios de software en los que están almacenados los programas y actualizaciones desarrollados para quedar a disposición de estas y también de sus derivadas.

En nuestros sistemas contamos con una lista de repositorios disponibles que podemos modificar añadiendo o quitando mas tipos de repositorios (multimedia, seguridad, para desarrolladores, etc.), estos pueden ser oficiales o no oficiales de la distribución, y de proceder con su modificación se recomienda cuidado por cuestiones de seguridad.

Repositorios oficiales

Son los repositorios que contienen el software al que la distribución brinda soporte, tanto para descarga como para actualización. Muchas veces cuentan con un protocolo de revisión riguroso para asegurarse de que todos los paquetes que contienen se encuentran en estado óptimo y no representen riesgos de seguridad o estabilidad para el sistema.

Repositorios no oficiales

Los repositorios no oficiales, contienen el software que no es soportado directamente por la distribución. Por lo tanto carecen de los protocolos de revisión que se mencionamos anteriormente y, aunque contienen paquetería que puede sernos útiles para nuestro sistema, deben ser manejados con cuidado.

Dependencias

En el campo del software una dependencia es una aplicación o una librería requerida por otro programa para poder funcionar correctamente. Por ello se dice que dicho programa depende de tal aplicación o librería.

Configurando pacman

El «Estándar de Jerarquías FHS» es la norma que define la disposición de los directorios y su contenido en los sistemas operativos GNU/Linux. Sitúa los archivos de configuración tanto a nivel de componentes del sistema operativo, como de los programas y aplicaciones instalados durante su uso; en el directorio «/etc».

Por lo tanto, para acceder a su fichero configuración, hacemos uso de nuestro editor de texto favorito, en mi caso «nano» e indicamos la ruta (/etc) y el nombre del fichero de configuración de pacman ubicado en esa ruta (pacman.conf), en una sola linea de comando nano /etc/pacman.conf, cabe aclarar que necesitamos ser usuario #root o al menos tener permisos de superusuario (sudo) para poder modificar el fichero en cuestión.

Ejecutamos entonces:

Conociendo pacman.conf

Veamos paso a paso la estructura del archivo de configuración de nuestro gestor de paquetes. Para ello usaremos como guía el manual de «pacman.conf». Si, tiene su propio manual y esta bien documentado. Para llamarlo, ejecutamos la sintaxis que nos permite acceder a esta documentación:

También podemos acceder a este en linea (manual online).
Una vez dentro de pacman.conf y usando el manual como guía, veamos su estructura y una a una las opciones que nos permitirán configurar esta potente herramienta.

Opciones de configuración

Dividiremos el fichero de configuración en 3 grupos, dos grupos de opciones y uno de repositorios para hacer un analisis mas detallado de cada una las alternativas a configurar que pacman  posee.

Primer grupo de opciones

En la siguiente imagen se encuentra el primer grupo de opciones, veamos y definamos cada una de ellas…

RootDir = ruta / a / raíz

Establezca el directorio raíz predeterminado para que pacman se instale. Esta opción se usa si desea instalar un paquete en una partición montada temporal que es «propiedad» de otro sistema, o para una instalación chroot.

NOTA : Si la ruta de la base de datos o el archivo de registro no están especificados en la línea de comando o en pacman.conf, su ubicación predeterminada estará dentro de esta ruta de acceso raíz.

DBPath = ruta / a / db / dir

Reemplaza la ubicación predeterminada del directorio de la base de datos toplevel. Por defecto esta ruta es /var/lib/pacman/. La mayoría de los usuarios no necesitarán configurar esta opción.

NOTA : si se especifica, esta es una ruta absoluta y la ruta raíz no se antepone automáticamente.

CacheDir = ruta / a / caché / dir

Reemplaza la ubicación predeterminada del directorio caché de paquetes. Por defecto /var/cache/pacman/pkg/. Se pueden especificar múltiples directorios de caché, y se prueban en el orden en que están listados en este archivo de configuración. Si no se encuentra un archivo en ningún directorio de caché, se descargará al primer directorio de caché con acceso de escritura.

NOTA : esta es una ruta absoluta, la ruta raíz no se antepone automáticamente. Pacman en este directorio almacena los paquetes descargados y no elimina las versiones antiguas o desinstaladas automáticamente, mas adelante veremos como limpiarlo.

LogFile = / ruta / a / archivo

Reemplaza la ubicación predeterminada del archivo de registro de pacman. Que defecto es /var/log/pacman.log.

NOTA
: Esta es una ruta absoluta y el directorio raíz no está antepuesto. Al instalar un paquete, pacman mostrará sus dependencias opcionales sin registrarlas en este fichero.

GPGDir = ruta / a / gpg / dir

Anula la ubicación predeterminada del directorio que contiene los archivos de configuración para GnuPG. Por defecto ubicado en /etc/pacman.d/gnupg/. Este directorio debe contener dos archivos: pubring.gpgtrustdb.gpgpubring.gpgposee las claves públicas de todos los empaquetadores. trustdb.gpg contiene una llamada base de datos de confianza, que especifica que las claves son auténticas y confiables.

NOTA : esta es una ruta absoluta, la ruta raíz no se antepone automáticamente.

HookDir = ruta / a / gancho / dir

Agregue directorios para buscar ganchos alpm además del directorio de enlaces del sistema ( /usr/share/libalpm/hooks/). Este directorio se encuentra ubicado por defecto en /etc/pacman.d/hooks. Se pueden especificar múltiples directorios con ganchos en los directorios posteriores teniendo prioridad sobre los ganchos en los directorios anteriores.

NOTA : esta es una ruta absoluta, la ruta raíz no se antepone automáticamente. En otra oportunidad hablaremos sobre los ganchos alpm.

HoldPkg = paquete …

Si un usuario intenta – eliminar un paquete que figura en la lista HoldPkg, pacman solicitará confirmación antes de continuar. Se permiten patrones glob de estilo Shell.

XferCommand = / ruta / a / comando% u

Si se establece, se usará un programa externo para descargar todos los archivos remotos. Todas las instancias de %userán reemplazadas por la URL de descarga. Si está presente, las instancias de %oserán reemplazadas con el nombre del archivo local, más una extensión «.part», que permite que los programas como wget para hacer el archivo se reanuden correctamente.

NOTA : Esta opción es útil para los usuarios que experimentan problemas con el soporte HTTP/FTP incorporado, o necesitan la asistencia de proxy más avanzada que viene con utilidades como wget.

CleanMethod = KeepInstalled & | Mantenerse al día

Si se establece KeepInstalled que es el valor predeterminado, la opción -Sc del comando pacman limpiará los paquetes que ya no están instalados (no están presentes en la base de datos) y que quedaron como versiones antiguas de paquetes en el fichero/var/cache/pacman/pkg/ no presentes en ninguna base de datos de sincronización).

UseDelta [= ratio]

Descargar archivos delta en lugar de paquetes completos si es posible. Las actualizaciones Delta pueden ahorrar tiempo y tamaño al descargar y actualizar el sistema. Los paquetes que se descargan serán una especie de «diferencia» entre nuevo paquete, que se utilizará para parchear el paquete anterior en el nuevo paquete al final de la descarga.

NOTA : Requiere que el paquete xdelta3 sea instalado. Si se especifica una relación (por ej. 0.5), se usa como punto de corte para determinar si se deben usar deltas. Los valores permitidos son entre 0.02.0; los valores razonables están entre 0.20.91.0 No se recomienda usar un valor anterior . El valor predeterminado es 0.7si no se especifica.

Arquitectura = auto | i686 | x86_64 |

Si se establece, pacman solo permitirá la instalación de paquetes de la arquitectura dada (por ejemplo , i686 , x86_64 , etc.). El valor especial auto usará la arquitectura del sistema, proporcionada a través de «uname -m». Si no está configurado, no se realizan comprobaciones de arquitectura.

Segundo grupo de opciones

En la siguiente imagen se encuentra el segundo grupo de opciones, veamos y definamos cada una de ellas…

IgnorePkg = paquete …

Indica a pacman que ignore cualquier actualización de este paquete cuando realice una actualización de –sys . Se permiten patrones glob de estilo Shell.

IgnoreGroup = group …

Indica a pacman que ignore las actualizaciones de todos los paquetes de este grupo al realizar una actualización de –sys . Se permiten patrones glob de estilo Shell.

NoUpgrade = archivo …

Todos los archivos enumerados en la directiva NoUpgrade nunca serán tocados durante una instalación y/o actualización del paquetes, y los nuevos archivos se instalarán con una extensión .pacnew .

NoExtract = archivo …

Todos los archivos enumerados en la directiva NoExtract nunca se extraerán de un paquete en el sistema de archivos. Esto puede ser útil cuando no desea que se instale parte de un paquete.

UseSyslog

Registrar mensajes de acción a través de syslog (). Esto insertará entradas de registro en/var/log/messageso equivalentes.

Color

Habilita automáticamente los colores cuando la salida de pacman está solamente desde la terminal.

TotalDescarga

Al realizar la descarga, muestre la cantidad descargada, la tasa de descarga, la hora de llegada estimada y el porcentaje completado de toda la lista de descargas en lugar del porcentaje de cada objetivo de descarga individual. La barra de progreso todavía se basa únicamente en la descarga del archivo actual. Esta opción no funcionará si se usa XferCommand.

CheckSpace

Realiza una comprobación aproximada del espacio de disco disponible adecuado antes de instalar los paquetes.

VerbosePkgLists

Muestra el nombre, la versión y el tamaño de los paquetes de destino formateados como una tabla para las operaciones de actualización, sincronización y eliminación.

ILoveCandy

Esta opción no viene por defecto, pero si la agregamos obtendremos el efecto de pacman en los indicadores de cargar.

Repositorios de software

Y por ultimo tenemos los repositorios de software disponibles.

 

[extra]

Este depósito se encuentra en .../extra/os/ desde su mirror favorito.

Contiene todos los paquetes que no se ajustan a los requisitos para estar en [core]. Por ejemplo: Xorg, gestores de ventanas, navegadores Web, reproductores multimedia, herramientas para trabajar con lenguajes como Python y Ruby, y mucho otros.

[community]

Este depósito se encuentra en .../community/os/ con su mirror favorito.

Contiene los paquetes provenientes del repositorio Arch User Repository que obtivieron los votos suficientes para ser adoptadas por un Usuario de Confianza.

[multilib]

Este depósito se encuentra en .../multilib/os/ desde su mirror favorito.

Contiene el software de 32 bits y las bibliotecas que se pueden utilizar para ejecutar y desarrollar aplicaciones de 32 bits en instalaciones de 64 bits.

[testing]

Advertencia: Tenga cuidado al activar el repositorio [testing]. Su sistema puede volverse inestable después de realizar una actualización. Solo los usuarios experimentados que saben cómo hacer frente a una potencial rotura del sistema deben utilizarlo. Dicho esto…

Este depósito se encuentra en .../testing/os/ desde su mirror favorito.

Es especial porque contiene paquetes que son candidatos para los repositorios [core] o [extra].

Los nuevos paquetes entran en [testing] si:

  • Se sospecha que puedan romper algo con una actualización y necesitan ser probado en primer lugar.
  • Se requieren otros paquetes que ser reconstruido. En este caso, todos los paquetes que se necesitan para la recompilación se ponen en [testing] primero y cuando se completan todas las recompilaciones, se les traslada de nuevo a los otros repositorios.

Este es el único depósito que puede tener colisiones de nombres con cualquiera de los repositorios oficiales.

Importante : Si está habilitado, tiene que ser el primer repositorio listado en su archivo /etc/pacman.conf.

Tenga en cuenta que no se trata de un repositorio que contenga «la más reciente» de las versiones de los paquetes. Parte de su propósito es mantener actualizaciones de paquetes que tienen el potencial de causar la rotura del sistema, ya sea por ser parte del conjunto de paquetes contenidos en [core], o por ser crítico de otra manera.

NOTA : Si activa [testing], también debe activar [community-testing].

[community-testing]

Este repositorio es como el repositorio [testing] pero con los paquetes que son candidatos para el repositorio [community].

Si lo activa, también tiene que activar [testing].

[multilib-testing]

Este repositorio es como el repositorio [testing] pero con los paquetes que son candidatos para el repositorio [multilib].

Si lo activa, también tiene que activar [testing].

También podemos incorporar repositorios no oficiales dentro de este fichero, pero no es muy recomendable, salvo que se tenga conocimiento de los riesgos de seguridad que esto pueda llegar a implicar, tanto por la procedencia del repositorio como por la falta de soporte que tengan los paquetes contenidos en este.

Gestión de paquetes con pacman

La gestión de paquetes es una parte fundamental en las distribuciones GNU/Linux, aprender a utilizar todas las herramientas que un gestor posee para los procesos de instalación, actualización, eliminación y búsqueda se transforma en parte de el uso cotidiano de nuestras distribuciones.

Sintaxis

El gestor de paquetes pacman, se corresponde con la siguiente sintaxis…

sudo pacman [parámetros][opciones][paquetes]

Sincronizar repositorios

La versión 2.0 de pacman introdujo la posibilidad de sincronizar paquetes con un servidor principal, a través del uso de bases de datos local. Antes de esto, los paquetes tenían que ser instalados manualmente utilizando las operaciones –add y –upgrade.

La sincronización de la base de datos local de paquetes con la de los repositorios remotos se lleva a cabo bajo el siguiente comando:

sudo sudo pacman -Sy

En este caso, los repositorios están sincronizados con la base de datos local. Aun así, es posible forzar la sincrinozacion. Esta acción la podemos realizar bajo el siguiente comando:

sudo pacman -Syy

Actualización de sistema

Pacman puede actualizar todos los paquetes del sistema con un comando.
En este punto me detengo con dos consejos sobre la actualización que aportan a la estabilidad del sistema y podrían evitarnos eventualidades.

-Procurar no dejar pasar mucho tiempo sin actualizar. Hay quienes recomiendan períodos de no más de 30 días.
-Siempre que se necesite instalar un paquete, es recomendable sincronizar repositorios y hacer una actualización del sistema antes de ejecutar la instalación.

Sin más, el comando que nos permite actualizar el sistema es el siguiente:

sudo pacman -Su

En la imagen anterior podremos visualizar la lista de paquetes a actualizar y los distintos tamaños, en totales, que van a ocupar las etapas de la actualización. Pero…

¿es esta la manera correcta de actualizar nuestro sistema operativo?

Lo cierto es que no, ya que si previamente no sincronizamos la base de datos con la de los repositorios, esto podría ocasionarnos problemas de dependencias.

Para evitarnos este tipo de eventualidades, la manera correcta de actualizar nuestro sistema operativo es la siguiente:

sudo pacman -Syyu o en su defecto sudo pacman -Syu

Combinando la opción de sincronización con la de actualización.


En donde se lee:

  • -La sincronización (en este caso forzada) de la base de datos con los repositorios.
  • -La resolución de dependencias respecto de los paquetes que se van a actualizar.
  • -Los conflictos que podrían traer los paquetes que van a ser actualizados (en caso de tenerlos se nos lo imprimirá en pantalla).
  • -El total y la lista de paquetes que van a ser actualizados junto a su versión.
  • -Y los tamaños en total que van a ser parte de cada etapa de la actualización.

Estando de acuerdo con la información que se nos imprime en pantalla, podremos autorizar la actualización.

Instalación de paquetes

Instalación de paquetes desde los repositorios

Si conocemos el nombre del paquete que queremos instalar, ejecutamos la siguiente sintaxis de instalación:

sudo pacman -S "paquete"

Para el siguiente ejemplo instalaremos el paquete «nmap».

  • En primera lugar, pacman verifica si el paquete solicitado tiene las dependencias cumplidas para poder funcionar correctamente. En caso de no estar satisfechas, solicitará instalar las necesarias para su correcto funcionamiento.
  • En segundo lugar, buscará conflictos entre el o los paquetes que van a ser instalados. Notificará en caso de encontrar alguno.
  • En tercer lugar, nos enumerará y listará la cantidad de paquetes que van a ser instalados y sus versiones. Para este caso, «nmap-7.70-2».
  • En cuarto y último lugar, nos indicará el tamaño total de la instalación que se va a llevar a cabo.

Continuamos con la instalación con un simple «Enter».

Pero volvemos a preguntarnos:

¿Es esta la forma correcta de instalar un paquete?

Claro que no. Ya que no sabemos si está la base de datos sincronizada con los repositorios, ni si nuestro sistema se encuentra actualizado.

Lamento ser redundante con este tema, pero me gustaría que quede claro que tener estas cosas en cuenta siempre que trabajemos con paquetes hacen a la estabilidad de nuestro sistema y a su correcto funcionamiento.

Para ello, pacman nos permite hacer toda la petición en una sola linea de comandos haciendo uso de su sintaxis.

sudo pacman -Syyu nmap

 

Instalación de varios paquetes simultáneos desde repositorios

Pacman hace posible la instalación de varios paquetes de forma simultánea. Haciendo uso de su sintaxis, veamos un ejemplo de cómo llevar a cabo esta petición:

sudo pacman -Syyu paquete1 paquete2 paquete3...


Para este ejemplo utilicé tres paquetes conocidos: htop, nmap y vim.

Eliminar paquetes

El gestor de paquetes pacman, a través de sus sintaxis, sus parámetros y sus opciones nos permite llevar a cabo de forma completa la tarea de desinstalación de paquetes, dependencias y archivos de configuración según necesitemos.

Sintaxis

sudo pacman [parámetro] [opciones] [paquete]

Eliminar un paquete

Para eliminar un solo paquete, hacemos uso del parámetro «-R» e indicamos el nombre del paquete. Debe tenerse en cuenta que: haciendo uso de este método, las dependencias de las que el paquete en cuestión y los archivos de configuración del que este hacía uso, quedarán en nuestro sistema.
En algunos casos las dependencias pueden quedar en uso por otros paquetes, pero, en otros, estos suelen quedar sin satisfacer ninguna necesidad. A estos paquetes los denominamos «huérfanos».

sudo pacman -R nmap

Como observamos en la imagen, sólo tomará el paquete que le indicamos.

Eliminar un paquete y sus dependencias

En el caso de que queramos eliminar un paquete y sus dependencias, utilizaremos el parámetro «-R» y la opción «s», donde se identificarán las dependencias -en caso de haberlas- del paquete en cuestión y que no estén siendo utilizadas por ningún otro paquete o conjunto de paquetes.

sudo pacman -Rs vim

En la imagen se puede observar que pacman identificó una dependencia, que de eliminarse sólo el paquete, quedaría huérfana (vim-runtime).

Si solamente eliminásemos el paquete «vim», como en el caso anterior (eliminar un paquete), pacman no tendría en cuenta sus dependencias. Veamos…

sudo pacman -R vim

De esta forma la dependencia «vim-runtime» quedaría huérfana en nuestro sistema.

Eliminar un paquete, sus dependencias y las dependencias de las dependencias

Antes que nada, es importante hacer mención sobre el cuidado que se debe tener a la hora de trabajar con esta opción, ya que es recursiva y debe utilizarse entendiendo bien lo que se esta haciendo y con precaución, porque puede eliminar muchos paquetes potencialmente necesarios.

sudo pacman -Rsc qt4


Para este ejemplo intentamos eliminar el paquete qt4 bajo el parámetro -R opción s. Si lo intentamos hacer directamente, pacman no nos lo permitirá, ya que otros paquetes dependen de este para su correcto funcionamiento.

Pero si hacemos uso de la opción c junto a las anteriores, pacman, eliminará no sólo el paquete y sus dependencias, sino que también eliminará los paquetes que de este dependían, junto a sus dependencias recursivamente.

Eliminar un paquete y los archivos de configuración

Pacman, al momento de eliminar un paquete, guarda los archivos de configuración de estos al ser removidos y los renombra con la extensión «.pacsave». Para evitar que estos sean guardados, haremos uso de la opción n bajo el parámetro -R.

sudo pacman -Rn moc

El paquete «moc» es un reconocido reproductor de música por consola. Para personalizarlo debemos hacer uso de su archivo «confg». Al momento de eliminar este paquete, su archivo de configuración se guardaría bajo la extensión «.pacsave».

Esto es útil, ya que si volvemos a instalar el paquete, su archivo de configuración se restaurará tal cual lo teníamos configurado, ahorrándonos la tarea de tener que volver a configurarlo.

Si se da el caso donde no necesitemos guardar la configuración de los paquetes que eliminemos, esta opción sería conveniente y se complementaría muy bien con la opción s, donde eliminaría el paquete, las dependencias que queden huérfanas, y evitaría que se conserven los archivos de configuración.
Para obtener mas información sobre cada operación, recomendamos ejecutarla seguida de -help (por ejemplo: pacman -R --help) o acudir al manual de pacman man pacman.

Consultar base de datos de paquetes

Pacman nos permite consultar tanto la base de datos de los paquetes presentes en el sistema (de los paquetes instalados), como la bases de datos de los servidores remotos (de los paquetes alojados en servidores o repositorios) e incluso los archivos presentes en dichas bases de datos para conocer las subopciones respectivas de cada opción.

Consultar base de datos de paquetes en repositorios

A menudo necesitamos consultar si algún paquete se encuentra disponible en los repositorios antes de realizar una instalación. El parámetro que pacman nos brinda, para llevar a cabo este tipo de tareas es -S, pero pone a nuestra disposición una serie de opciones para hacer búsquedas un poco mas específicas. Analizaremos a continuación cada una de ellas.

Consultar por un paquete en la base de datos de los repositorios

Haciendo uso de la sintaxis de pacman y bajo el parámetro -S, que indica que vamos a trabajar con los repositorios, la opción que no permite buscar un paquete en su base de datos es s.

pacman -Ss paquete

Me gustaría señalar una cosa antes de comenzar, no es necesario realizar búsquedas, en cualquiera de las bases de datos, con permisos administrativos (sudo o como root), ya que no se esta realizando ninguna tarea administrativa sobre el sistema.

Para este ejemplo buscaremos el paquete nmap en nuestros repositorios:

pacman -Ss nmap

Como resultado observamos que el paquete nmap, se encuentra disponible en el repositorio extra (si quieres saber mas sobre los repositorios de Archlinux, ingresa aquí), y también nos imprime la versión disponible del paquete, en este caso seria la 7.70-2.

Por otro lado nos imprime como resultado que en repositorio community se encuentra disponible el paquete vulscan en su versión 2.0-3, que es un modulo que se complementa con nmap, siendo este un paquete sugerido y por lo tanto opcional.

En el caso de que el paquete este instalado nos sera indicado de la siguiente manera:

Consultar información detallada de un paquete en la base de datos de repositorios

Otras de las opciones de búsqueda que pacman nos ofrece, es la de obtener información precisa de un paquete accediendo a la base de datos de los repositorios. La opción que nos permite llevar a cabo este tipo de búsquedas es i, y responde a la siguiente sintaxis:

pacman -Si paquete

Para este ejemplo usaremos el paquete krita, que para quienes no lo conozcan, es un paquete muy completo de ilustración.

pacman -Si krita

La información es tan detallada que no vale la pena hacer una mención a cada campo, pero me gustaría resalta algo sobre el campo de dependencias opcionales:

Cada vez que voy a instalar un paquete me gusta buscar información detallada sobre el paquete que voy a instalar para saber que otros paquetes tiene como sugerencia, ya que algunas dependencias mencionadas en este campo podrían sernos útiles para aumentar las funcionalidades de un paquete. Estas pueden ser librerías, módulos, plugins, etc.

Como tarea para este apartado, me gustaría pedirte que realices una búsqueda de este tipo sobre algún paquete que utilices a menudo, que veas que paquetes te son sugeridos como opcionales y que busques información sobre la funciones que estos añadirían de ser instalados.

Consultar base de datos de paquetes instalados

Así como podemos consultar la base de datos de paquetes disponible en los repositorios, también podemos consultar la disponible en nuestro sistema, a esta la construyen los paquetes instalados y su metadata. Se encuentran disponible en la ruta /var/lib/pacman/sync, siendo estas base de datos la que se sincroniza con la de los repositorios para mantener nuestra paquetería actualizada.

El parámetro que pacman nos brinda para llevar a cabo este tipo de tareas es -Q, pero, igual que en el caso anterior, disponemos de una serie de opciones para hacer búsquedas específicas. Analizaremos a continuación cada una de ellas.

Consulta sobre un paquete en la base de datos local

Pacman nos permite consultar si un paquete esta instalado en nuestro sistema accediendo a la base de datos de paquetes local mediante el parámetro -Q y la opción s, imprimiendonos en pantalla el resultado de la búsqueda. Según su sintaxis ejecutamos:

pacman -Qs paquete

Para este ejemplo seguimos molestando a nmap

Como podemos observar, se nos indica que el paquete esta instalado (/local), el nombre del paquete, la versión y una breve descripción del mismo.

Consulta información detallada de un paquete en la base de datos de paquetes local

También es posible consultar información detallada de un paquete instalado, para poder acceder a esta, la opción disponible en pacman es la i, cuya sintaxis corresponde a:

pacman -Qi paquete

Veamos el siguiente ejemplo:

Del mismo modo que cuando realizamos una búsqueda de información detallada de un paquete disponible en los repositorios (pacman -Si paquete), estamos accediendo a la metadata del paquete, y al igual que en el caso anterior esta información es muy clara como para explicar cada campo.

Consulta información detallada de un paquete en la base de datos local, lista de archivos de respaldo y sus estados de modificación.

Cada ves que actualizamos nuestra paquetería, en la cache de pacman van quedando las versiones antiguas de los paquetes que fueron actualizados a modo de respaldo. Si quisiéramos que parte del detalle sea imprimirnos el campo con las versiones de respaldo del paquete en cuestión, pacman nos ofrece la opción ii, para ejecutar con el parámetro de búsqueda -Q, cuya sintaxis es la siguiente:

pacman -Qii paquete

Para este ejemplo usaremos el paquete nano, un simple pero muy útil editor de texto.

Como veremos, al final del detalle, observamos que el paquete nano cuenta con un archivo de respaldo…

Obtener una lista de los archivos instalados de un paquete

Cuando instalamos un paquetes, este se lo hace con una serie de archivos que hacen a su funcionamiento, como por ejemplo: sus archivos de configuración, librerías, plugins, etc y crean directorios que hacen a su uso, como por ejemplo el directorio cache. Pacman bajo el parámetro -Q, nos brinda la opción l, para listar todos los archivos y directorios  creados e instalados que pertenecen a un paquete.

Su sintaxis se presenta de la siguiente manera:

pacman -Ql paquete

En mi caso me suele ser muy útil cuando quiero localizar el directorio de un archivos de configuración o el directorio cache del paquete. Usaremos para este ejemplo el paquete pacman seguido de | less para ir viendo la lista paso a paso.

pacman -Ql pacman | less

Seleccione los archivos y directorios que pertenecen a pacman y que son mas reconocibles.  En este caso pacman.conf, archivos de configuración de pacman y por otro lado el directorio cache /var/cache/pacman/pkg/ donde se encuentran todos los paquetes descargados por pacman con sus respectivas rutas absolutas.

Listar todos los paquetes instalados en el sistema

Pacman nos ofrece la posibilidad de poder listar toda la paquetería de nuestro sistema, incluyendo las dependencias instaladas, para ello, solo es necesario ejecutar el parámetro -Q.

La sintaxis seria la siguiente:

pacman -Q | less

Añadiremos a la sintaxis | less cuya función es paginar texto en pantalla, debido a que la lista es larga y less nos permite verla con mayor comodidad.

Lo que el parámetro -Q esta haciendo, es mostrarnos la lista de paquetes que se encuentran en la base local completa.

 

 

Listar paquetes instalados en el sistema, sin dependencias

Otra de las opciones que pacman nos ofrece, es la de listar los paquetes que tenemos instalados en nuestro sistema, bajo el parámetro -Q donde disponemos de la opción e que nos filtrara solo los paquetes instalados, y no nos listara las dependencias que fueron instaladas con estos y que hacen a su funcionamiento.

Responde a la sintaxis:

pacman -Qe | less

Y agregamos | less para ver la lista paso a paso.

Como podemos ver, la lista se nos imprime en orden alfabético, el nombre de los paquetes instalados junto a la versión de cada paquete. Ya sea que estos fueran instalados desde los repositorios oficiales o no.

Listar paquetes instalados en el sistema de fuentes no oficiales

Del mismo modo en que podemos listar toda la paquetería instalada en nuestro sistema, es posible filtrar para que sean listados aquellos paquetes que fueron instalados de fuentes no oficiales. Para ello, pacman bajo el parámetro -Q, nos ofrece la opción m, que llevara a cabo esta tarea.

Responde a la sintaxis:

pacman -Qm

y nos imprimirá…

La lista presenta en orden alfabético los paquetes, junto a su correspondiente versiones, instalados de fuentes no oficiales, como por ejemplo: los repositorios AUR.

Limpieza de la cache de pacman

Como hemos ido viendo, en la cache de pacman ubicada en /var/cache/pacman/pkg van quedando las versiones antiguas de los paquetes que fuero instalados o actualizados. Esto, a lo largo del tiempo va acaparando espacio en nuestro disco y comienza a ser necesaria una limpieza.

Pacman nos brinda la posibilidad de realizar una limpieza de estos paquetes descargados, para ello haremos uso del parámetro -S y analizaremos las opciones con las que contamos para llevar a delante esta tarea.

A continuación les voy a mostrar el tamaño de la cache de pacman y como va evolucionando a medida que vamos haciendo una limpieza.

Antes de empezar, tenemos 3.6G en la cache de pacman

Limpiar versiones antiguas de paquetes la cache de pacman

Todos los paquetes que pacman descarga para posterior mente ser instalados y que descarga para ser actualizados van quedando almacenados en la cache de pacman, incluso las versiones antiguas de un mismo paquete..

Si listamos el contenido de la cache, vemos que tenemos varias versiones de un mismo paquete. Para poder eliminar las versiones antiguas y dejar la ultima (recomendable), pacman nos ofrece el la opción c que junto al parámetro -S llevaran a cabo esta tarea.

Esta tarea es necesaria llevarla a cabo con permisos de administrador y responde a la siguiente sintaxis

sudo pacman -Sc

Si volvemos a consultar el tamaño de la cache veremos…

… que ganamos poco mas de 2G de espacio en nuestro disco. y si listamos los paquetes de la cache…

… veremos que las versiones de paquetes antiguas fueron eliminadas.

Limpiar la cache de pacman completa

En este caso desde la wiki de archlinux nos advierten:

  • haga esto únicamente cuando esté seguro de que no se requieren versiones anteriores de paquetes, por ejemplo para un downgrade posterior. pacman -Sc solo deja disponibles las versiones de los paquetes que están actualmente instalados, las versiones anteriores tendrían que ser recuperadas por otros medios, como Arch Linux Archive;
  • es posible vaciar completamente la carpeta de la caché con pacman -Scc. Además de lo anterior, esto también impide la reinstalación de un paquete directamente desde la carpeta de la caché, requiriendo, en caso de necesidad, de una nueva descarga. Debe evitarse, a menos que se necesite recuperar inmediatamente espacio en el disco.

Como vimos en la advertencia, y a menos que sea completamente necesario recomiendo seguirla, podemos eliminar por completo el contenido de la memoria cache de pacman. La sintaxis que nos permite realizar esta tarea es la siguiente:

sudo pacman -Scc

Limpiar paquetes huérfanos

Pacman realiza muy bien la tarea de actualización, instalación y eliminación de paquetes con sus respectivas dependencias, pero algunas veces suele puede ocurrir que algunas dependencias queden incumplidas o huérfanas, raro en pacman pero suele pasar.
para listar las dependencias que no asisten a ningún paquete haremos uso del parámetro -Q, quien realizara la búsqueda haciendo uso de la base de datos local, y las opciones dt.

Según la sintaxis y sin permiso de administrados (porque solo vamos a buscar la presencia de dependencias incumplidas) ejecutamos:

pacman -Qdt

En mi caso no tengo paquetes o dependencias huérfanos, como mencione, pacman realiza muy bien la gestión de actualización, instalación y eliminación de paquetes, pero en el caso de haber, se nos listaran aquella que lo sean. Para poder eliminarlas usaremos la siguiente linea de comando con permisos administrativos:

sudo pacman -Rs $(pacman -Qdt)

Describamos la linea de comando: Se le esta pidiendo a pacman que elimine sudo pacman -Rs el contenido de una variable.  El contenido de la variable se crea con $(pacman -Qdt) que indica que se carguen los nombre de los paquetes huérfanos (que caso que existan). En mi caso me da error, dado a que la variable queda vacías al no haber dependencias para cargar y no encuentra que eliminar… En caso de que las encuentre procederá con una desinstalación normal.

Fuente: Wiki Archlinux
Espero se de utilidad.

Saludos, Cristian.

Puedes unírtenos en el grupo de Facebook GNU/Linux Para Todos
Grupo en Telegram Novato en Linux

 

2 comentarios

  1. Ángel dice:

    Fantástico; gracias

  2. Esteban dice:

    Hola,
    instalo Arch sin problema, pero pero cuando booteo no arranca, solo quiero en la laptop un solo sistema que seria Arch. Pero no he podido arrancar y he intentado con diferentes distros, Anarchy, bluestar, magpie, etc… pero sin éxito. en todas es lo mismo, se instala correctamente pero no bootea, me podrias ayudar

Deja un comentario

Tu dirección de correo electrónico no será publicada.