Pacman (Español)
From ArchWiki
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