User Tools

Site Tools


guia_rapida_y_completa_de_pacman_arch

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
guia_rapida_y_completa_de_pacman_arch [2021/01/15 22:25] – [Paquetes Arch] busindreguia_rapida_y_completa_de_pacman_arch [2024/03/05 01:24] (current) – [Problemas al actualizar con paquetes en conflicto] busindre
Line 8: Line 8:
  
   * .PKGINFO: contiene todos los metadatos requeridos por pacman para tratar con paquetes, dependencias, etc.   * .PKGINFO: contiene todos los metadatos requeridos por pacman para tratar con paquetes, dependencias, etc.
 +
   * .MTREE: contiene hashes y marcas de tiempo de los archivos que se incluyen en la base de datos local para que pacman pueda verificar la integridad del paquete.   * .MTREE: contiene hashes y marcas de tiempo de los archivos que se incluyen en la base de datos local para que pacman pueda verificar la integridad del paquete.
 +
   * .INSTALL: un archivo opcional utilizado para ejecutar comandos después de la fase de instalación/actualización/eliminación. (Este archivo sólo está presente si se especifica en el .PKGBUILD).   * .INSTALL: un archivo opcional utilizado para ejecutar comandos después de la fase de instalación/actualización/eliminación. (Este archivo sólo está presente si se especifica en el .PKGBUILD).
 +
   * Changelog: un archivo opcional guardado por el responsable del paquete documentando los cambios del paquete. (No está presente en todos los paquetes.)   * Changelog: un archivo opcional guardado por el responsable del paquete documentando los cambios del paquete. (No está presente en todos los paquetes.)
  
Line 19: Line 22:
 # Actualizar sistema actualizando la base de datos de paquetes previamente (Uso recomendado). # Actualizar sistema actualizando la base de datos de paquetes previamente (Uso recomendado).
 pacman -Syu pacman -Syu
-pacman -Syu --ignore paquete # Ignorar un paquete en la actualización. +pacman -Syu --ignore paquete # Ignorar un paquete en la actualización. Útil cuando algún paquete está en conflicto con otro nuevo que va a sustituir al actualmente instalado
-</code>+pacman --overwrite "*" -Syu  # Si se muestran errores de que determinado fichero ya existe en el sistema de ficheros (de esta manera se fuerza la sobreescritura).
  
 +</code>
 ==== Evitar responder a preguntas de confirmación de pacman ==== ==== Evitar responder a preguntas de confirmación de pacman ====
 Contestar siempre "yes/sí" a las preguntas de pacman (Are you sure? / ¿Continuar con la instalación? / ... ) Contestar siempre "yes/sí" a las preguntas de pacman (Are you sure? / ¿Continuar con la instalación? / ... )
Line 47: Line 51:
 ==== Instalar / Actualizar / Descargar un paquete ==== ==== Instalar / Actualizar / Descargar un paquete ====
 <code bash>pacman -S paquete <code bash>pacman -S paquete
 +pacman --overwrite "*" -S paquete # Si se muestra el mensaje de que un determinado fichero ya se encuentra dentro del sistema de ficheros ("exists on filesystem").
  
 # Instalar paquetes del repositorio testing (debe estar activado en /etc/pacman.conf). # Instalar paquetes del repositorio testing (debe estar activado en /etc/pacman.conf).
Line 176: Line 181:
 pacman -Qii | awk '/^MODIFIED/ {print $2}' pacman -Qii | awk '/^MODIFIED/ {print $2}'
 </code> </code>
 +
 ==== Clonar conjunto de paquetes instalados entre dos sistemas Arch ==== ==== Clonar conjunto de paquetes instalados entre dos sistemas Arch ====
 <code bash> <code bash>
Line 181: Line 187:
 pacman -S - < pkglist.txt  # Instalar en "B" listado de paquetes del PC "A". pacman -S - < pkglist.txt  # Instalar en "B" listado de paquetes del PC "A".
 </code>  </code> 
 +
 +
  
 ==== Historial de pacman ==== ==== Historial de pacman ====
Line 224: Line 232:
 <code bash>pip install --user packagename</code> <code bash>pip install --user packagename</code>
  
 +**Buscar todas las versiones disponibles de un paquete con Pip** (Python 3)
  
-==== Solventar problemas de llaves GPG al instalar aplicaciones con pacman ==== +<code bash># Ejemplo para visualizar todas las versiones de Ansible disponibles mediante pip. 
-<code bash>pacman-key --refresh-keys +pip install --use-deprecated=legacy-resolver ansible==
-pacman -S archlinux-keyring</code>+
  
 +ERROR: Could not find a version that satisfies the requirement ansible== (from versions: 1.0, 1.1, 1.2, 1.2.1, 1.2.2, 1.2.3, 1.3.0, 1.3.1, 1.3.2, 1.3.3, 1.3.4, 1.4, 1.4.1, 1.4.2, 1.4.3, 1.4.4, 1.4.5, 1.5, 1.5.1, 1.5.2, 1.5.3, 1.5.4, 1.5.5, 1.6, 1.6.1, 1.6.2, 1.6.3, 1.6.4, 1.6.5, 1.6.6, 1.6.7, 1.6.8, 1.6.9, 1.6.10, 1.7, 1.7.1, 1.7.2, 1.8, 1.8.1, 1.8.2, 1.8.3, 1.8.4, 1.9.0.1, 1.9.1, 1.9.2, 1.9.3, 1.9.4, 1.9.5, 1.9.6, 2.0.0.0, 2.0.0.1, 2.0.0.2, 2.0.1.0, 2.0.2.0, 2.1.0.0, 2.1.1.0, 2.1.2.0, 2.1.3.0, 2.1.4.0, 2.1.5.0, 2.1.6.0, 2.2.0.0, 2.2.1.0, 2.2.2.0, 2.2.3.0, 2.3.0.0, 2.3.1.0, 2.3.2.0, 2.3.3.0, 2.4.0.0, 2.4.1.0, 2.4.2.0, 2.4.3.0, 2.4.4.0, 2.4.5.0, 2.4.6.0, 2.5.0a1, 2.5.0b1, 2.5.0b2, 2.5.0rc1, 2.5.0rc2, 2.5.0rc3, 2.5.0, 2.5.1, 2.5.2, 2.5.3, 2.5.4, 2.5.5, 2.5.6, 2.5.7, 2.5.8, 2.5.9, 2.5.10, 2.5.11, 2.5.12, 2.5.13, 2.5.14, 2.5.15, 2.6.0a1, 2.6.0a2, 2.6.0rc1, 2.6.0rc2, 2.6.0rc3, 2.6.0rc4, 2.6.0rc5, 2.6.0, 2.6.1, 2.6.2, 2.6.3, 2.6.4, 2.6.5, 2.6.6, 2.6.7, 2.6.8, 2.6.9, 2.6.10, 2.6.11, 2.6.12, 2.6.13, 2.6.14, 2.6.15, 2.6.16, 2.6.17, 2.6.18, 2.6.19, 2.6.20, 2.7.0.dev0, 2.7.0a1, 2.7.0b1, 2.7.0rc1, 2.7.0rc2, 2.7.0rc3, 2.7.0rc4, 2.7.0, 2.7.1, 2.7.2, 2.7.3, 2.7.4, 2.7.5, 2.7.6, 2.7.7, 2.7.8, 2.7.9, 2.7.10, 2.7.11, 2.7.12, 2.7.13, 2.7.14, 2.7.15, 2.7.16, 2.7.17, 2.7.18, 2.8.0a1, 2.8.0b1, 2.8.0rc1, 2.8.0rc2, 2.8.0rc3, 2.8.0, 2.8.1, 2.8.2, 2.8.3, 2.8.4, 2.8.5, 2.8.6, 2.8.7, 2.8.8, 2.8.9, 2.8.10, 2.8.11, 2.8.12, 2.8.13, 2.8.14, 2.8.15, 2.8.16rc1, 2.8.16, 2.8.17rc1, 2.8.17, 2.8.18rc1, 2.8.18, 2.8.19rc1, 2.8.19, 2.9.0b1, 2.9.0rc1, 2.9.0rc2, 2.9.0rc3, 2.9.0rc4, 2.9.0rc5, 2.9.0, 2.9.1, 2.9.2, 2.9.3, 2.9.4, 2.9.5, 2.9.6, 2.9.7, 2.9.8, 2.9.9, 2.9.10, 2.9.11, 2.9.12, 2.9.13, 2.9.14rc1, 2.9.14, 2.9.15rc1, 2.9.15, 2.9.16rc1, 2.9.16, 2.9.17rc1, 2.9.17, 2.9.18rc1, 2.9.18, 2.10.0a1, 2.10.0a2, 2.10.0a3, 2.10.0a4, 2.10.0a5, 2.10.0a6, 2.10.0a7, 2.10.0a8, 2.10.0a9, 2.10.0b1, 2.10.0b2, 2.10.0rc1, 2.10.0, 2.10.1, 2.10.2, 2.10.3, 2.10.4, 2.10.5, 2.10.6, 2.10.7, 3.0.0b1, 3.0.0rc1, 3.0.0)
 +ERROR: No matching distribution found for ansible==</code>
 +==== Solventar problemas de llaves GPG al instalar aplicaciones con pacman ====
 +<code bash># El error "==> ERROR: A specified local key could not be updated from a keyserver." indica que el servidor predeterminado de llaves no funciona. Se puede cambiar el servidor usado mediante --keyserver
 +pacman-key --refresh-keys --keyserver hkp://keys.gnupg.net
 +pacman -S archlinux-keyring
  
 +# El error "error: key "7258734B41C31549" could not be looked up remotely" puede ser solventado al importar la llave desde un servidor GPG.
 +pacman-key -r 7258734B41C31549 3B94A80E50A477C7 --keyserver hkp://pool.sks-keyservers.net
 +</code>
 ==== Solucionar "Pacman está en uso, espere." ==== ==== Solucionar "Pacman está en uso, espere." ====
  
 Si no está el proceso pacman activo, entonces se debe eliminar el fichero de bloqueo db.lck. A veces se generan este tipo de ficheros al haberse finalizado el proceso pacman de manera forzada. Si no está el proceso pacman activo, entonces se debe eliminar el fichero de bloqueo db.lck. A veces se generan este tipo de ficheros al haberse finalizado el proceso pacman de manera forzada.
 +
 +Error:
 +<code>
 +# Inglés:
 +error: failed to synchronize all databases (unable to lock database)
 +# Español:
 +error: no se han podido sincronizar todas las bases de datos (no se pudo bloquear la base de datos)
 +</code>
 +
 +Solución:
 <code bash>rm /var/lib/pacman/db.lck</code> <code bash>rm /var/lib/pacman/db.lck</code>
  
Line 251: Line 278:
  
 <code bash>pacman -Sy archlinux-keyring && pacman -Syyu</code> <code bash>pacman -Sy archlinux-keyring && pacman -Syyu</code>
 +
 +NOTA: A veces es necesario usar el ultimo fichero /etc/pacman.d/mirrorlist disponible con los repositorios más actualizados. Ya que puede estar usandose un repositorio considerado "deprecated".
 +
 +==== Problemas con la ejecución de los "post-transaction hooks" al finalizar una actualización de Arch ====
 +
 +Este es un problema que puede suceder cuando ha pasado demasiado tiempo desde la última actualización del equipo.
 +<code bash>
 +error: hook /usr/share/libalpm/hooks/90-mkinitcpio-install.hook line 2: invalid value Path
 +error: hook /usr/share/libalpm/hooks/30-systemd-tmpfiles.hook line 2: invalid value Path
 +error: hook /usr/share/libalpm/hooks/60-mkinitcpio-remove.hook line 2: invalid value Path
 +error: hook /usr/share/libalpm/hooks/30-systemd-udev-reload.hook line 2: invalid value Path
 +error: hook /usr/share/libalpm/hooks/20-systemd-sysusers.hook line 2: invalid value Path
 +...</code>
 +
 +Si se reinicia el equipo sin ejecutar los hooks, lo normal es que el sistema no arranque y se necesite montar el disco desde una imagen de arch para solucionar el problema. Esto se debe a que esos triggers (post-transaction hooks) instalan partes del sistema esenciales. Si no se ha reiniciado, es posible simplemente reinstalando systemd para que ejecute de nuevo esos hooks y ya no debería haber más problema.
 +
 +<code bash>pacman -S systemd
 +# También se puede optar por una reinstalación completa de todos los paquetes.
 +# pacman -S $(pacman -Qq)</code>
 +
 +==== Problemas al actualizar con paquetes en conflicto  ====
 +
 +<code>
 +:: Synchronizing package databases...
 + core is up to date
 + extra is up to date
 +:: Starting full system upgrade...
 +:: Replace libblockdev-utils with extra/libblockdev? [Y/n] Y
 +resolving dependencies...
 +looking for conflicting packages...
 +error: unresolvable package conflicts detected
 +error: failed to prepare transaction (conflicting dependencies)
 +:: libblockdev and libblockdev-utils are in conflict
 +</code>
 +
 +Solución: Actualizar el sistema ignorando el paquete que será sustituido.
 +<code bash>
 +pacman -Syu --ignore libblockdev-utils
 +</code>
 +==== Recomendaciones típicas para usar pacman ====
 +
 +Evite realizar actualizaciones parciales. En otras palabras, nunca ejecute pacman -Sy; en su lugar, siempre pacman -Syu.
 +
 +Antes de instalar algo, mejor actualizar el sistema completamente (para no entrar en las actualizaciones parciales)
 +
 +Actualizar de manera regular para no dar saltos demasiado grandes entre versiones.
 +
 +Visualizar atentamente qué paquetes se van a actualizar y los avisos una vez están siendo instalados por si se necesita / recomienda realizar algo a posteriori.
 +
 +Visitar la web de arch previamente a actualizar para percatarse de posibles problemas con paquetes que puedan requerir mantenimiento manual al actualizar el sistema.
 +
 +Es aconsejable antes de actualizar el sistema, esperar a tener tiempo suficiente para poder hacer frente a posibles problemas posteriores a la actualización.
 +
 +El script de bash "checkupdates", incluido con el paquete pacman-contrib, proporciona una forma segura de comprobar las actualizaciones de los paquetes instalados sin ejecutar una actualización del sistema al mismo tiempo.
 +
 +Cuando se ejecuta pacman, pueden crearse archivos .pacnew y .pacsave. Pacman proporciona avisos cuando esto sucede y los usuarios deben tratar estos archivos con prontitud.
 +
 +Si el sistema tiene paquetes instalados manualmente (siempre debería hacerse mediante makepkg), los usuarios tendrán que reconstruirlos cuando sus dependencias reciban una advertencia soname (bumps).
 +
 +Si se ha creado un escenario de actualización parcial y se rompen los binarios porque no pueden encontrar las bibliotecas a las que están vinculadas, NO solucione el problema simplemente mediante enlaces simbólicos. Las bibliotecas reciben advertencias soname(bumps) cuando no son compatibles con versiones anteriores. Simplemente actualice usando pacman -Syu para solucionar el problema.
  
 ==== Enlaces de interés ==== ==== Enlaces de interés ====
guia_rapida_y_completa_de_pacman_arch.1610745916.txt.gz · Last modified: 2021/01/15 22:25 by busindre