pacman (Español)/Tips and tricks (Español)
Para conocer métodos generales que permitan mejorar la flexibilidad de las presentes sugerencias o del propio pacman, consulte Core utilities (Español) y Bash (Español).
Mantenimiento
grep -Fxf
o grep -Fxvf
.Véase también System maintenance (Español).
Listar paquetes
Es posible que desee obtener la lista de paquetes instalados con su versión, lo cual es útil cuando se reportan errores o se discuten los paquetes instalados.
- Lista de todos los paquetes explícitamente instalados:
pacman -Qe
. - Lista de todos los package group llamado
group
:pacman -Sg group
- Lista de los paquetes originales instalados explícitamente (es decir, presentes en la base de datos de sincronización) que no sean dependencias directas o opcionales:
pacman -Qent
. - Lista de todos los paquetes externos (normalmente descargados e instalados manualmente o paquete quitados de los repositorios):
pacman -Qm
. - Lista de todos los paquetes originales (instalados desde la(s) base de datos de sincronización):
pacman -Qn
. - Lista de paquetes por su expresión regular también conocida como «regex»:
pacman -Qs regex
. - Lista de paquetes por regex con formato de salida personalizado:
expac -s "%-30n %v" regex
(necesita expac).
Por tamaño
Descubrir qué paquetes son más grandes puede ser útil cuando se trata de liberar espacio en el disco duro. Aquí se presentan dos opciones: o bien obtener el tamaño de los paquetes individuales, o bien obtener el tamaño de los paquetes y sus dependencias.
Paquetes individuales
La siguiente orden listará todos los paquetes instalados y sus tamaños particulares:
$ LC_ALL=C pacman -Qi | awk '/^Name/{name=$3} /^Installed Size/{print $4$5, name}' | sort -h
Paquetes y dependencias
Para listar los tamaños de los paquetes con sus dependencias,
Para listar el tamaño de descarga de varios paquetes (deje packages
en blanco para listar todos los paquetes):
$ expac -S -H M '%k\t%n' packages
Para listar paquetes instalados explícitamente que no estén en base ni en base-devel con su tamaño y descripción:
$ expac -H M "%011m\t%-20n\t%10d" $(comm -23 <(pacman -Qqen | sort) <(pacman -Qqg base base-devel | sort)) | sort -n
Para listar los paquetes marcados para actualizar con su tamaño de descarga:
$ pacman -Quq|xargs expac -S -H M '%k\t%n' | sort -sh
Por fecha
Para enumerar los 20 últimos paquetes instalados con expac, ejecute:
$ expac --timefmt='%Y-%m-%d %T' '%l\t%n' | sort | tail -n 20
O, con segundos desde la fecha (1970-01-01 UTC):
$ expac --timefmt=%s '%l\t%n' | sort -n | tail -n 20
No especificados en un grupo o repositorio
Listado de los paquetes explícitamente instalados que no están en los grupos base o base-devel:
$ comm -23 <(pacman -Qeq | sort) <(pacman -Qgq base base-devel | sort)
Listado de todos los paquetes instalados no requeridos por otros paquetes y que no estén en los grupos base o base-devel :
$ comm -23 <(pacman -Qqt | sort) <(pacman -Sqg base base-devel | sort)
Como arriba, pero con descripciones:
$ expac -HM '%-20n\t%10d' $(comm -23 <(pacman -Qqt | sort) <(pacman -Qqg base base-devel | sort))
Listado de todos los paquetes instalados que no están en el repositorio especificado como repo_name
$ comm -23 <(pacman -Qq | sort) <(pacman -Slq repo_name | sort)
Listado de todos los paquetes instalados que están en el repositorio repo_name :
$ comm -12 <(pacman -Qq | sort) <(pacman -Slq repo_name | sort)
Listado de todos los paquetes presentes en la ISO de Arch Linux que no están en el grupo base:
$ comm -23 <(curl https://git.archlinux.org/archiso.git/tree/configs/releng/packages.x86_64) <(pacman -Qqg base | sort)
Paquetes en desarrollo
Para listar todos lo paquetes development/unstable, ejecute:
$ pacman -Qq | grep -Ee '-(bzr|cvs|darcs|git|hg|svn)$'
Explorar paquetes
Para explorar todos los paquetes instalados con una visualización instantánea de cada paquete:
$ pacman -Qq | fzf --preview 'pacman -Qil {}' --layout=reverse --bind 'enter:execute(pacman -Qil {} | less)'
Esto utiliza fzf para presentar una vista de dos paneles donde se muestran todos los paquetes con la información de cada cual a la derecha.
Introduzca letras para filtrar la lista de paquetes; use las teclas de flecha (o Ctrl-j
/Ctrl-k
) para desplazarse; presione Intro
para ver la información del paquete señalado.
Listar archivos que pertenecen a un paquete con su correspondiente tamaño
Esto podría ser útil si descubrió que un paquete específico utiliza una gran cantidad de espacio y desea saber qué archivos lo componen.
$ pacman -Qlq package | grep -v '/$' | xargs du -h | sort -h
Identificar archivos que no pertenecen a ningún paquete
Si su sistema tiene archivos huérfanos que no pertenecen a ningún paquete (un caso común si no usa el gestor de paquetes para instalar software), es posible que desee encontrar dichos archivos para limpiarlos.
Un método consiste en utilizar # pacreport --unowned-files
del paquete pacutils que incluirá una lista de los archivos sin dueño entre otros detalles.
Otro método es enumerar todos los archivos de interés y compararlos con pacman:
# find /etc /usr /opt /var | LC_ALL=C pacman -Qqo - 2>&1 > /dev/null | cut -d ' ' -f 5-
Rastrear archivos sin dueño creados por paquetes
La mayoría de los sistemas recolectarán lentamente diversos archivos fantasmas tales como archivos de estado, registros, índices, etc. durante el curso de la operación habitual.
pacreport
de pacutils se puede usar para rastrear estos archivos y sus asociaciones a través de /etc/pacreport.conf
(vea pacreport(1) § FILES).
Un ejemplo podría ser algo parecido a esto (abreviado):
/etc/pacreport.conf
[Options] IgnoreUnowned = usr/share/applications/mimeinfo.cache [PkgIgnoreUnowned] alsa-utils = var/lib/alsa/asound.state bluez = var/lib/bluetooth ca-certificates = etc/ca-certificates/trust-source/* dbus = var/lib/dbus/machine-id glibc = etc/ld.so.cache grub = boot/grub/* linux = boot/initramfs-linux.img pacman = var/lib/pacman/local update-mime-database = usr/share/mime/magic
Luego, cuando utilice # pacreport --unowned-files
, todos los archivos sin propietario se mostrarán si el paquete asociado ya no está instalado (o si se han creado nuevos archivos).
Además, aconfmgr (aconfmgr-gitAUR) permite rastrear archivos modificados y huérfanos usando un script de configuración.
Eliminar paquetes no utilizados (huérfanos)
Para eliminar de forma recursiva los paquetes huérfanos y sus archivos de configuración:
# pacman -Rns $(pacman -Qtdq)
Si no se encontraron paquetes huérfanos, aparecerán errores de pacman con error: no targets specified
. Esto se espera ya que no se pasaron argumentos a pacman -Rns
.
-Qt
enumeran solo huérfanos verdaderos. Para incluir paquetes que son opcionalmente requeridos por otro paquete, pase el indicador -t
dos veces (esto es, -Qtt
).Eliminar todo menos los paquetes esenciales
Si alguna vez es necesario eliminar todos los paquetes, excepto los paquetes esenciales, un método es establecer el motivo de instalación de los no esenciales como dependencia y luego eliminar todas las dependencias innecesarias.
Primero, para todos los paquetes instalados «como explícitamente», cambie su razón de instalación a «como dependencia»:
# pacman -D --asdeps $(pacman -Qqe)
Luego, cambie el motivo de instalación a instalados «como explícitamente» para los paquetes esenciales solamente, esto es, aquellos que no desea eliminar, para apuntarlos:
# pacman -D --asexplicit base linux linux-firmware
- Se pueden añadir paquetes adicionales a la orden anterior para evitar que se eliminen. Consulte Installation guide (Español)#Instalar paquetes esenciales para obtener más información sobre otros paquetes que pueden ser necesarios para un sistema base completamente funcional.
- Esta orden también seleccionará el paquete del gestor de arranque para su eliminación. El sistema aún debería ser arrancable, pero los parámetros de arranque podrían no ser modificables sin él.
Finalmente, siga las instrucciones de #Eliminar paquetes no utilizados (huérfanos) para eliminar todos los paquetes que tengan una razón de instalación «como dependencia».
Obtener la lista de dependencias de varios paquetes
Las dependencias se ordenan alfabéticamente y las repetidas se eliminan.
pacman -Qi
.$ LC_ALL=C pacman -Si packages | awk -F'[:<=>]' '/^Depends/ {print $2}' | xargs -n1 | sort -u
Como alternativa puede utilizar expac:
$ expac -l '\n' %E -S packages | sort -u
Listar los archivos de copia de seguridad modificados
Si desea realizar una copia de seguridad de los archivos de configuración del sistema, puede copiar todos los archivos en /etc/
, pero normalmente solo le interesan los ficheros que ha modificado. Los archivos de copias de seguridad se puede ver con la siguiente orden:
# pacman -Qii | awk '/^MODIFIED/ {print $2}'
Ejecutar esta orden con permisos de root asegurará que los archivos solo pueden ser leídos por root (por ejemplo /etc/sudoers
) están incluidos en la salida.
Realizar copia de seguridad de la base de datos de pacman
La siguiente orden se puede usar para realizar una copia de seguridad de la base de datos local de pacman :
$ tar -cjf pacman_database.tar.bz2 /var/lib/pacman/local
Almacene la copia de seguridad de la base de datos de pacman en uno o más medios sin conexión, como una memoria USB, disco duro externo o CD-R.
La base de datos se puede restaurar moviendo el archivo pacman_database.tar.bz2
en el /
directorio y ejecutando la siguiente orden :
# tar -xjvf pacman_database.tar.bz2
/etc/pakbak.conf
.Verificar registros de cambios fácilmente
Cuando los mantenedores actualizan los paquetes, las confirmaciones a menudo se comentan de manera útil. Los usuarios pueden comprobarlo rápidamente desde la línea de órdenes instalando pacologAUR. Esta utilidad enumera mensajes de confirmación recientes para paquetes de los repositorios oficiales o en AUR, mediante el uso de pacolog <package>
.
Instalación y recuperación
Formas alternativas de obtener y restaurar paquetes.
Instalar paquetes desde un CD/DVD o dispositivo USB
Para descargar paquetes o grupos de paquetes:
# cd ~/Packages # pacman -Syw base base-devel grub-bios xorg gimp --cachedir . # repo-add ./custom.db.tar.gz ./*
A continuación puede grabar la carpeta «Packages» en un CD/DVD o transferir a un dispositivo USB, disco duro externo, etc.
Para instalar:
1. Monte los medios:
# mkdir /mnt/repo # mount /dev/sr0 /mnt/repo #Para un disco CD/DVD. # mount /dev/sdxY /mnt/repo #Para una memoria USB.
2. Edite pacman.conf
y agrege este repositorio por encima de los demás (es decir, extra, core, etc.). Esto es importante. No se limite a descomentar el que está en la parte inferior. De esta manera se asegura que los archivos del CD/DVD/USB tengan prioridad sobre los de los repositorios estándar.:
/etc/pacman.conf
[custom] SigLevel = PackageRequired Server = file:///mnt/repo/Packages
3. Finalmente, sincronice la base de datos de pacman para poder usar el nuevo repositorio:
# pacman -Syu
Repositorio local personalizado
Utilice el script repo-add incluido con pacman para generar una base de datos para un repositorio personal. Utilize repo-add --help
para conocer más detalles sobre su uso.
Una base de datos de paquetes es un archivo tar, opcionalmente comprimido. Las extensiones válidas son .db o .files seguidas de una extensión de archivo como .tar , .tar.gz , .tar.bz2 , . tar.xz , .tar.zst o .tar.Z . No es necesario que el archivo exista, pero sí todos los directorios principales.
Para agregar un nuevo paquete a la base de datos o para reemplazar la versión anterior de un paquete existente en la base de datos, ejecute:
$ repo-add /path/to/repo.db.tar.gz /path/to/package-1.0-1-x86_64.pkg.tar.xz
La base de datos y los paquetes no necesitan estar en el mismo directorio cuando se utiliza repo-add, pero tenga en cuenta que cuando se usa pacman con esa base de datos, deben estar juntos. Almacenar todos los paquetes construidos para ser incluidos en el repositorio en un directorio también permite usar la expansión shell glob para añadir o actualizar múltiples paquetes a la vez:
$ repo-add /path/to/repo.db.tar.gz /path/to/*.pkg.tar.xz
Si está buscando soportar múltiples arquitecturas, entonces se deben tomar precauciones para evitar que ocurran errores. Cada arquitectura debe tener su propio árbol de directorios:
$ tree ~/customrepo/ | sed "s/$(uname -m)/<arch>/g"
/home/archie/customrepo/ └── <arch> ├── customrepo.db -> customrepo.db.tar.xz ├── customrepo.db.tar.xz ├── customrepo.files -> customrepo.files.tar.xz ├── customrepo.files.tar.xz └── personal-website-git-b99cce0-1-<arch>.pkg.tar.xz 1 directory, 5 files
El ejecutable repo-add verifica si el paquete es apropiado. Si este no es el caso, se encontrará con mensajes de error similares a este:
==> ERROR: '/home/archie/customrepo/<arch>/foo-<arch>.pkg.tar.xz' does not have a valid database archive extension.
repo-remove se usa para eliminar paquetes de la base de datos, excepto si el nombre del paquete se especifica con la siguiente orden.
$ repo-remove /path/to/repo.db.tar.gz pkgname
Una vez que se haya creado la base de datos del repositorio local, agregue el repositorio a pacman.conf
para cada sistema que usará el repositorio. Un ejemplo de repositorio personalizado está en pacman.conf
. El nombre del repositorio es el nombre de archivo de la base de datos con la extensión de archivo omitida. En el caso del ejemplo anterior, el nombre del repositorio sería simplemente repo. Haga referencia a la ubicación del repositorio utilizando un file://
url, o por FTP usando ftp://localhost/path/to/directory.
Si lo desea, añada el repositorio personalizado al directorio de la lista de repositorios no oficiales de usuario, para que la comunidad pueda beneficiarse de ello.
Caché de pacman compartida en red
Si ejecuta varios sistemas de Arch en su LAN, puede compartir paquetes para que pueda disminuir considerablemente los tiempos de descarga. Tenga en cuenta que no debe compartir entre diferentes arquitecturas (es decir, i686 y x86_64) o se encontrará con problemas.
Caché de solo lectura
Si está buscando una solución rápida, puede simplemente ejecutar un servidor web independiente que otros ordenadores pueden utilizar como primer servidor de réplica:
# ln -s /var/lib/pacman/sync/*.db /var/cache/pacman/pkg $ sudo -u http darkhttpd /var/cache/pacman/pkg --no-server-id
También podría ejecutar darkhttpd como un servicio systemd para su comodidad. Basta agregar este servidor en la parte superior del archivo /etc/pacman.d/mirrorlist
en equipos clientes con Server = http://mymirror:8080
. Asegúrese de mantener su servidor de réplica actualizado.
Si ya está ejecutando un servidor web para algún otro propósito, es posible que desee reutilizarlo como su servidor de repositorio local en lugar de darkhttpd. Por ejemplo, digamos que ya tiene un servidor en un sitio con nginx, puede agregar una sección para que otro servidor de nginx escuche en el puerto 8080:
/etc/nginx/nginx.conf
server { listen 8080; root /var/cache/pacman/pkg; server_name myarchrepo.localdomain; try_files $uri $uri/; }
Recuerde reiniciar nginx después de hacer este cambio.
Sea cual sea el servidor web que utilice, recuerde abrir el puerto 8080 para el tráfico local (y probablemente desee negar todo lo que no sea local), así que agregue una regla como la siguiente a iptables (Español):
/etc/iptables/iptables.rules
-A TCP -s 192.168.0.0/16 -p tcp -m tcp --dport 8080 -j ACCEPT
Recuerde reiniciar iptables después de hacer este cambio.
Caché de solo lectura distribuido
Existen herramientas específicas de Arch para descubrir automáticamente otros equipos de la red que ofrecen una caché de paquetes. Intente pacserve, pkgdistcacheAUR, o paclanAUR. pkgdistcache utilize Avahi en lugar de UDP el cual puede funcionar mejor en ciertas redes domésticas que enrutan en lugar de tender un puente entre WiFi y Ethernet .
Históricamente, teníamos PkgD y multipkg, pero ya no se mantienen.
Caché de lectura y escritura
Para compartir paquetes entre varios equipos, simplemente comparta /var/cache/pacman/
utilizando cualquier protocolo de montaje basado en red. Esta sección muestra cómo usar shfs o SSHFS (Español) para compartir una caché de paquetes más los directorios de biblioteca relacionados entre múltiples ordenadores de la misma red local. Tenga en cuenta que una caché compartida en red puede ser lenta dependiendo de la elección del sistema de archivos, entre otros factores.
Primero, instale cualquier paquete de sistema de ficheros que soporte la red: shfs-utils, sshfs, curlftpfs, samba o nfs-utils.
- Para usar sshfs o shfs, considere leer Using SSH Keys (Español).
- Por defecto, smbfs no sirve nombres de archivo que contengan dos puntos, lo que hace que el cliente descargue de nuevo el paquete otra vez. Para evitarlo, utilice la opción de montaje
mapchars
en el cliente.
Luego, para compartir los paquetes actuales, monte /var/cache/pacman/pkg
del servidor a /var/cache/pacman/pkg
en cada máquina cliente.
/var/cache/pacman/pkg
ni de ninguno de sus directorios precedentes (por ejemplo, de /var
). Pacman espera que estos sean directorios. Cuando pacman se reinstale o actualice, eliminará los enlaces simbólicos y creará directorios vacíos. Sin embargo, durante la operación pacman se basará en algunos archivos que residen allí, rompiendo así el proceso de actualización. Consulte FS#50298 para más detalles.De doble sentido con rsync
Otro enfoque en un entorno local es rsync (Español). Elija un servidor para el almacenamiento caché y active el demonio Rsync (Español)#Demonio rsync. En los clientes, sincronice bidireccionalmente con este recurso compartido mediante el protocolo rsync. Los nombres de archivo que contienen dos puntos no son un problema para el protocolo rsync.
Ejemplo para un cliente, utilizando uname -m
dentro del nombre compartido asegura una arquitectura dependiente sync:
# rsync rsync://server/share_$(uname -m)/ /var/cache/pacman/pkg/ ... # pacman ... # paccache ... # rsync /var/cache/pacman/pkg/ rsync://server/share_$(uname -m)/ ...
Caché dinámico de proxy inverso usando nginx
nginx se puede usar para enviar solicitudes de paquetes proxy a servidores de réplicas ascendentes oficiales y almacenar los resultados en el disco local. Todas las solicitudes posteriores para ese paquete serán atendidas directamente desde la memoria caché local, minimizando la cantidad de tráfico de Internet necesaria para actualizar una gran cantidad de ordenadores.
En este ejemplo, el servidor de caché se ejecutará en http://cache.domain.example:8080/
y almacenará los paquetes enn /srv/http/pacman-cache/
.
Instale nginx en el ordenador que vaya a alojar la caché. Cree el directorio para el caché y ajuste los permisos para que nginx pueda escribir archivos en él:
# mkdir /srv/http/pacman-cache # chown http:http /srv/http/pacman-cache
Utilice la nginx pacman cache config como punto de partida para /etc/nginx/nginx.conf
. Compruebe que la directiva resolver
funciona para sus necesidades. En los bloques del servidor ascendente, configure las directivas proxy_pass
con las direcciones de los espejos oficiales, vea ejemplos en el archivo de configuración sobre el formato esperado. Una vez que esté satisfecho con el archivo de configuración inicie y active nginx.
Para usar la caché, cada ordenador Arch Linux (incluida la que aloja el caché) debe tener la siguiente línea en la parte superior del archivo mirrorlist
file:
/etc/pacman.d/mirrorlist
Server = http://cache.domain.local:8080/$repo/os/$arch ...
paccache
(que se incluye con pacman) se puede utilizar para automatizarlo , utilizando criterios de retención de su elección. Por ejemplo, find /srv/http/pacman-cache/ -type d -exec paccache -v -r -k 2 -c {} \;
mantendrá las dos últimas versiones de los paquetes en su directorio caché.Actualizar la memoria caché de pacman utilizando programas de sincronización
Utilice Syncthing o Resilio Sync para sincronizar las carpetas de la caché de «pacman» (esto es, /var/cache/pacman/pkg
).
Prevenir la limpieza no deseada de la memoria caché
Por defecto, pacman -Sc
elimina los paquetes tarballs de la memoria caché que corresponden a paquetes que no están instalados en el equipo en el que se emitió la orden. Dado que pacman no puede predecir qué paquetes están instalados en todos los equipos que comparten la memoria caché, acabará eliminando archivos que no debería.
Para limpiar la memoria de caché de forma que solo se eliminen los tarballs obsoletos, añada esta entrada en el archivo [options]
en la sección de /etc/pacman.conf
:
CleanMethod = KeepCurrent
Reconstituir un paquete del sistema de archivos
Para reconstituir un paquete desde el sistema de archivos, utilice fakepkgAUR. Los archivos del sistema se toman tal como están, por lo tanto, cualquier modificación estará presente en el paquete ensamblado. Por lo tanto, se desaconseja la distribución del paquete reconstituido; vea ABS (Español) y Arch Linux Archive (Español) para las alternativas.
Listar paquetes instalados
Mantener una lista de paquetes instalados explícitamente puede ser útil para acelerar la instalación en un nuevo sistema:
$ pacman -Qqe > pkglist.txt
- Con la opción
-t
, no se mencionan los paquetes ya requeridos por otros paquetes instalados explícitamente. Si se vuelve a instalar desde esta lista, se instalarán pero solo como dependencias. - Con la opción
-n
, los paquetes foráneos (por ejemplo, los de AUR (Español)) se omitirán de la lista. - Utilice
comm -13 <(pacman -Qqdt | sort) < (pacman -Qqdtt | sort) > optdeplist.txt
también para crear una lista de las dependencias opcionales instaladas que se pueden reinstalar con--asdeps
. - Utilice
pacman -Qqem > foreignpkglist.txt
para crear la lista de paquetes de AUR y otros paquetes foráneos que se hayan instalado explícitamente.
Para mantener una lista actualizada de paquetes instalados explícitamente (por ejemplo, en combinación con una versión de /etc/
), puede configurar un hook. Ejemplo:
[Trigger] Operation = Install Operation = Remove Type = Package Target = * [Action] When = PostTransaction Exec = /bin/sh -c '/usr/bin/pacman -Qqe > /etc/pkglist.txt'
Instalar paquetes de una lista
Para instalar paquetes desde una lista de paquetes previamente guardada, al tiempo que no se reinstalan los paquetes que ya estén actualizados, ejecute:
# pacman -S --needed - < pkglist.txt
Sin embargo, es probable que en la lista se encuentren paquetes foráneos como los procedentes de AUR o los instalados localmente. Para filtrar de la lista los paquetes externos, la línea de órdenes anterior se puede enriquecer de la siguiente manera:
# pacman -S --needed $(comm -12 <(pacman -Slq | sort) <(sort pkglist.txt))
Finalmente, para asegurarse de que los paquetes instalados del sistema coincidan con la lista y se eliminen todos los paquetes que no se mencionan en ella:
# pacman -Rsu $(comm -23 <(pacman -Qq | sort) <(sort pkglist.txt))
Listar todos los archivos modificados de los paquetes
Si sospecha que hay corrupción de archivos (por ejemplo, por fallos de software o hardware), pero no está seguro de si los archivos se corrompieron, es posible que desee compararlos con las sumas de hash de los paquetes. Esto se puede hacer con pacutils:
# paccheck --md5sum --quiet
Para la recuperación de la base de datos, véase #Restaurar la base de datos local de pacman. Los archivos mtree
también pueden ser extraído como .MTREE
de los respectivos archivos del paquete.
Reinstalar todos los paquetes
Para reinstalar todos los paquetes originales, utilice:
# pacman -Qqn | pacman -S -
Los paquetes externos (AUR) deben reinstalarse por separado; puede listarlos con pacman -Qmq
.
Pacman conserva el motivo de la instalación por defecto.
Restaurar la base de datos local de pacman
Véase Pacman (Español)/Restore local database (Español).
Recuperar una memoria USB desde la instalación existente
Si tiene Arch instalado en una memoria USB y se las arregla para estropearla ( por ejemplo, quitándola mientras todavía está siendo escrita), entonces es posible reinstalar todos los paquetes y esperar que vuelva a funcionar (suponiendo que la memoria USB está montada en /newarch
)
# pacman -S $(pacman -Qq --dbpath /newarch/var/lib/pacman) --root /newarch --dbpath /newarch/var/lib/pacman
Visualizar un único archivo dentro de un archivo .pkg
Por ejemplo, si desea ver el contenido de /etc/systemd/logind.conf
suministrado dentro del paquete systemd:
$ tar -xOf /var/cache/pacman/pkg/systemd-204-3-x86_64.pkg.tar.xz etc/systemd/logind.conf
O puede usar vim para explorar el archivo:
$ vim /var/cache/pacman/pkg/systemd-204-3-x86_64.pkg.tar.xz
Localizar aplicaciones que usan bibliotecas de paquetes más antiguos
Incluso después de haber instalado un paquete, los programas existentes que se ejecutan desde hace mucho tiempo (como los demonios y los servidores) siguen utilizando código de antiguas bibliotecas.Y es una mala idea dejar que estos programas se ejecuten si la biblioteca anterior contiene un error de seguridad.
Esta es una manera de encontrar todos los programas que usan código de paquetes antiguos:
# lsof +c 0 | grep -w DEL | awk '1 { print $1 ": " $NF }' | sort -u
Imprimirá el nombre del programa en ejecución y la biblioteca antigua que se eliminó o reemplazó con contenido más reciente.
Instalar solo contenido en los idiomas requeridos
Muchos paquetes intentan instalar documentación y traducciones en varios idiomas. Algunos programas están diseñados para eliminar dichos archivos innecesarios, como localepurgeAUR, que se ejecuta después de instalar un paquete para eliminar los archivos locales innecesarios. Un enfoque más directo se proporcina a través de la directiva NoExtract
en pacman.conf
, que evita que estos archivos se instalen. El siguiente ejemplo instala archivos en inglés (US) o ninguno:
El siguiente ejemplo instala archivos en inglés (US) o ninguno:
/etc/pacman.conf
NoExtract = usr/share/help/* !usr/share/help/en* NoExtract = usr/share/gtk-doc/html/* NoExtract = usr/share/locale/* usr/share/X11/locale/* usr/share/i18n/* opt/google/chrome/locales/* !usr/share/X11/locale/C/* NoExtract = !*locale*/en*/* !usr/share/i18n/charmaps/UTF-8.gz !usr/share/*locale*/locale.* NoExtract = !usr/share/*locales/en_?? !usr/share/*locales/i18n !usr/share/*locales/iso* NoExtract = !usr/share/*locales/trans* NoExtract = usr/share/qt4/translations/* NoExtract = usr/share/man/* !usr/share/man/man* NoExtract = usr/share/vim/vim*/lang/* NoExtract = usr/lib/libreoffice/help/en-US/*
Optimización
Acelerar las descargas
Al descargar paquetes pacman usa los servidores de réplicas en el orden en que están en /etc/pacman.d/mirrorlist
. Sin embargo, los servidores de réplicas que está en la parte superior de la lista, pueden no ser los más rápido para usted. Para seleccionar los servidores de réplicas más rápidos, consulte Mirrors (Español).
La velocidad de pacman en la descarga de paquetes también puede ser mejorada mediante el uso de una aplicación diferente para descargar paquetes, en lugar del descargador de archivos integrado de pacman.
En todos los casos, asegúrese de tener la última pacman antes de hacer cualquier modificación.
# pacman -Syu
Powerpill
Powerpill (Español) es un wrapper de pacman que utiliza la descarga paralela y segmentada para tratar de acelerar las descargas de pacman.
wget
Esto también es muy útil si necesita configuraciones proxy más potentes que las capacidades incorporadas de pacman.
Para usar wget
, primero instale el paquete wget y luego modifique /etc/pacman.conf
descomentando la siguiente línea en la sección [options]
:
XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
En lugar de descomentar los parámetros de wget
en /etc/pacman.conf
, también puede modificar el archivo de configuración de wget
directamente, el archivo de todo el sistema es /etc/wgetrc
, o $HOME/.wgetrc
para el usuario.
aria2
aria2 es una utilidad de descarga ligera con soporte para HTTP/HTTPS y transferencias directas continuas y segmentadas. aria2 permite múltiples y simultáneas conexiones HTTP/HTTPS y FTP a un servidor de réplica de Arch, lo que debería dar como resultado un aumento en las velocidades de descarga para la obtención de archivos y paquetes.
Instale aria2 y luego edite /etc/pacman.conf
agregando la siguiente línea a la sección [options]
:
XferCommand = /usr/bin/aria2c --allow-overwrite=true --continue=true --file-allocation=none --log-level=error --max-tries=2 --max-connection-per-server=2 --max-file-not-found=5 --min-split-size=5M --no-conf --remote-time=true --summary-interval=60 --timeout=5 --dir=/ --out %o %u
Vea OPTIONS en aria2c(1) para usar las configuraciones de aria2.
-
-d, --dir
: el directorio para almacenar los archivo(s) descargado según lo especificado por pacman . -
-o, --out
: el nombre(s) del archivo(s) de salida descargado(s). -
%o
: la variable que representa el nombre(s) del archivo(s) local especificado por pacman. -
%u
: la variable que representa la URL de descarga especificada por pacman.
Otras aplicaciones
Hay otras aplicaciones de descarga que puede usar con pacman . Aquí están, y su configuración asociada de XferCommand:
-
snarf
:XferCommand = /usr/bin/snarf -N %u
-
lftp
:XferCommand = /usr/bin/lftp -c pget %u
-
axel
:XferCommand = /usr/bin/axel -n 2 -v -a -o %o %u
-
hget
:XferCommand = /usr/bin/hget %u -n 2 -skip-tls false
(lea la documentación en la página del proyecto de Github para mas información)
Utilidades
- Lostfiles — Script que identifica archivos que no son propiedad de ningún paquete.
- Pacmatic — Wrapper de pacman para comprobar noticias de Arch antes de la actualización, evitar actualizaciones parciales y advertir sobre cambios en el archivo de configuración.
- pacutils — Biblioteca de ayuda para programas basados en libalpm.
- pkgfile — Herramienta para buscar archivos en paquetes.
- pkgtools — Colección de scripts para los paquetes de Arch Linux.
- pkgtop — Gestor de paquetes interactivo y monitor de recursos diseñado para GNU/Linux.
- Powerpill — Utiliza descargas paralelas y segmentadas a través de aria2 y Reflector para intentar acelerar las descargas de pacman.
- repoctl — Herramienta para ayudar a gestionar repositorios locales.
- repose — Una herramienta de construcción de repositorios Arch Linux.
- snap-pac — Hace que pacman utilice automáticamente snapper para crear instantáneas previas y posteriores como YaST de openSUSE.
- vrms-arch — Un Richard M. Stallman virtual para decirle qué paquetes no libres tiene instalados.
Front-ends gráficos
- Apper — Gestor de paquetes y aplicación Qt 5 que utiliza PackageKit escrito en C++. Admite AppStream metadata.
- Discover — Gestor de aplicaciones Qt 5 que utiliza PackageKit escrito en C++/QML. Admite AppStream metadata, Flatpak y firmware updates.
- GNOME PackageKit — Gestor de paquetes GTK+ 3 que utiliza PackageKit escrito en C.
- GNOME Software — Gestor de aplicaciones GTK+ 3 que utiliza PackageKit escrito en C. Admite AppStream metadata, Flatpak y firmware updates.
- pcurses — Empaquetador TUI de curses para pacman escrito en C++.
- tkPacman — Wrapper Tk para pacman escrito en Tcl.