Hay problemas bastantes comunes y simples que pueden suceder con la gestión de paquetes en ArchLinux. Muchas veces estamos buscando soluciones por todos lados para estos problemas comunes. Mi intención en este post es juntar esos problemas comunes (con pacman), su explicación y su solución para evitar andar buscando en wikis, foros y blogs.

File not found/Archivo no encontrado

Puede suceder que al ejecutar pacman –S paquete la respuesta sea:

error: failed retrieving file 'foobar.pkg.tar.xz' from extra: Not Found

Esto puede suceder por una de dos razones. Puede que la base de datos local de paquetes este desactualizada, solucionando esto con un pacman –Syyu

O puede que nuestros servidores de descarga (mirrorlist) estén desactualizados. La solución es generar un nuevo mirrorlist con servidores más actualizados.

Utilizando reflector

Instalamos la herramienta reflector desde los repos oficiales:

pacman –S reflector

Respaldamos la actual lista de servidores

# cp /etc/pacman.d/mirrorlist /etc/pacman.d/mirrorlist.backup

Y utilizamos reflector para listar los 5 servidores más actualizados y con mejor velocidad de descarga de nuestro mirrorlist:

reflector -l 5 --sort rate --save /etc/pacman.d/mirrorlist

Y reactualizamos nuestra base de datos

pacman -Syyu

para ver más opciones de reflector el comando de ayuda es

reflector --help

También podemos utilizar el mirrorlist generator que se encuentra en la página de ArchLinux, este creara una lista de mirrors en texto plano que manualmente guardamos y sustituimos por nuestro mirrorlist.

Si el problema no se soluciono con cualquiera de estos métodos, entonces el problema es de conexión de red o el paquete requerido no existe en los repositorios oficiales, hay que buscarlo en AUR

FILENAME exists in Filesystem – Nombre de archivo existe en el sistema

Esto no es un error, sino una característica de pacman. Al actualizar un paquete si existe en el sistema de archivos pacman no lo sobre escribirá, es responsabilidad del usuario sobre escribir archivos de configuración yd e programas a la
hora de instalar o actualizar.

La forma fácil de solucionarlo es verificar si ese archivo no es propiedad de otro programa con:

pacman –Qo /ruta/al/archivo/que/genera/conflicto

Si genera conflicto con otro programa, podemos subir un reporte de bug, lo más probable es que no y que simplemente no quiera sobre escribirlo, para esto solo hacemos

pacman –Sfyu

Para actualizar, sobrescribiendo otros archivos, o

pacman –Sf

Para instalar el paquete conflictivo. La opción f forza la sobre escritura de cualquier archivo.

Archivo guardado como pacnew o pacsave

Igual que el problema anterior, pacman no sobre escribirá archivos de configuración cuando uno nuevo sea instalado, otra vez no por error, sino por diseño. Cuando un archivo de configuración cambia significa que hay nuevas variables o un nuevo manejo de la configuración y que el usuario debe  revisarlo, aquí no hay opción para forzar la sobre escritura.

Sucede que al actualizar encontramos un mensaje como:

advertencia: /etc/pam.d/usermod instalado como /etc/pam.d/usermod.pacnew

Para solucionar este problema tenemos que configurar el archivo nuevo (pacnew) con las variables que hayamos modificado en el archivo de configuración original, luego borrar el original y mover el pacnew:

Editamos el nuevo archivo y modificamos lo que tengamos que modificar:

vim /etc/pam.d/usermod.pacnew

Borramos el archivo viejo de configuración

rm /etc/pam.d/usermod

Movemos el archivo nuevo de configuración

mv /etc/pam.d/usermod.pacnew /etc/pam.d/usermod

Downgrade de versión

Este si es algo más complicado. Sucede que muchas veces una versión nueva de algo rompe nuestro sistema, sucede mucho con drivers de gráficos o de wireless. La solución a ello es devolver la versión del software a una anterior y más estable.

Para bajar la versión de un software  podemos hacerlo de 2 formas.

Buscar una versión anterior en servidores espejo desactualizados

Buscando un mirror desactualizado desde mirrors status y verificar si tiene la versión anterior a esta conflictiva del software, para ello nos valemos de la página de mirror estatus

Luego de descargado el paquete específico podemos instalarlo localmente así:

pacman –Uf nombre del paquete.pkg.tar.xz

U es para paquetes instalados localmente y f es para forzar su instalación y regresión a una versión anterior.

No puedo hacer downgrade por conflicto de dependencias

Esta opción también se puede forzar con

pacman –Ud nombre del paquete.pkg.tar.xz

Donde d instala el paquete forzando las dependencias, esto eventualmente creara conflictos con el sistema

Hay una opción menos manual y más sencilla de bajar la versión y es utilizar la utilería: Downgrade

Downgrade es un programa que se encuentra en AUR, hace exactamente lo mencionado antes pero lo hace automáticamente, podemos instalar downgrade utilizando yaourt:

yaourt –S downgrade

Y lo podemos utilizar invocando el programa que queremos desactualizar, ejemplo con firefox:

[lucain@Archie ~]$ downgrade firefox

The following packages are available in your cache:

1  local    firefox-9.0.1-1-i686.pkg.tar.xz
please choose a version, [s]earch A.R.M., or [q]uit:

Si le damos la opción de buscar, buscara todas las opciones disponibles en los snapshots de los repositorios de ArchLinux, ejemplo con firefox

please choose a version, [s]earch A.R.M., or [q]uit: s

The following packages are available from the A.R.M.:
1  extra    firefox-9.0-1-i686.pkg.tar.xz.sig
2  extra    firefox-9.0-1-i686.pkg.tar.xz
3  extra    firefox-9.0.1-1-i686.pkg.tar.xz.sig
4  extra    firefox-9.0.1-1-i686.pkg.tar.xz
5  extra    firefox-8.0-1-i686.pkg.tar.xz.sig
6  extra    firefox-8.0-1-i686.pkg.tar.xz
7  extra    firefox-8.0.1-1-i686.pkg.tar.xz.sig
8  extra    firefox-8.0.1-1-i686.pkg.tar.xz
9  extra    firefox-7.0-1-i686.pkg.tar.xz.sig
10 extra    firefox-7.0-1-i686.pkg.tar.xz
11 extra    firefox-7.0.1-1-i686.pkg.tar.xz.sig
12 extra    firefox-7.0.1-1-i686.pkg.tar.xz
13 extra    firefox-6.0.2-1-i686.pkg.tar.xz.sig
14 extra    firefox-6.0.2-1-i686.pkg.tar.xz
15 extra    firefox-6.0-1-i686.pkg.tar.xz.sig
16 extra    firefox-6.0-1-i686.pkg.tar.xz
17 extra    firefox-6.0.1-1-i686.pkg.tar.xz.sig
18 extra    firefox-6.0.1-1-i686.pkg.tar.xz
19 extra    firefox-5.0-1-i686.pkg.tar.xz
20 extra    firefox-4.0-1-i686.pkg.tar.xz
21 extra    firefox-4.0.1-1-i686.pkg.tar.xz.sig
22 extra    firefox-4.0.1-1-i686.pkg.tar.xz
23 extra    firefox-3.6.9-1-i686.pkg.tar.xz
24 extra    firefox-3.6.8-1-i686.pkg.tar.xz
25 extra    firefox-3.6.7-1-i686.pkg.tar.xz
26 extra    firefox-3.6.6-1-i686.pkg.tar.xz
27 extra    firefox-3.6.4-1-i686.pkg.tar.xz
28 extra    firefox-3.6.3-1-i686.pkg.tar.xz
29 extra    firefox-3.6-2-i686.pkg.tar.gz
30 extra    firefox-3.6.2-1-i686.pkg.tar.xz
31 extra    firefox-3.6.15-1-i686.pkg.tar.xz
32 extra    firefox-3.6.14-1-i686.pkg.tar.xz
33 extra    firefox-3.6.13-1-i686.pkg.tar.xz
34 extra    firefox-3.6.12-1-i686.pkg.tar.xz
35 extra    firefox-3.6.11-1-i686.pkg.tar.xz
36 extra    firefox-3.6.10-1-i686.pkg.tar.xz
37 extra    firefox-3.5.7-1-i686.pkg.tar.gz
38 extra    firefox-3.5.6-1-i686.pkg.tar.gz
39 extra    firefox-3.5.5-1-i686.pkg.tar.gz
40 extra    firefox-3.5.4-1-i686.pkg.tar.gz

please choose a version or [q]uit:

Escogemos una versión y la instalara, si queremos que no se actualice para el próximo pacman –Syu, agregamos el programa a la lista de IgnorePkg de /etc/pacman.conf

De momento esos son los errores más comunes con paquetes en pacman, si tienen otro o si encuentran una solución no duden en dejarme un comentario y actualizaría el contenido del post, saludos