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:44] – [Enlaces de interés] busindreguia_rapida_y_completa_de_pacman_arch [2024/03/05 01:24] (current) – [Problemas al actualizar con paquetes en conflicto] busindre
Line 22: 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. 
 +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> </code>
 ==== Evitar responder a preguntas de confirmación de pacman ==== ==== Evitar responder a preguntas de confirmación de pacman ====
Line 49: 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 178: 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 183: 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 226: 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)
  
 +<code bash># Ejemplo para visualizar todas las versiones de Ansible disponibles mediante pip.
 +pip install --use-deprecated=legacy-resolver ansible==
 +
 +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 ==== ==== Solventar problemas de llaves GPG al instalar aplicaciones con pacman ====
-<code bash>pacman-key --refresh-keys +<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 -S archlinux-keyring</code> +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 254: Line 279:
 <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 ==== ==== Recomendaciones típicas para usar pacman ====
  
Line 271: Line 334:
  
 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. 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.1610747093.txt.gz · Last modified: 2021/01/15 22:44 by busindre