Difference between revisions of "Pacman/Tips and tricks (Español)"

From ArchWiki
Jump to: navigation, search
(merged)
m (Copia de seguridad de la base de datos de pacman)
 
(144 intermediate revisions by 8 users not shown)
Line 1: Line 1:
 +
{{Lowercase title}}
 
[[Category:Package management (Español)]]
 
[[Category:Package management (Español)]]
[[en:Pacman Tips]]
+
[[en:Pacman/Tips and tricks]]
[[it:Pacman Tips]]
+
[[fa:Pacman tips]]
[[ru:Pacman Tips]]
+
[[fr:Astuces Pacman]]
[[tr:Pacman_ipuçları]]
+
[[it:Pacman/Tips and tricks]]
[[zh-CN:Pacman Tips]]
+
[[ja:Pacman ヒント]]
{{Bad translation|Outdated and does not follow style guidelines, contrast [[Pacman_Tips#Restore_pacman.27s_local_database]]}}
+
[[pt:Pacman/Tips and tricks]]
==Cómo restaurar la base de datos local de Pacman==
+
[[ru:Pacman/Tips and tricks]]
 +
[[zh-hans:Pacman/Tips and tricks]]
 +
{{Related articles start}}
 +
{{Related|pacman}}
 +
{{Related|Improve pacman performance}}
 +
{{Related|Mirrors}}
 +
{{Related|Creating packages}}
 +
{{Related articles end}}
 +
Para métodos generales para mejorar la flexibilidad de las sugerencias proporcionadas o del propio pacman, consulte [[Core utilities]] y [[Bash]].
  
===Introducción===
+
== Mantenimiento ==
  
Algo ha ido mal con pacman. 'Pacman -Q' no da resultados en absoluto, y 'pacman -Syu' le dice que sus sistema está actualizado, pero usted sabe que no es así. Cuando intenta instalar un paquete usando 'pacman -S package', se le presenta una lista de dependencias, aunque usted sepa positivamente que ya están todas ellas instaladas.
 
  
Su problema es que la base de datos de software instalado de pacman, '/var/lib/pacman/local' se ha corrompido o borrado. Este es un problema serio, pero afortunadamente puede restaurar '/var/lib/pacman/local' siguiendo las instrucciones que se indican a continuación.
 
  
====Ausencia de responsabilidad====
+
{{Nota|En lugar de utilizar ''comm'' (que requiere una entrada ordenada con ''sort'') en las secciones siguientes, también puede utilizar {{ic|grep -Fxf}} o {{ic|grep -Fxvf}}.}}
  
Antes de comenzar, quiero recalcar que aunque estas instrucciones me funcionaron a mí, puede que no funcionen para usted. De hecho, sus sistema podría no volver a ser el mismo nunca más.
+
Véase también [[System maintenance]].
  
PROCEDA ASUMIENDO EL RIESGO!
+
=== Listando paquetes ===
  
====Línea de órdenes====
+
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 todos los paquetes explícitamente instalados: {{ic|pacman -Qe}}.
 +
* Lista los paquetes originales instalados explícitamente (es decir, presentes en la base de datos de sincronización) que no sean dependencias directas o opcionales: {{ic|pacman -Qent}} .
 +
* Lista de todos los paquetes externos (normalmente descargados e instalados manualmente): {{ic|pacman -Qm}}.
 +
* Lista de todos los paquetes originales (instalados desde la (s) base de datos de sincronización): {{ic|pacman -Qn}} .
 +
* Lista de paquetes por regex: {{ic|pacman -Qs ''regex''}} .
 +
* Lista de paquetes por regex con formato de salida personalizado: {{ic|expac -s "%-30n %v" ''regex''}} (necesita {{Pkg|expac}}).
  
La línea a continuación indica una orden tecleada por el usuario 'me' en un terminal, esto es, cualquier usuario excepto root.
+
==== Por tamaño ====
 +
Para obtener una lista de paquetes instalados ordenados por tamaño, lo que puede ser útil para liberar espacio en su disco duro:
 +
* Instalar {{Pkg|expac}} y ejecutar {{ic|<nowiki>expac -H M '%m\t%n' | sort -h</nowiki>}}.
 +
* Ejecute {{Pkg|pacgraph}} con la opción {{ic|-c}} .
 +
Para crear un listado de paquetes y su tamaño (deje ''packages'' en blanco para listar todos los paquetes):
 +
  $ expac -S -H M '%k \ t%n' ''packages''
 +
Para listar los paquetes explícitamente instalados que no están en {{Grp|base}} ni en {{Grp|base-devel}} con 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
  
[me@linuxbox]$ ls
+
==== 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
  
La línea a continuación indica una orden tecleada en un terminal por el usuario 'root', esto es, el usuario con todos los derechos en su sistema.
+
O, con segundos desde la fecha (1970-01-01 UTC):
  
[root@linuxbox]# ls
+
  $ expac --timefmt=%s '%l\t%n' | sort -n | tail -n 20
  
La mayoría de las instrucciones descritas a continuación suponen que tiene usted acceso como root a su sistema.
+
==== No especificado en un grupo o repositorio ====
  
===Instrucciones===
+
{{Nota|Para obtener una lista de paquetes instalados como dependencias pero que ya no son necesarios para ningún paquete instalado, consulte [[#Eliminación de paquetes no utilizados (huérfanos)]].}}
  
*En primer lugar, tiene que asegurarse de que tiene el archivo de anotaciones de pacman.
+
Lista los paquetes explícitamente instalados que no están en los grupos de {{Grp|base}} o {{Grp|base-devel}} :
 +
  $ comm -23 <(pacman -Qeq | sort) <(pacman -Qgq base base-devel | sort)
 +
Lista de todos los paquetes instalados no requeridos por otros paquetes y que no estén en los grupos de {{Grp|base}} o de {{Grp|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))
 +
Lista todos los paquetes instalados que ''no'' están en el repositorio especificado ''repo_name''
  
[me@linuxbox]$ ls /var/log/pacman.log
+
  $ comm -23 <(pacman -Qtq | sort) <(pacman -Slq repo_name | sort)
/var/log/pacman.log
 
  
Si no existe su archivo de anotaciones de pacman, NO debe continuar. La única opción que tiene es reinstalar su sistema desde cero.
+
Liste todos los paquetes instalados que están en el repositorio repo_name :
 +
 +
  $ comm -12 <(pacman -Qtq | sort) <(pacman -Slq repo_name | sort)
 +
 
 +
Lista todos los paquetes en Arch Linux ISO que no están en el grupo base:
 +
 
 +
<nowiki>$ comm -23 <(wget -q -O - https://git.archlinux.org/archiso.git/plain/configs/releng/packages.both) <(pacman -Qqg base | sort)</nowiki>
 +
 
 +
==== Paquetes en desarrollo ====
 +
 
 +
Para listar todos lo paquetes ''development/unstable'' , ejecute:
 +
 
 +
$ pacman -Qq | awk '/^.+(-cvs|-svn|-git|-hg|-bzr|-darcs)$/'
 +
 
 +
=== Listado de archivos propiedad de un paquete , ordenado por 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 [[Enhance system stability#Use the package manager to install software|usa el administrador de paquetes para instalar software]]), es posible que desee encontrar dichos archivos para limpiarlos. El proceso general para hacerlo es:
 +
 
 +
# Crear una lista ordenada de los archivos que desea verificar los propietarios: {{bc|<nowiki>$ find /etc /opt /usr | sort > all_files.txt</nowiki>}}
 +
 
 +
# Crear una lista ordenada de los archivos rastreados por ''pacman'' (y elimina las barras diagonales de los directorios): {{bc|<nowiki>$ pacman -Qlq | sed 's|/$||' | sort > owned_files.txt</nowiki>}}
 +
 
 +
# Encuentra líneas en la primera lista que no están en el segundo: {{bc|$ comm -23 all_files.txt owned_files.txt}}
 +
 
 +
En la práctica, este proceso es complicado porque muchos archivos importantes no forman parte de ningún paquete (por ejemplo, archivos generados en tiempo de ejecución, configuraciones personalizadas), por lo que se incluirán en el resultado final, lo que dificulta seleccionar los archivos que pueden eliminarse de manera segura.
 +
 
 +
{{Tip|El {{AUR|lostfiles}} script realiza pasos similares, pero también incluye una extensa lista negra para eliminar falsos positivos comunes de la salida. [https://github.com/CyberShadow/aconfmgr aconfmgr] ({{AUR|aconfmgr-git}}) también permite rastrear archivos huérfanos usando una secuencia de comandos de configuración.}}
 +
 
 +
=== Eliminación de paquetes no utilizados (huérfanos) ===
 +
 
 +
Para eliminar de forma ''recursiva'' los 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 {{ic|error: no targets specified}}. Esto se espera ya que no se pasaron argumentos a {{ic|pacman -Rns}}.
 +
 
 +
{{Note|Los argumentos {{ic|-Qt}} enumeran sólo huérfanos verdaderos. Para incluir paquetes que son ''opcionalmente'' requeridos por otro paquete, pase el indicador {{ic|-t}} dos veces (''i.e.'', {{ic|-Qtt}}).}}
 +
 
 +
=== Eliminar todo menos el grupo base===
 +
 
 +
Si alguna vez es necesario eliminar todos los paquetes, excepto el grupo base, pruebe esta sola linea:
 +
 
 +
# pacman -R $(comm -23 <(pacman -Qq | sort) <((for i in $(pacman -Qqg base); do pactree -ul "$i"; done) | sort -u))
 +
 
 +
Esta única linea fue originalmente concebida en  [https://bbs.archlinux.org/viewtopic.php?id=130176 esta conversación], y posteriormente mejorada en este artículo.
 +
 
 +
=== Obtener la lista de dependencias de varios paquetes ===
 +
 
 +
Las dependencias se ordenan alfabéticamente y las repetidas se eliminan.
 +
 
 +
{{Nota|Para mostrar solo el árbol de paquetes locales instalados, use {{ic|pacman -Qi}}.}}
 +
 
 +
$ pacman -Si ''packages'' | awk -F'[:<=>]' '/^Depends/ {print $2}' | xargs -n1 | sort -u
 +
 
 +
Como alternativa puede utilizar {{Pkg|expac}}:
 +
 
 +
$ expac -l '\n' %E -S ''packages'' | sort -u
 +
 
 +
=== Listado de 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 {{ic|/etc/}}, pero normalmente sólo le interesan los ficheros que ha modificado. Los archivos de [[Pacnew_and_Pacsave_files#Package_backup_files|copias de seguridad]] se puede ver con el siguiente comando:
 +
 
 +
# pacman -Qii | awk '/^MODIFIED/ {print $2}'
 +
 
 +
Ejecutar este comando con permisos de root asegurará que los archivos sólo pueden ser leídos por root (por ejemplo {{ic|/etc/sudoers}}) están incluidos en la salida.
 +
 
 +
{{Sugerencia|Mire [[#Listado de todos los archivos modificados de los paquetes]] para listar todos los archivos modificados que conoce ''pacman'' , no sólo los archivos de copia de seguridad.}}
 +
 
 +
=== Copia de seguridad de la base de datos de pacman ===
 +
 
 +
El siguiente comando 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 el archivo de base de datos de respaldo '' 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 {{ic|pacman_database.tar.bz2}} en el  {{ic|/}} directorio y ejecutando el siguiente comando :
 +
 
 +
# tar -xjvf pacman_database.tar.bz2
 +
 
 +
{{Nota|Si los archivos de la base de datos '' pacman '' están dañados y no hay un archivo de respaldo disponible, existe la esperanza de reconstruir la base de datos '' pacman ''. Consultar [[Pacman/Restore local database]].
 +
 
 +
{{Sugerencia|El paquete {{AUR|pakbak-git}} proporciona una secuencia de comandos y un servicio en  [[systemd]] para automatizar la tarea. La configuración es posible en {{ic|/etc/pakbak.conf}}.}}
 +
 
 +
=== Verifique 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 comando instalando {{AUR|pacolog}}. Esta utilidad enumera mensajes de confirmación recientes para paquetes de los repositorios oficiales o en AUR, mediante el uso de {{ic|pacolog <package>}}.
 +
 
 +
== Instalación y recuperación==
 +
 
 +
Formas alternativas de obtener y restaurar paquetes.
 +
 
 +
=== Instalación de paquetes desde un CD / DVD o dispositivo USB===
 +
 
 +
{{Merge|#Repositorio local personalizado | Utilícelo como ejemplo y evite la duplicación}}
 +
 
 +
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 una dispositivo USB , disco duro externo HDD, etc.
 +
 
 +
Para instalar:
 +
 
 +
'''1.''' Montar los medios:
 +
 
 +
# mkdir /mnt/repo
 +
# mount /dev/sr0 /mnt/repo    #For a CD/DVD.
 +
# mount /dev/sdxY /mnt/repo  #For a USB stick.
 +
 
 +
'''2.''' Edite {{ic|pacman.conf}} y agrege este repositorio '' antes '' de los otros (e.g. extra, core, etc.). Esto es importante. No se limite a descomentar el que está en la parte inferior. De esta manera se asegura de que los archivos del CD/DVD/USB tengan prioridad sobre los de los repositorios estándar.:
 +
 
 +
{{hc|/etc/pacman.conf|2=
 +
[custom]
 +
SigLevel = PackageRequired
 +
Server = file:///mnt/repo/Packages}}
 +
 
 +
'''3.''' Finalmente, sincronice la base de datos '' 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 {{ic|repo-add --help}} para más detalles sobre su uso. 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''
 +
 
 +
{{Nota|Una base de datos de paquetes es un archivo tar, opcionalmente comprimido. Las extensiones válidas son '' .db '' o '' .files '' seguidas por una extensión de archivo de '' .tar '', '' .tar.gz '', '' .tar.bz2 '', ''. tar.xz '' o '' .tar.z ''.  No es necesario que exista el fichero, pero deben existir todos los directorios principales.}}
 +
 
 +
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''
 +
 
 +
{{Advertencia|'' repo-add '' agrega las entradas a la base de datos en el mismo orden que se pasó en la línea de comando. Si se trata de varias versiones del mismo paquete, se debe tener cuidado para asegurarse de que se agregue la versión correcta al final. En particular, tenga en cuenta que el orden léxico utilizado por el shell depende de la configuración regional y difiere de la [https://www.archlinux.org/pacman/vercmp.8.html vercmp] orden utilizado por ''pacman''.}}
 +
 
 +
'' repo-remove '' se usa para eliminar paquetes de la base de datos, excepto si el nombre del paquete se especifica con el siguiente comando.
 +
 
 +
$ 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 {{ic|pacman.conf}} para cada sistema que usará el repositorio. Un ejemplo de repositorio personalizado está en {{ic|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 {{ic|file://}} url, o por FTP usando ftp://localhost/path/to/directory.
 +
 
 +
Si lo desea, añada el repositorio personalizado al directorio [[Unofficial user repositories|list of unofficial user repositories]], para que la comunidad pueda beneficiarse de ello.
 +
 
 +
=== Caché de pacman compartida en red ===
 +
 
 +
Si ejecuta varios Arch boxes 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 primera 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.Solo agregue este servidor en la parte superior de su {{ic|/etc/pacman.d/mirrorlist}} in client machines with {{ic|1=Server = http&#58;//mymirror:8080}}.Asegúrese de mantener su réplica actualizada .
 +
 
 +
==== Distribución de caché de solo lectura ====
 +
 
 +
Existen herramientas específicas de Arch para descubrir automáticamente otros equipos de la red que ofrecen una caché de paquetes. Intente [[pacserve]], {{AUR|pkgdistcache}}, o {{AUR|paclan}}. 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, hubo [https://bbs.archlinux.org/viewtopic.php?id=64391 PkgD] y [https://github.com/toofishes/multipkg multipkg], pero ya no se mantienen.
 +
 
 +
==== Caché de lectura y escritura ====
 +
 
 +
Para compartir paquetes entre varios equipos, simplemente comparta {{ic|/var/cache/pacman/}} utilizando cualquier protocolo de montaje basado en red. Esta sección muestra cómo usar [[shfs]] o [[SSHFS]] 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: {{pkg|shfs-utils}}, {{pkg|sshfs}}, {{pkg|curlftpfs}}, {{pkg|samba}} or {{pkg|nfs-utils}}.
 +
 
 +
{{Sugerencia|
 +
* Para usar ''sshfs'' o ''shfs'', considere leer [[Using SSH Keys]].
 +
* 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 función {{ic|mapchars}} opción de montaje en el cliente.
 +
}}
 +
 
 +
Luego, para compartir los paquetes actuales, monte {{ic|/var/cache/pacman/pkg}} del servidor a {{ic|/var/cache/pacman/pkg}} en cada máquina cliente
 +
 
 +
{{Nota|No haga {{ic|/var/cache/pacman/pkg}} ni a ninguno de sus antecesores (e.g., {{ic|/var}}) un enlace simbólico ''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 {{bug|50298}} para más detalles.}}
 +
 
 +
==== de doble sentido con rsync ====
 +
 
 +
Otro enfoque en un entorno local es [[rsync]]. Elija un servidor para el almacenamiento en caché y active el [[Rsync#rsync daemon]]. 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 {{ic|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é de proxy inverso dinámico usando nginx ====
 +
 
 +
[[nginx]] puede utilizarse para realizar peticiones proxy a las réplicas ascendentes oficiales y almacenar los resultados en caché en el disco local. Todas las solicitudes posteriores de ese archivo se servirán directamente desde la caché local, lo que minimiza la cantidad de tráfico de Internet necesario para actualizar un gran número de servidores con el mínimo esfuerzo.
 +
 
 +
{{Advertencia| Este método tiene una limitación. Debe usar réplicas que usan la misma ruta relativa a los archivos del paquete y debe configurar su caché para usar esa misma ruta. En este ejemplo, estamos usando réplicas que usan la ruta relativa {{ic|/archlinux/$repo/os/$arch}} y la configuración de nuestro {{ic|Server}} en {{ic|mirrorlist}} está configuradara de forma similar.}}
  
De acuerdo, su archivo '/var/log/pacman.log' existe. ¿Va a continuar?
+
En este ejemplo, ejecutaremos el servidor de caché en {{ic|<nowiki>http://cache.domain.local:8080/</nowiki>}} y almacenaremos los paquetes en {{ic|/srv/http/pacman-cache/}}.  
  
*cree el archivo 'pkglist.sh'.
+
Cree el directorio para la memoria caché y ajuste los permisos para que nginx pueda escribir archivos en ella:
  
[root@linuxbox]# touch pkglist.sh
+
  # mkdir /srv/http/pacman-cache
+
  # chown http:http /srv/http/pacman-cache
*Copie y pegue las líneas siguientes en su archivo 'pkglist.sh'.
 
  
#!/bin/bash
+
A continuación, configure nginx como la opción [https://gist.github.com/anonymous/97ec4148f643de925e433bed3dc7ee7d dynamic cache] (lea los comentarios para una explicación de los comandos).
#
 
SEDEXP='s/^\[[^ ]* *[0-9][0-9]:[0-9][0-9]\] \([^ ]*\) *\([^ ]*\) .*/\1 \2/'
 
GRPEXP='(upgraded)|(installed)'
 
AWKEXP='{print $2}'
 
#
 
sed -e "$SEDEXP" /var/log/pacman.log | grep -E "$GRPEXP" | awk "$AWKEXP" | sort -u
 
# End
 
  
Gracias a 'rdt' https://bbs.archlinux.org/viewtopic.php?id=38531
+
Finalmente, actualice sus otros servidores Arch Linux para usar esta nueva caché agregando la siguiente línea al archivo {{ic|mirrorlist}}:
 +
{{hc|/etc/pacman.d/mirrorlist|<nowiki>
 +
Server = http://cache.domain.local:8080/archlinux/$repo/os/$arch
 +
...
 +
</nowiki>}}
  
grabe y salga.
+
{{Nota| Habrá que crear un método para borrar paquetes viejos, ya que este directorio continuará creciendo con el tiempo. {{ic|paccache}} (que se incluye con ''pacman'') se puede utilizar para automatizarlo , utilizando criterios de retención de su elección. Por ejemplo, {{ic|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 de caché.}}
  
*Haga al archivo 'pkglist.sh' ejecutable.
+
==== Sincronice la memoria caché de ''pacman'' utilizando programas de sincronización ====
  
[root@linuxbox]# chmod 744 pkglist.sh
+
Use [[Resilio Sync]] o [[Syncthing]] para sincronizar las carpetas de la caché de "pacman" (i.e. {{ic|/var/cache/pacman/pkg}}).
 
*Ahora ejecute 'pklglist.sh' y redireccione la salida a 'pkglist'.
 
  
[root@linuxbox]# ./pkglist.sh > pkglist
+
==== Prevención de limpiezas de caché no deseadas ====
 
*'pkglist' conendrá ahora una lista de todo el software que instaló o actualizó. Edite 'pkglist' y elimine todo lo que no quiera reinstalar. Usted podría querer hacer esto si por ejemplo constryó un paquete personalizado y lo instaló con 'abs'.
 
  
[root@linuxbox]# vi pkglist
+
Por defecto, {{Ic|pacman -Sc}} elimina los paquetes tarballs de la caché que corresponden a paquetes que no están instalados en la máquina en la que se emitió el comando. Dado que "pacman" no puede predecir qué paquetes están instalados en todos los equipos que comparten la caché, acabará eliminando archivos que no deberían estarlo.
 
*Una vez esté satisfecho con el contenido de 'pkglist', puede utilizarlo para reinstalar su software, y restaurar '/var/lib/pacman/local'.
 
  
No hay ninguna necesidad de comprobar las dependencias, y tiene que 'forzar' la instalación dado que los programas ya existen.
+
Para limpiar la caché de forma que sólo se eliminen los tarballs ''obsoletos'', añada esta entrada en el archivo {{ic|[options]}} en la sección de {{ic|/etc/pacman.conf}}:
  
  [root@linuxbox]# pacman -Sdf `cat pkglist`
+
  CleanMethod = KeepCurrent
 
Pacman le presentará ahora una larga lista de software que va a ser instalado. Diga 'yes' y espere a que termine pacman.
 
  
* Finalmente, necesitará descubrir todos los archivos de configuración que han cambiado. Puede hacer esto actualizando primero la base de datos 'locate'.
+
=== Reconstituir un paquete del sistema de archivos ===
  
[root@linuxbox]# updatedb
+
Para reconstituir un paquete desde el sistema de archivos, use '' bacman '' (incluido con '' pacman ''). 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; ver [[ABS]] y [[Arch Linux Archive]] para las alternativas.
  
* Ahora puede buscar todos los archivos de configuración que hayan cambiado.
+
{{Sugerencia|''bacman'' respeta las opciones de {{ic|PACKAGER}}, {{ic|PKGDEST}} y {{ic|PKGEXT}} de {{ic|makepkg.conf}}. Las opciones personalizadas para las herramientas de compresión se pueden configurar exportando la variable de entorno relevante, por ejemplo {{ic | 1 = XZ_OPT = "- T 0"}} habilitará la compresión paralela para '' xz ''.}}
  
[root@linuxbox]# locate pacorig
+
Una herramienta alternativa sería {{AUR|fakepkg}}. Es compatible con la paralelización y puede manejar múltiples paquetes de entrada en un comando, lo que '' bacman '' no soporta.
  
Esto le dará una lista de todos los archivos de configuración que han sido reemplazados. Su archivo original tendrá la extensión '.pacorig'. Borre los nuevos archivos, y renombre los archivos '.pacorig' para restaurar su configuración inicial para cada paquete de software que pueda estar afectado. Pueden haber cambido también algunos permisos de directorio. Compruebe esto si algo se niega a arrancar.
+
=== Lista de paquetes instalados ===
  
Felicidades, acaba de restaurar con éxito su base de datos local de pacman.
+
Mantener una lista de paquetes instalados explícitamente puede ser útil para acelerar la instalación en un nuevo sistema:
  
{{Merge|Pacman Tips (Español)}}
+
$ pacman -Qqe > pkglist.txt
== Coloriando la salida de pacman ==
 
Ahora que makepkg tiene una salida colorizada, por qué no pacman también? El administrador de paquetes en [http://www.gentoo.org/ Gentoo] llamado 'portage' usa colores ampliamente, y como pueden ver en esta [http://gentoo-portage.com/up_img/1026.png screenshot], se mejora enormemente la legibilidad.
 
  
==== Scripts ====
+
{{Nota|Si se usó la opción {{ic | -t}} al reinstalar la lista, todos los paquetes que no sean de nivel superior se establecerán como dependencias. Con la opción {{ic | -n}}, los paquetes externos (por ejemplo, de AUR) se omitirán de la lista.}}
El usuario citral usa el siguiente script en su .bashrc:
 
  
alias pacs="pacsearch"
+
Para instalar paquetes de la copia de seguridad de la lista, ejecute:
pacsearch () {
 
        echo -e "$(pacman -Ss $@ | sed \
 
        -e 's#core/.*#\\033[1;31m&\\033[0;37m#g' \
 
        -e 's#extra/.*#\\033[0;32m&\\033[0;37m#g' \
 
        -e 's#community/.*#\\033[1;35m&\\033[0;37m#g' \
 
        -e 's#^.*/.* [0-9].*#\\033[0;36m&\\033[0;37m#g' )"
 
}
 
  
Que es la solución más limpia. Sin embargo, si deseas un script para todo el sistema, ejecuta '''como root''':
+
# pacman -S - < pkglist.txt
  touch /usr/bin/pacs && chmod 755 /usr/bin/pacs
 
  
y copia esto dentro de /usr/bin/pacs también como root:
+
{{Sugerencia|
  #!/bin/bash
+
* Para omitir los paquetes ya instalados, use {{ic|--needed}}.
  echo -e "$(pacman -Ss $@ | sed \
+
* Use {{ic|<nowiki>comm -13 <(pacman -Qqdt | sort) <(pacman -Qqdtt | sort) > optdeplist.txt</nowiki>}} para crear también una lista de las dependencias opcionales instaladas que se pueden reinstalar con {{ic|--asdeps}}.
  -e 's#core/.*#\\033[1;31m&\\033[0;37m#g' \
+
}}
  -e 's#extra/.*#\\033[0;32m&\\033[0;37m#g' \
 
  -e 's#community/.*#\\033[1;35m&\\033[0;37m#g' \
 
  -e 's#^.*/.* [0-9].*#\\033[0;36m&\\033[0;37m#g' )"
 
  
Puedes sustituir "pacs" en esas lineas por lo que quieras. Puedes crear tambien un alias de "pacs" por otra cosa en tu .bashrc, como se hizo antes..
+
En caso de que la lista incluya paquetes externos, como paquetes [[AUR]], quítelos primero:
  
El uso de estos comandos es muy sencillo; solo usa tu nuevo comando en vez de 'pacman', el resto sigue siendo lo mismo!
+
# pacman -S $(comm -12 <(pacman -Slq | sort) <(sort pkglist.txt))
  
==== Alternativas ====
+
Para eliminar todos los paquetes en su sistema que no se mencionan en la lista:
  
Una alternativa es usar este script en python, que emula la salida de pacman -Ss (con colores!) pero obtiene la lista de paquetes eso si desde el sitio web. Busca los repositorios oficiales y AUR (las dos community y unsupported).
+
# pacman -Rsu $(comm -23 <(pacman -Qq | sort) <(sort pkglist.txt))
  
#!/usr/bin/python
+
{{Sugerencia|Estas tareas pueden ser automatizadas. Consulte {{AUR|bacpac}}, {{AUR|packup}}, {{AUR|pacmanity}} y {{AUR|pug}} por ejemplo.}}
 +
 
 +
Si desea mantener una lista actualizada de los paquetes explícitamente instalados (e.g. en combinación con una versión {{ic|/etc/}}), puede configurar un [[Pacman#Hooks|hook]]. Ejemplo:
 +
 
 +
[Trigger]
 +
Operation = Install
 +
Operation = Remove
 +
Type = Package
 +
Target = *
 
   
 
   
  import os
+
  [Action]
  import re
+
  When = PostTransaction
  import sys
+
  Exec = /bin/sh -c '/usr/bin/pacman -Qqe > /etc/packages.txt'
  import urllib2
+
 
 +
=== Listado de 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 {{Pkg|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 {{ic|mtree}} también pueden ser [[#Visualización de un único archivo dentro de un .pkg|extraído como {{ic|.MTREE}} de los respectivos archivos del paquete]].
 +
 
 +
{{Nota|¡Esto '' no '' debe usarse cuando se sospeche de cambios maliciosos! En este caso, se recomiendan precauciones de seguridad, como usar un medio en vivo o una fuente independiente para las sumas de hash.}}
 +
 
 +
=== Reinstalar todos los paquetes ===
 +
Para reinstalar todos los paquetes originales, use:
 +
 
 +
# pacman -Qnq | pacman -S -
 +
 
 +
Los paquetes externos (AUR) deben reinstalarse por separado; puede listarlos con {{ic|pacman -Qmq}}.
 +
 
 +
''Pacman'' conserva el [[installation reason|Motivo de la instalación]] por defecto.
 +
 
 +
=== Restaurar la base de datos local de pacman ===
 +
 
 +
Véase [[Pacman/Restore local database]].
 +
 
 +
=== Recuperar una memoria USB desde la instalación existente ===
 +
 
 +
Si tiene Arch instalado en una memoria USB y se las arregla para estropearlo ( 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 {{ic|/newarch}})
 +
 
 +
# pacman -S $(pacman -Qq --dbpath /newarch/var/lib/pacman) --root /newarch --dbpath /newarch/var/lib/pacman
 +
 
 +
=== Visualización de un único archivo dentro de un .pkg ===
 +
 
 +
Por ejemplo, si desea ver el contenido de {{ic|/etc/systemd/logind.conf}} suministrado dentro del paquete {{Pkg|systemd}}:
 +
 
 +
  $ tar -xOf /var/cache/pacman/pkg/systemd-204-3-x86_64.pkg.tar.xz etc/systemd/logind.conf
 +
 
 +
O puede usar {{pkg|vim}} para explorar el archivo:
 +
 
 +
$ vim /var/cache/pacman/pkg/systemd-204-3-x86_64.pkg.tar.xz
 +
 
 +
=== Buscar aplicaciones que usan bibliotecas de paquetes 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.
 +
 
 +
== Optimización == 
 +
 
 +
=== Velocidades de acceso a la base de datos ===
 
   
 
   
OFFICIAL_QUERY = "https://archlinux.org/packages/search/\?q="
+
''Pacman'' almacena toda la información del los paquetes en una colección de archivos pequeños, uno por cada paquete. La mejora de las velocidades de acceso a la base de datos reduce el tiempo necesario en las tareas relacionadas con esta, por ejemplo, buscar paquetes y resolver las dependencias. El método más seguro y fácil es ejecutarlo como root:  
AUR_QUERY = "https://aur.archlinux.org/packages.php?K="
+
 
 +
  # pacman-optimize
 +
 
 +
Esto intentará poner todos los archivos pequeños juntos en una ubicación (física) en el disco duro para que la cabeza del disco no tenga que moverse tanto al acceder a todos los datos. Este método es seguro, pero no es infalible, depende del sistema de archivos, el uso del disco y la fragmentación del espacio vacío. Otra opción más agresiva sería eliminar primero los paquetes desinstalados de la caché y eliminar los repositorios no utilizados antes de la optimización de la base de datos:
 +
 
 +
  # pacman -Sc && pacman-optimize
 +
 
 +
=== Velocidades de descarga ===
 +
 
 +
{{Nota| Si las velocidades de descarga se han reducido , asegúrese de que está utilizando uno de los muchos [[mirrors]] y no ftp.archlinux.org, que está saturado desde marzo de 2007.}}
 
   
 
   
# Repos and colors
+
Al descargar paquetes ''pacman'' usa los ''mirrors'' en el orden en que están en {{ic|/etc/pacman.d/mirrorlist}} .Sin embargo los ''mirrors'' que está en la parte superior de la lista , pueden no ser los más rápido para usted. Para seleccionar los ''mirrors'' más rápidos, consulte [[Mirrors]].
repos = {"Core":'32',"Extra":'36',"Testing":'31',"community":'33',"unsupported":'35'}
 
 
   
 
   
def strip_html(buffer):
+
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''.
    <nowiki>buffer = re.sub('<[^>]*>','',buffer)</nowiki>
 
    <nowiki>buffer = re.sub('(?m)^[ \t]*','',buffer)</nowiki>
 
    return buffer
 
 
   
 
   
def cut_html(beg,end,buffer):
+
En todos los casos, asegúrese de tener la última ''pacman'' antes de hacer cualquier modificación.
    <nowiki>buffer = re.sub('(?s).*' + beg,'',buffer)</nowiki>
 
    <nowiki>buffer = re.sub('(?s)' + end + '.*','',buffer)</nowiki>
 
    return buffer
 
 
   
 
   
class RepoSearch:
+
  # pacman -Syu
    def __init__(self,keyword):
+
 
        self.keyword = keyword
+
==== Powerpill ====
        <nowiki>self.results = ''</nowiki>
+
 
        for name in ['official','aur']:
+
[[Powerpill]] es un envoltorio de Pacman que utiliza la descarga paralela y segmentada para tratar de acelerar las descargas de Pacman.
            self.get_search_results(name)
+
 
            self.parse_results(name)
+
==== Wget ====
        self.colorize()
+
 
+
Esto también es muy útil si necesita configuraciones proxy más potentes que las capacidades incorporadas de ''pacman''.
    def get_search_results(self,name):
+
 
        if name == "official":
+
Para usar {{ic|wget}} , primero instale el paquete {{Pkg|wget}} y luego modifique {{ic|/etc/pacman.conf}} descomentando la siguiente línea en la sección {{ic|[options]}} :  
            query = OFFICIAL_QUERY
+
  XferCommand = /usr/bin/wget --passive-ftp -c -O %o %u
        elif name == "aur":
+
 
            query = AUR_QUERY
+
En lugar de descomentar los parámetros de {{ic|wget}} en {{ic|/etc/pacman.conf}} , también puede modificar el archivo de configuración de {{ic|wget}} directamente , el archivo de todo el sistema es {{ic|/etc/wgetrc}} o por usuario , el archivo es {{ic|$HOME/.wgetrc}} .
+
 
        f = urllib2.urlopen( query + self.keyword )
+
==== Aria2  ====
        self.search_results = f.read()
+
 
        f.close()
+
[[aria2]] es una utilidad de descarga de peso ligero 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 ''mirror'' de Arch, lo que debería dar como resultado un aumento en las velocidades de descarga para la recuperación de archivos y paquetes.  
+
 
    def preformat(self,header,a,b):
+
{{Nota| El uso de aria2c en XferCommand de ''pacman'' ''no'' dará lugar a descargas paralelas de varios paquetes. Pacman invoca el XferCommand con un solo paquete a la vez y espera a que se complete antes de invocar el siguiente. Para descargar varios paquetes en paralelo, consulte [[Powerpill]].}}
        <nowiki>self.buffer = cut_html('<table class=\"' + header + '\"[^>]*>','</table',self.search_results)</nowiki>
 
        self.buffer = strip_html(self.buffer)
 
        self.buffer = self.buffer.split('\n')
 
        self.buffer = [line for line in self.buffer if line]
 
        del self.buffer[a:b]
 
 
    def parse_results(self,name):
 
        <nowiki>self.buffer = ''</nowiki>
 
        if name == 'official':
 
            <nowiki>if re.search('<table class=\"results\"',self.search_results):</nowiki>
 
                self.preformat('results',0,6)
 
            <nowiki>elif re.search('<div class=\"box\">',self.search_results):</nowiki>
 
                <nowiki>temp = re.search('<h2 class=\"title\">([^<]*)</h2>',self.search_results)</nowiki>
 
                temp = temp.group(1)
 
                temp = temp.split()
 
                self.preformat('listing',7,-1)
 
                for i in range(0,3): del self.buffer[i]
 
                for i in temp: self.buffer.insert(temp.index(i) + 2,i)
 
 
        elif name == 'aur':
 
            <nowiki>p = re.compile('<td class=.data[^>]*>')</nowiki>
 
            self.buffer = self.search_results.split('\n')
 
            self.buffer = [strip_html(line) for line in self.buffer if p.search(line)]
 
 
        l = len(self.buffer)/6
 
        <nowiki>parsed_buf = ''</nowiki>
 
 
        for i in range(l):
 
            parsed_buf += self.buffer[i*6] + '/'
 
            parsed_buf += self.buffer[i*6+1] + ' '*(24-len(self.buffer[i*6] + self.buffer[i*6+1]))
 
            parsed_buf += self.buffer[i*6+2]
 
            if name == "official":
 
                parsed_buf += ' ' + self.buffer[i*6+3]
 
            parsed_buf += '\n' + self.buffer[i*6+4] + '\n'
 
 
        self.results += parsed_buf
 
 
    def colorize(self):
 
        for repo,repo_color in repos.iteritems():
 
            <nowiki>self.results = re.sub(repo + '/.*','\\033[1;' + repo_color + 'm' + '\g<0>' + '\\033[0;0m',self.results)</nowiki>
 
 
if __name__ == "__main__":
 
    if len(sys.argv) < 2:
 
        print "Usage: " + sys.argv[0] + " <keyword>"
 
        sys.exit(2)
 
    reposearch = RepoSearch(sys.argv[1])
 
    sys.stdout.write(reposearch.results)
 
  
==== Usando 'acoc' ====
+
Instale {{Pkg|aria2}} y luego edite {{ic|/etc/pacman.conf}} agregando la siguiente línea a la sección {{ic|[options]}} :
Hay otra, una posibilidad más general de colorear arbitrariamente la salida de los comandos.
+
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
Puedes descargar la pequeña herramienta en [http://www.ruby-lang.org/en/ Ruby], llamada [http://raa.ruby-lang.org/project/acoc/ acoc] (y sus dependencias, [http://raa.ruby-lang.org/project/ansicolor/ term-ansicolor] y [http://raa.ruby-lang.org/cache/ruby-tpty/ tpty]. ).
 
tpty no es realmente requerida, pero algunas aplicaciones como "ls" no funcionan con acoc (necesitan ser iniciadas en la terminal (o pseudo terminal, en este caso), o bien se comportarán diferente).
 
  
La instalación es relativamente fácil, aquí hay un paseo rápido:
+
{{Sugerencia|1=[https://bbs.archlinux.org/viewtopic.php?pid=1491879#p1491879 Esta configuración alternativa para usar ''pacman'' con aria2] intenta simplificar la configuración y añade más opciones de configuración.}}
  
$ tar xvzf tpty-0.0.1.tar.gz
+
Vea [http://aria2.sourceforge.net/manual/en/html/aria2c.html#options OPTIONS] en {{man|1|aria2c}} para usar las configuraciones de aria2.  
  $ cd tpty-0.0.1
+
   
$ ruby extconf.rb
+
* {{ic|-d, --dir}}: El directorio para almacenar los archivo(s) descargado según lo especificado por ''pacman'' .  
$ make
+
* {{ic|-o, --out}}: El nombre(s) de archivo(s) de salida descargado(s).  
$ ruby ./test.rb
+
* {{ic|%o}}: Variable que representa el nombre(s) de archivo(s) local especificado por ''pacman''.  
# make install
+
* {{ic|%u}}: Variable que representa la URL de descarga especificada por ''pacman''.
  
$ tar xvzf term-ansicolor-1.0.1.tar.gz
+
==== Otras aplcaciones ====
$ cd term-ansicolor-1.0.1
 
# ruby install.rb
 
  
Y ahora acoc en si:
+
Hay otras aplicaciones de descarga que puede usar con '' pacman ''. Aquí están, y su configuración asociada de XferCommand
 +
:
  
$ tar xvzf acoc-0.7.1.tar.gz
+
* {{ic|snarf}}: {{ic|1=XferCommand = /usr/bin/snarf -N %u}}
$ cd acoc-0.7.1
+
* {{ic|lftp}}: {{ic|1=XferCommand = /usr/bin/lftp -c pget %u}}
# make install
+
* {{ic|axel}}: {{ic|1=XferCommand = /usr/bin/axel -n 2 -v -a -o %o %u}}
 +
* {{ic|hget}}: {{ic|1=XferCommand = /usr/bin/hget %u -n 2 -skip-tls false}} (por favor lea [https://github.com/huydx/hget documentation on the Github project page] for para mas información)
  
Ahora, solo lee la sección "Advanced Installation" en el archivo INSTALL de acoc, y configura acoc como se te plazca.
+
== Utilidades ==
Crea un enlace para 'pacman' también, ya que es principalmente para eso que lo estamos haciendo.
 
Una vez ejecutes acoc, puedes añadir estas lineas a tu acoc.conf:
 
  
[pacman -Si]
+
* {{App|Lostfiles|Script que identifica archivos que no son propiedad de ningún paquete.|https://github.com/graysky2/lostfiles|{{AUR|lostfiles}}}}
/^Name\s+:\s([\w.-]+)/                             bold
+
* {{App|Pacmatic|Envoltura de ''Pacman'' para comprobar notícias de Arch antes de la actualización, evitar actualizaciones parciales y advertir sobre cambios en el archivo de configuración.|http://kmkeen.com/pacmatic|{{Pkg|pacmatic}}}}
[pacman -Qi]
+
* {{App|pacutils|Biblioteca de ayuda para programas basados en libalpm.|https://github.com/andrewgregory/pacutils|{{Pkg|pacutils}}}}
  /^Name\s+:\s([\w.-]+)/                             bold
+
* {{App|[[pkgfile]]|Es una herramienta para buscar ficheros en paquetes.|http://github.com/falconindy/pkgfile|{{Pkg|pkgfile}}}}
[pacman -Qi$]
+
* {{App|pkgtools|Colección de scripts para los paquetes de Arch Linux.|https://github.com/Daenyth/pkgtools|{{AUR|pkgtools}}}}
/^([\w.-]+)\s([\w.-]+)/                 bold,clear
+
* {{App|repoctl|Herramienta para ayudar a gestionar repositorios locales.
[pacman -Ss]
+
|https://github.com/cassava/repoctl|{{AUR|repoctl}}}}
/^([\w.-]+)\/([\w.-]+)\s+([\w.-]+)/     clear,bold,clear
+
* {{App|repose|Una herramienta de construcción de repositorios Arch Linux.|https://github.com/vodik/repose|{{Pkg|repose}}}}
[pacman -Qs]
+
* {{App|[[Snapper#Wrapping_pacman_transactions_in_snapshots|snap-pac]]|Haga que ''pacman'' utilice automáticamente ''snapper'' para crear instantáneas previas y posteriores como YaST de openSUSE.|https://github.com/wesbarnett/snap-pac|{{pkg|snap-pac}}}}
/^([\w.-]+)\/([\w.-]+)\s+([\w.-]+)/     clear,bold,clear
 
[pacman -Sl]
 
/^([\w.-]+)\s([\w.-]+)\s([\w.-]+)/             clear,bold,clear
 
[pacman -Qo]
 
/^([\w.-\/]+)\sis\sowned\sby\s([\w.-]+)\s([\w.-]+)/     clear,bold,clear
 
[pacman -Qe$]
 
/^([\w.-]+)\s([\w.-]+)/                 bold,clear
 
[pacman -Qg$]
 
/^([\w.-]+)\s([\w.-]+)/                clear,bold
 
  
Puede no ser perfecto, o particulármente bonito, pero por lo menos funciona bien para mí.
+
=== Front-ends gráficos ===
Las lineas de arriba solo hacen que pacman imprima todos los nombres de los paquetes en negrita, que es particularmente útil en p.ej. "pacman -Ss xfce". Si lo que quieres son más colores, puedes modificar las lineas a tu gusto.
 
Lee la documentación de acoc contenida en la paquete con las fuentes del programa para más información.
 
  
==== Links ====
+
{{Advertencia|1=Algunos front-ends como {{AUR|octopi}} [https://github.com/aarnt/octopi/issues/134#issuecomment-142099266] or {{AUR|pamac-aur}} [https://github.com/manjaro/pamac/blob/master/data/systemd/pamac-mirrorlist.service#L9] realizan [[partial upgrade]]s periódicamente.}}
[https://bbs.archlinux.org/viewtopic.php?t=12430&postdays=0&postorder=asc&start=15 Forum thread]
 
  
==== Alternativa ====
+
* {{App|1=Aarchup|2=Fork de archup. Tiene las mismas opciones que ''archup'' más algunas otras características. Para las diferencias entre ambos, compruebe [https://bbs.archlinux.org/viewtopic.php?id=119129 changelog].|3=https://github.com/aericson/aarchup/|4={{AUR|aarchup}}}}
En AUR está disponible un [https://aur.archlinux.org/packages.php?do_Details=1&ID=11827 PKGBUILD] con el parche para los colores para pacman de Vogo.
+
* {{App|Arch-Update|Indicador de actualización para Gnome-Shell.|https://github.com/RaphaelRochet/arch-update|{{AUR|gnome-shell-extension-arch-update}}}}
 +
* {{App|Arch-Update-Notifier| Indicador de actualización para KDE.|https://github.com/I-Dream-in-Code/kde-arch-update-plasmoid|{{AUR|plasma5-applets-kde-arch-update-notifier-git}}}}
 +
* {{App|Discover|Una colección de herramientas de administración de paquetes para KDE, utilizando PackageKit.|https://projects.kde.org/projects/kde/workspace/discover|{{Pkg|discover}}}}
 +
* {{App|GNOME packagekit|Herramienta de gestión de paquetes basada en GTK.|http://www.freedesktop.org/software/PackageKit/|{{Pkg|gnome-packagekit}}}}
 +
* {{App|GNOME Software|Gnome Software App. (Selección conservada por GNOME)|https://wiki.gnome.org/Apps/Software|{{pkg|gnome-software}}}}
 +
* {{App|kalu|Una pequeña aplicación que agregará un ícono a su bandeja de sistema, verificando regularmente si hay nuevas actualizaciones.|https://jjacky.com/kalu/|{{aur|kalu}}}}
 +
* {{App|pcurses|Gestión de paquetes en una interfaz de curses|https://github.com/schuay/pcurses|{{Pkg|pcurses}}}}
 +
* {{App|1=PkgBrowser|2=Aplicación para buscar y explorar paquetes de Arch, muestra detalles sobre paquetes seleccionados.|3=https://bitbucket.org/kachelaqa/pkgbrowser/wiki/Home|4={{AUR|pkgbrowser}}}}
 +
* {{App|tkPacman|Depende solo de Tcl/Tk y X11, e interactúa con la base de datos del paquete a través de la CLI de ''pacman''.|http://sourceforge.net/projects/tkpacman|{{AUR|tkpacman}}}}

Latest revision as of 19:31, 1 May 2018

Para métodos generales para mejorar la flexibilidad de las sugerencias proporcionadas o del propio pacman, consulte Core utilities y Bash.

Contents

Mantenimiento

Nota: En lugar de utilizar comm (que requiere una entrada ordenada con sort) en las secciones siguientes, también puede utilizar grep -Fxf o grep -Fxvf.

Véase también System maintenance.

Listando 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 todos los paquetes explícitamente instalados: pacman -Qe.
  • Lista 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): pacman -Qm.
  • Lista de todos los paquetes originales (instalados desde la (s) base de datos de sincronización): pacman -Qn .
  • Lista de paquetes por regex: pacman -Qs regex .
  • Lista de paquetes por regex con formato de salida personalizado: expac -s "%-30n %v" regex (necesita expac).

Por tamaño

Para obtener una lista de paquetes instalados ordenados por tamaño, lo que puede ser útil para liberar espacio en su disco duro:

  • Instalar expac y ejecutar expac -H M '%m\t%n' | sort -h.
  • Ejecute pacgraph con la opción -c .

Para crear un listado de paquetes y su tamaño (deje packages en blanco para listar todos los paquetes):

 $ expac -S -H M '%k \ t%n' packages

Para listar los paquetes explícitamente instalados que no están en base ni en base-devel con 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

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 especificado en un grupo o repositorio

Nota: Para obtener una lista de paquetes instalados como dependencias pero que ya no son necesarios para ningún paquete instalado, consulte #Eliminación de paquetes no utilizados (huérfanos).

Lista los paquetes explícitamente instalados que no están en los grupos de base o base-devel :

 $ comm -23 <(pacman -Qeq | sort) <(pacman -Qgq base base-devel | sort)

Lista de todos los paquetes instalados no requeridos por otros paquetes y que no estén en los grupos de base o de 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))

Lista todos los paquetes instalados que no están en el repositorio especificado repo_name

 $ comm -23 <(pacman -Qtq | sort) <(pacman -Slq repo_name | sort)

Liste todos los paquetes instalados que están en el repositorio repo_name :

 $ comm -12 <(pacman -Qtq | sort) <(pacman -Slq repo_name | sort)

Lista todos los paquetes en Arch Linux ISO que no están en el grupo base:

$ comm -23 <(wget -q -O - https://git.archlinux.org/archiso.git/plain/configs/releng/packages.both) <(pacman -Qqg base | sort)

Paquetes en desarrollo

Para listar todos lo paquetes development/unstable , ejecute:

$ pacman -Qq | awk '/^.+(-cvs|-svn|-git|-hg|-bzr|-darcs)$/'

Listado de archivos propiedad de un paquete , ordenado por 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 administrador de paquetes para instalar software), es posible que desee encontrar dichos archivos para limpiarlos. El proceso general para hacerlo es:

  1. Crear una lista ordenada de los archivos que desea verificar los propietarios:
    $ find /etc /opt /usr | sort > all_files.txt
  1. Crear una lista ordenada de los archivos rastreados por pacman (y elimina las barras diagonales de los directorios):
    $ pacman -Qlq | sed 's|/$||' | sort > owned_files.txt
  1. Encuentra líneas en la primera lista que no están en el segundo:
    $ comm -23 all_files.txt owned_files.txt

En la práctica, este proceso es complicado porque muchos archivos importantes no forman parte de ningún paquete (por ejemplo, archivos generados en tiempo de ejecución, configuraciones personalizadas), por lo que se incluirán en el resultado final, lo que dificulta seleccionar los archivos que pueden eliminarse de manera segura.

Tip: El lostfilesAUR script realiza pasos similares, pero también incluye una extensa lista negra para eliminar falsos positivos comunes de la salida. aconfmgr (aconfmgr-gitAUR) también permite rastrear archivos huérfanos usando una secuencia de comandos de configuración.

Eliminación de paquetes no utilizados (huérfanos)

Para eliminar de forma recursiva los 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.

Note: Los argumentos -Qt enumeran sólo huérfanos verdaderos. Para incluir paquetes que son opcionalmente requeridos por otro paquete, pase el indicador -t dos veces (i.e., -Qtt).

Eliminar todo menos el grupo base

Si alguna vez es necesario eliminar todos los paquetes, excepto el grupo base, pruebe esta sola linea:

# pacman -R $(comm -23 <(pacman -Qq | sort) <((for i in $(pacman -Qqg base); do pactree -ul "$i"; done) | sort -u))

Esta única linea fue originalmente concebida en esta conversación, y posteriormente mejorada en este artículo.

Obtener la lista de dependencias de varios paquetes

Las dependencias se ordenan alfabéticamente y las repetidas se eliminan.

Nota: Para mostrar solo el árbol de paquetes locales instalados, use pacman -Qi.
$ 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

Listado de 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 sólo le interesan los ficheros que ha modificado. Los archivos de copias de seguridad se puede ver con el siguiente comando:

# pacman -Qii | awk '/^MODIFIED/ {print $2}'

Ejecutar este comando con permisos de root asegurará que los archivos sólo pueden ser leídos por root (por ejemplo /etc/sudoers) están incluidos en la salida.

Sugerencia: Mire #Listado de todos los archivos modificados de los paquetes para listar todos los archivos modificados que conoce pacman , no sólo los archivos de copia de seguridad.

Copia de seguridad de la base de datos de pacman

El siguiente comando 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 el archivo de base de datos de respaldo 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 el siguiente comando :

# tar -xjvf pacman_database.tar.bz2

{{Nota|Si los archivos de la base de datos pacman están dañados y no hay un archivo de respaldo disponible, existe la esperanza de reconstruir la base de datos pacman . Consultar Pacman/Restore local database.

Sugerencia: El paquete pakbak-gitAUR proporciona una secuencia de comandos y un servicio en systemd para automatizar la tarea. La configuración es posible en /etc/pakbak.conf.

Verifique 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 comando 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.

Instalación de paquetes desde un CD / DVD o dispositivo USB

Merge-arrows-2.pngThis article or section is a candidate for merging with #Repositorio local personalizado .Merge-arrows-2.png

Notes: Utilícelo como ejemplo y evite la duplicación (Discuss in Talk:Pacman/Tips and tricks (Español)#)

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 una dispositivo USB , disco duro externo HDD, etc.

Para instalar:

1. Montar los medios:

# mkdir /mnt/repo
# mount /dev/sr0 /mnt/repo    #For a CD/DVD.
# mount /dev/sdxY /mnt/repo   #For a USB stick.

2. Edite pacman.conf y agrege este repositorio antes de los otros (e.g. extra, core, etc.). Esto es importante. No se limite a descomentar el que está en la parte inferior. De esta manera se asegura de 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 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 más detalles sobre su uso. 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
Nota: Una base de datos de paquetes es un archivo tar, opcionalmente comprimido. Las extensiones válidas son .db o .files seguidas por una extensión de archivo de .tar , .tar.gz , .tar.bz2 , . tar.xz o .tar.z . No es necesario que exista el fichero, pero deben existir todos los directorios principales.

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
Advertencia: repo-add agrega las entradas a la base de datos en el mismo orden que se pasó en la línea de comando. Si se trata de varias versiones del mismo paquete, se debe tener cuidado para asegurarse de que se agregue la versión correcta al final. En particular, tenga en cuenta que el orden léxico utilizado por el shell depende de la configuración regional y difiere de la vercmp orden utilizado por pacman.

repo-remove se usa para eliminar paquetes de la base de datos, excepto si el nombre del paquete se especifica con el siguiente comando.

$ 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 list of unofficial user repositories, para que la comunidad pueda beneficiarse de ello.

Caché de pacman compartida en red

Si ejecuta varios Arch boxes 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 primera 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.Solo agregue este servidor en la parte superior de su /etc/pacman.d/mirrorlist in client machines with Server = http://mymirror:8080.Asegúrese de mantener su réplica actualizada .

Distribución de caché de solo lectura

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, hubo 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 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 or nfs-utils.

Sugerencia:
  • Para usar sshfs o shfs, considere leer Using SSH Keys.
  • 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 función mapchars opción de montaje 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

Nota: No haga /var/cache/pacman/pkg ni a ninguno de sus antecesores (e.g., /var) un enlace simbólico 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. Elija un servidor para el almacenamiento en caché y active el Rsync#rsync daemon. 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é de proxy inverso dinámico usando nginx

nginx puede utilizarse para realizar peticiones proxy a las réplicas ascendentes oficiales y almacenar los resultados en caché en el disco local. Todas las solicitudes posteriores de ese archivo se servirán directamente desde la caché local, lo que minimiza la cantidad de tráfico de Internet necesario para actualizar un gran número de servidores con el mínimo esfuerzo.

Advertencia: Este método tiene una limitación. Debe usar réplicas que usan la misma ruta relativa a los archivos del paquete y debe configurar su caché para usar esa misma ruta. En este ejemplo, estamos usando réplicas que usan la ruta relativa /archlinux/$repo/os/$arch y la configuración de nuestro Server en mirrorlist está configuradara de forma similar.

En este ejemplo, ejecutaremos el servidor de caché en http://cache.domain.local:8080/ y almacenaremos los paquetes en /srv/http/pacman-cache/.

Cree el directorio para la memoria caché y ajuste los permisos para que nginx pueda escribir archivos en ella:

 # mkdir /srv/http/pacman-cache
 # chown http:http /srv/http/pacman-cache

A continuación, configure nginx como la opción dynamic cache (lea los comentarios para una explicación de los comandos).

Finalmente, actualice sus otros servidores Arch Linux para usar esta nueva caché agregando la siguiente línea al archivo mirrorlist:

/etc/pacman.d/mirrorlist
Server = http://cache.domain.local:8080/archlinux/$repo/os/$arch
...
Nota: Habrá que crear un método para borrar paquetes viejos, ya que este directorio continuará creciendo con el tiempo. 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 de caché.

Sincronice la memoria caché de pacman utilizando programas de sincronización

Use Resilio Sync o Syncthing para sincronizar las carpetas de la caché de "pacman" (i.e. /var/cache/pacman/pkg).

Prevención de limpiezas de caché no deseadas

Por defecto, pacman -Sc elimina los paquetes tarballs de la caché que corresponden a paquetes que no están instalados en la máquina en la que se emitió el comando. Dado que "pacman" no puede predecir qué paquetes están instalados en todos los equipos que comparten la caché, acabará eliminando archivos que no deberían estarlo.

Para limpiar la caché de forma que sólo 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, use bacman (incluido con pacman ). 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; ver ABS y Arch Linux Archive para las alternativas.

Sugerencia: bacman respeta las opciones de PACKAGER, PKGDEST y PKGEXT de makepkg.conf. Las opciones personalizadas para las herramientas de compresión se pueden configurar exportando la variable de entorno relevante, por ejemplo XZ_OPT = "- T 0" habilitará la compresión paralela para xz .

Una herramienta alternativa sería fakepkgAUR. Es compatible con la paralelización y puede manejar múltiples paquetes de entrada en un comando, lo que bacman no soporta.

Lista de 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
Nota: Si se usó la opción -t al reinstalar la lista, todos los paquetes que no sean de nivel superior se establecerán como dependencias. Con la opción -n, los paquetes externos (por ejemplo, de AUR) se omitirán de la lista.

Para instalar paquetes de la copia de seguridad de la lista, ejecute:

# pacman -S - < pkglist.txt
Sugerencia:
  • Para omitir los paquetes ya instalados, use --needed.
  • Use comm -13 <(pacman -Qqdt | sort) <(pacman -Qqdtt | sort) > optdeplist.txt para crear también una lista de las dependencias opcionales instaladas que se pueden reinstalar con --asdeps.

En caso de que la lista incluya paquetes externos, como paquetes AUR, quítelos primero:

# pacman -S $(comm -12 <(pacman -Slq | sort) <(sort pkglist.txt))

Para eliminar todos los paquetes en su sistema que no se mencionan en la lista:

# pacman -Rsu $(comm -23 <(pacman -Qq | sort) <(sort pkglist.txt))
Sugerencia: Estas tareas pueden ser automatizadas. Consulte bacpacAUR, packupAUR, pacmanityAUR y pugAUR por ejemplo.

Si desea mantener una lista actualizada de los paquetes explícitamente instalados (e.g. en combinación con una versión /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/packages.txt'

Listado de 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.

Nota: ¡Esto no debe usarse cuando se sospeche de cambios maliciosos! En este caso, se recomiendan precauciones de seguridad, como usar un medio en vivo o una fuente independiente para las sumas de hash.

Reinstalar todos los paquetes

Para reinstalar todos los paquetes originales, use:

# pacman -Qnq | 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/Restore local database.

Recuperar una memoria USB desde la instalación existente

Si tiene Arch instalado en una memoria USB y se las arregla para estropearlo ( 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

Visualización de un único archivo dentro de un .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

Buscar aplicaciones que usan bibliotecas de paquetes 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.

Optimización

Velocidades de acceso a la base de datos

Pacman almacena toda la información del los paquetes en una colección de archivos pequeños, uno por cada paquete. La mejora de las velocidades de acceso a la base de datos reduce el tiempo necesario en las tareas relacionadas con esta, por ejemplo, buscar paquetes y resolver las dependencias. El método más seguro y fácil es ejecutarlo como root:

 # pacman-optimize

Esto intentará poner todos los archivos pequeños juntos en una ubicación (física) en el disco duro para que la cabeza del disco no tenga que moverse tanto al acceder a todos los datos. Este método es seguro, pero no es infalible, depende del sistema de archivos, el uso del disco y la fragmentación del espacio vacío. Otra opción más agresiva sería eliminar primero los paquetes desinstalados de la caché y eliminar los repositorios no utilizados antes de la optimización de la base de datos:

 # pacman -Sc && pacman-optimize

Velocidades de descarga

Nota: Si las velocidades de descarga se han reducido , asegúrese de que está utilizando uno de los muchos mirrors y no ftp.archlinux.org, que está saturado desde marzo de 2007.

Al descargar paquetes pacman usa los mirrors en el orden en que están en /etc/pacman.d/mirrorlist .Sin embargo los mirrors que está en la parte superior de la lista , pueden no ser los más rápido para usted. Para seleccionar los mirrors más rápidos, consulte Mirrors.

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 es un envoltorio 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 por usuario , el archivo es $HOME/.wgetrc .

Aria2

aria2 es una utilidad de descarga de peso ligero 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 mirror de Arch, lo que debería dar como resultado un aumento en las velocidades de descarga para la recuperación de archivos y paquetes.

Nota: El uso de aria2c en XferCommand de pacman no dará lugar a descargas paralelas de varios paquetes. Pacman invoca el XferCommand con un solo paquete a la vez y espera a que se complete antes de invocar el siguiente. Para descargar varios paquetes en paralelo, consulte Powerpill.

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
Sugerencia: Esta configuración alternativa para usar pacman con aria2 intenta simplificar la configuración y añade más opciones de configuración.

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) de archivo(s) de salida descargado(s).
  • %o: Variable que representa el nombre(s) de archivo(s) local especificado por pacman.
  • %u: Variable que representa la URL de descarga especificada por pacman.

Otras aplcaciones

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 (por favor lea documentation on the Github project page for para mas información)

Utilidades

  • Lostfiles — Script que identifica archivos que no son propiedad de ningún paquete.
https://github.com/graysky2/lostfiles || lostfilesAUR
  • Pacmatic — Envoltura de Pacman para comprobar notícias de Arch antes de la actualización, evitar actualizaciones parciales y advertir sobre cambios en el archivo de configuración.
http://kmkeen.com/pacmatic || pacmatic
  • pacutils — Biblioteca de ayuda para programas basados en libalpm.
https://github.com/andrewgregory/pacutils || pacutils
  • pkgfile — Es una herramienta para buscar ficheros en paquetes.
http://github.com/falconindy/pkgfile || pkgfile
  • pkgtools — Colección de scripts para los paquetes de Arch Linux.
https://github.com/Daenyth/pkgtools || pkgtoolsAUR
  • repoctl — Herramienta para ayudar a gestionar repositorios locales.
https://github.com/cassava/repoctl || repoctlAUR
  • repose — Una herramienta de construcción de repositorios Arch Linux.
https://github.com/vodik/repose || repose
  • snap-pac — Haga que pacman utilice automáticamente snapper para crear instantáneas previas y posteriores como YaST de openSUSE.
https://github.com/wesbarnett/snap-pac || snap-pac

Front-ends gráficos

Advertencia: Algunos front-ends como octopiAUR [1] or pamac-aurAUR [2] realizan partial upgrades periódicamente.
  • Aarchup — Fork de archup. Tiene las mismas opciones que archup más algunas otras características. Para las diferencias entre ambos, compruebe changelog.
https://github.com/aericson/aarchup/ || aarchupAUR
  • Arch-Update — Indicador de actualización para Gnome-Shell.
https://github.com/RaphaelRochet/arch-update || gnome-shell-extension-arch-updateAUR
  • Arch-Update-Notifier — Indicador de actualización para KDE.
https://github.com/I-Dream-in-Code/kde-arch-update-plasmoid || plasma5-applets-kde-arch-update-notifier-gitAUR
  • Discover — Una colección de herramientas de administración de paquetes para KDE, utilizando PackageKit.
https://projects.kde.org/projects/kde/workspace/discover || discover
  • GNOME packagekit — Herramienta de gestión de paquetes basada en GTK.
http://www.freedesktop.org/software/PackageKit/ || gnome-packagekit
  • GNOME Software — Gnome Software App. (Selección conservada por GNOME)
https://wiki.gnome.org/Apps/Software || gnome-software
  • kalu — Una pequeña aplicación que agregará un ícono a su bandeja de sistema, verificando regularmente si hay nuevas actualizaciones.
https://jjacky.com/kalu/ || kaluAUR
  • pcurses — Gestión de paquetes en una interfaz de curses
https://github.com/schuay/pcurses || pcurses
  • PkgBrowser — Aplicación para buscar y explorar paquetes de Arch, muestra detalles sobre paquetes seleccionados.
https://bitbucket.org/kachelaqa/pkgbrowser/wiki/Home || pkgbrowserAUR
  • tkPacman — Depende solo de Tcl/Tk y X11, e interactúa con la base de datos del paquete a través de la CLI de pacman.
http://sourceforge.net/projects/tkpacman || tkpacmanAUR