Pacman (Español)

From ArchWiki

Jump to: navigation, search


i18n
Česky
Deutsch
English
Español
Français
Italiano
Nederlands
Polski
Português de Portugal
Romanian
Русский
简体中文
한국어

Contents

Descripción

El manejador de paquetes Pacman es una de las grandes ventajas de Arch Linux. Este combina un formato de paquetes binarios simple con un sistema de compilación fácil de usar (ver makepkg y ABS). Pacman hace posible fácilmente manejar y personalizar paquetes, ya sea que vengan de los repositorios oficiales de Arch o que sean creaciones propias de los usuarios. El sistema de repositorios permite a los usuarios compilar y mantener sus propios repositorios de paquetes, lo que alienta el crecimiento de la comunidad y la contribución (ver AUR).

Pacman puede mantener un sistema actualizado sincronizando listas de paquetes con el servidor principal, haciendo muy sencillo de mantener para el administrador de sistemas. Este modelo cliente/servidor también te permite bajar/instalar paquetes con un simple comando, completo con todas las dependiencias requeridas (similar al apt-get de Debian).

Pacman esta escrito en leguaje de programación C, por tanto es rápido, liviano, y muy ágil. Utiliza el formato de paquetes .tar.gz, lo que mejora su velocidad; los ficheros tar comprimidos con Gzip, aunque ligeramente más grandes, se descomprimen mucho más rápido que su contraparte Bzip, por lo que generalmente su instalación es más expedita.

NB: Pacman fue escrito y es mantenido por Judd Vinet, el creador de Arch Linux. Sin embargo es utilizado como el manejador de paquetes de otras distribuciones también, como FrugalWare (también ve [[1]]), Rubix, UfficioZero (en italiano, basado en Ubuntu!!), y por supuesto derivados de Arch Linux como Archie y AEGIS.

Uso

Pacman es un manejador de paquetes binarios y de código fuente. Combina varias ideas de Gentoo, Debian y Slackware para formar uno de los manejadores de paquetes más completo y fácil de usar disponible para Linux. Pacman puede bajar, instalar y actualizar paquetes ya sea de repositorios locales o remotos, con un manejo completo de dependencias, mediante herramientas fáciles de entender para crear tus propios paquetes.

Si quieres realmente profundizar en el tema, puedes leer las páginas de man. Lo de abajo será un pequeño ejemplo de las operaciones que puedes realizar.

Instalando Paquetes

Antes de instalar y actualizar paquetes, es una buena idea sincronizar la base de datos local con los repositorios remotos.

pacman -Sy

...o su equivalente:

pacman --sync --refresh

Para instalar o actualizar un paquete individual o una lista de paquetes (incluyendo dependencias) utiliza el siguiente comando:

pacman -S paquete1 paquete2

Algunas veces hay más versiones de un paquete en diferentes repositorios (p.ej. extra y testing). Puedes especificar cual quieres instalar:

pacman -S extra/paquete
pacman -S testing/paquete

También puedes combinar parámetros, por ejemplo este comando sincroniza la base de datos e instla un paquete:

pacman -Sy paquete

Borrando Paquetes

Para borrar un paquete individual, dejando todas sus dependencias instaladas:

pacman -R paquete

Para borrar el paquete y todas las dependencias que no son utilizadas por otro paquete instalado:

pacman -Rs paquete

Por defecto, pacman respalda los ficheros de configuración al remover una aplicación; en su lugar los guarda añadiéndoles la extensión *.pacsave. Si lo que quieres es borrar los ficheros de configuración al remover el correspondiente paquete (este comportamiento es llamado purgar en los sistemas basados en Debian) puedes usar:

pacman -Rn paquete 

Por supuesto, esto puede ser extendido con -s para borrar las dependencias innecesarias. Entonces, el comando que realmente remueve un paquete, su configuración, y todas las dependecias que ya no son necesarias es:

pacman -Rsn paquete  

Nota! Pacman no removera los ficheros de configuración creados después de ser instalado el paquete. Esto quiere decir que todo lo relacionado con el paquete que se encuentre en tu carpeta personal, debera ser borrado manualmente.

Actualizar el Sistema

Pacman puede actualizar todos los paquetes del sistema con un comando. Esto puede tardar un rato, dependiendo de qué tan actualizado esté tu sistema.

pacman -Su

De todas maneras, la mejor opción es sincronizar las bases de datos Y actualizar tu sistema de una solo vez con lo siguiente:

pacman -Syu

De hecho es una práctica recomendable el correr el comando descrito arriba más o menos seguido.

Por favor lea Package Management FAQs (en inglés) para mayor información de como actualizar y mantener su sistema con pacman

Obteniendo Información de la Base de Datos

Pacman puede buscar paquetes en la base de datos, puedes escribir parte del nombre del paquete o alguna palabra que corresponda a su descripción utilizando el siguiente comando:

pacman -Ss paquete

Para buscar solamente dentro de los paquetes instalados:

pacman -Qs paquete

Una vez que ya conozcas el nombre del paquete que estás buscando, puedes obtener algo de información sobre el paquete.

pacman -Si paquete
pacman -Qi paquete

Para una lista de archivos contenidos o instalados por un paquete:

pacman -Ql paquete

También puedes consultar a la base de datos para saber a qué paquete pertenece un archivo de tu sistema:

pacman -Qo /ruta/a/archivo

Para listar los paquetes que ya no son más requeridos como dependencias (Huérfanos):

pacman -Qdt

Para remover todos lo huérfanos: (Revisar y confirmar la sálida de pacman -Qdt primero!)

pacman -Rsn $(pacman -Qdtq)

Para más consultas de Pacman a la base de datos local o de los paquetes instalados usando la opción -Q. Ver:

pacman -Q --help

...y por más consultas a la base de datos completa o 'sync' con la opción -S. Ver:

pacman -S --help

Para más detalles revisar la página man de pacman(8).

Buscar Simultáneamente Repositorios y Paquetes Instalados

Puedes utilizar el siguiente script de bash para hacer el equivalente de llamar simultáneamente pacman -Ss foo y pacman -Qs foo, para ver cuál de los paquetes está instalado en tu sistema. Los que estén en tu sistema quedarán marcados con un asterisco. (No traduje el script).

#!/bin/bash

if [ -z "$1" ]; then
echo "usage: pacsearch [regex pattern]"
echo "usage: pacsearch -h|--help"
exit 0
fi

if [ "$1" = "-h" -o "$1" = "--help" ]; then
echo "usage: pacsearch [regex pattern]"
echo "	Like pacman -Ss [regex pattern] but installed packages are flagged with a *"
echo "usage: pacsearch -h|--help"
echo "	Prints this message. No other options allowed"
exit 0
fi

firstchar=`echo "$1" | cut -c1`
if [ $firstchar = "-" ]; then
echo "Sorry, $1 is not a valid option!"
echo "usage: pacsearch [regex pattern]"
echo "usage: pacsearch -h|--help"
exit 0
fi

instpkg=`pacman -Qs $1 | egrep '^[^ ]' | sed 's|^local/||' | sed 's/ .\+$//'` 
syncdump=`mktemp`
pacman -Ss $1 > $syncdump

for pkg in $instpkg; do
	sed -i "s@^\(.\+/$pkg\) @\*\1 @" $syncdump
done

cat $syncdump

Guarda este script en alguno de tus paths (por ejemplo ~/bin) y llámalo pacsearch. Hazlo ejecutable con

chmod a+x pacsearch

Ahora por ejemplo si escribes

pacsearch ^qt

La salida es parecida a lo siguiente:

extra/qca 1.0-1
   QT Cryptography Architecture
extra/qsynth 0.2.5-1
   Qt GUI for fluidsynth
*extra/qt 3.3.5-8
   The QT gui toolkit.
extra/qt-doc 3.3.5-1
   The QT gui toolkit documentation.
extra/qtella 0.6.5-1
   Qtella is a Gnutella client for Linux using QT
extra/qtiplot 0.7.7-1
   Data analysis and scientific plotting - free clone of Origin
extra/qtparted 0.4.5-3
   A Partition Magic clone written in C++ using the Qt toolkit
extra/qwt 4.2.0-3
   Qt Widgets for Technical Applications
extra/qwtplot3d 0.2.6-2
   Qt/OpenGL-based C++ programming library containing 3d-widgets

Así, en este caso sabrías que ninguno de los paquetes de arriba está instalado en tu sistema más que el paquete qt.

NB1: existe una petición para integrar la funcionalidad arriba descrita en pacman, así que el 'truquito' del script de bash puede volverse obsoleto con alguna versión nueva de pacman.

NB2: puedes modificar el script de bash arriba descrito utilizando lo que se dice en este wiki para que los paquetes instalados se marquen de un color diferente en la salida.

Otros Usos

Pacman es una herramienta muy completa para manejo de paquetes, abajo se incluyen algunas otras funcionalidades.

  • Bajar un paquete sin instalarlo:
pacman -Sw paquete
  • Instalar un paquete local (no de un repositorio):
pacman -A /ruta/al/paquete/paquete-version.pkg.tar.gz
  • Borrar los paquetes de versiones viejas:
pacman -Sc
  • Borrar todo el caché de pacman (/var/cache/pacman/pkg):
pacman -Scc

Para una lista más detallada de los parámetros que puedes utilizar lee pacman --help o man pacman.

Configuración

La configuración de pacman se encuentra en /etc/pacman.conf. Tiene dos secciones principales este archivo:

Opciones Generales

Las opciones generales se encuentran bajo la sección [options]. Aquí puedes especificar qué archivos no deben de ser actualizados. Esto es útil para archivos importantes del sistema. La sintaxis es muy simple:

NoUpgrade   = etc/passwd etc/group etc/shadow etc/sudoers
NoUpgrade   = etc/fstab etc/raidtab etc/ld.so.conf
NoUpgrade   = etc/rc.conf etc/rc.local
NoUpgrade   = etc/modprobe.conf etc/modules.conf
NoUpgrade   = etc/lilo.conf boot/grub/menu.lst

Ignorar paquetes

Otra opción útil es IgnorePkg. Por ejemplo si modificaste o parchaste un paquete específico, agregarlo a la línea IgnorePkg va a evitar que pacman lo actualice cuando una versión nueva de ese paquete esté disponible. Sin embargo pacman te va a avisar de la versión más nueva disponible para que tú decidas si quieres actualizar tu versión personalizada. Esta opción también es útil para paquetes grandes como openoffice-base, si quieres evitar bajar y actualizar todo cada que haya una actualización menor en el repositorio. Como pacman siempre te avisa sobre la versión más nueva, puedes decidir cuándo actualizar.

La sintaxis es:

IgnorePkg=kernel26

Ignorar grupos enteros de paquetes

Al igual que con los paquetes, se puede decir a Pacman que ignore todo un grupo (Como por ejemplo todo GNOME o todo Xorg, etc.). De ésta forma, Pacman ignorará todos los paquetes que conforman dicho grupo.

La sintaxis es igual que con IgnorePkg:

IgnoreGroup=gnome

Repositorios

En esta sección defines qué repositorios utilizarás. Pueden ser definidos directamente ahí o puedes incluirlos desde otro archivo. Lo último es útil para los repositorios oficiales que tienen muchos mirrors. Por ejemplo, todos ellos están en /etc/pacman.d/mirrorlist.

[repository-name]
Server = ftp://server.net/repo
[current]
# Add your preferred servers here, they will be used first
Include = /etc/pacman.d/current

Para más información lee man pacman.

Links Relacionados

Boost Pacman
Colored Pacman output
Downgrade packages
Redownloading all installed packages
ArchLinux User-community Repository (AUR)
Local repository HOW-TO
Custom local repository with ABS and gensync
Howto Upgrade via Home Network
Pacman GUI Frontends

Personal tools