Corrí sudo pacman -Syu
y obtuve algunos errores interesantes al leer:
error: error al confirmar la transacción (archivos en conflicto)
y una larga lista de archivos seguidos de exists in filesystem
. La salida completa está aquí: http://ix.io/lLw
Parece que muchos de estos archivos no están asociados con un paquete cuando los verifiqué pacman -Qo <path-to-file>
, pero no los verifiqué todos. Tuve una conexión débil cuando corrí pacman -Syu
, pero recibo los mismos errores cuando actualicé más tarde: http://ix.io/lLx
¿Qué tengo que hacer? ¿Debo verificar todos los archivos y eliminar los que no tienen un paquete asociado? ¿Debo forzar la actualización (con sudo pacman -S --force <package-name>
?)
Actualizar
Intenté correr sudo pacman -S --force <package-name>
y obtuve esto:
[my-pc]/home/average-joe$ pacman -Qo /usr/lib/python3.5/site-packages/PyYAML-3.11-py3.5.egg-info
error: No package owns /usr/lib/python3.5/site-packages/PyYAML-3.11-py3.5.egg-info
Parece pacman -S --force <package
que no sobrescribe los directorios que contienen archivos. Del hombre:
El uso de --force no permitirá sobrescribir un directorio con un archivo o instalar paquetes con archivos y directorios en conflicto.
¿Debo eliminar los directorios en conflicto? (no tienen paquetes asociados)
fuente
/usr/local/
lugar de/usr/
)sudo pip install -U docker-compose==1.5.0rc3
en esta página . Quizássudo pip install
conflictos con pacman?-S
actualizaciones incorrectas (instalaciones parciales, etc.) le permitirá ese escenario. Caso de mí--force
trabajó todo el tiempo.Respuestas:
Ok, parece que
sudo pacman -S --force <package-name>
funciona, pero no resuelve directorios en conflicto. En tales casos, se ejecutasudo rm -rf
en los directorios en conflicto, seguido desudo pacman -S --force <package-name>
trabajos.Ahora mi
pacman -Syu
resuelve bien.fuente
sudo pacman -Syu --force
funcionó para mí, pero sobrescribir no fue reconocido.tl; dr: desinstala la aplicación en conflicto antes de ejecutarla
pacman
.pacman
(y otros administradores de paquetes) mantienen un índice de paquetes y archivos que administran (pacman --query --list
). Algunos archivos, como la configuración, se marcarán como modificables y no se sobrescribirán durante la actualización (excepto en circunstancias especiales, donde el administrador de paquetes generalmente alejará el archivo anterior antes de crear el nuevo). Otros archivos se marcarán como no modificables. Si otra aplicación cambia esos archivos de alguna manera sin actualizar el índice en consecuencia, no hay forma de que el administrador de paquetes sepa qué hacer con esos archivos durante una actualización.Muchas aplicaciones instaladas con el
./configure && make && sudo make install
patrón estándar se pueden desinstalar usandosudo make uninstall
. Si ha instalado la aplicación de alguna otra manera, puede que tenga que hacer algo más para desinstalarla. En general, puede ser una buena idea conservar una copia de los archivos de instalación algún lugar (por ejemplo~/install
) para poder desinstalarlos de manera confiable en tales casos. Simplemente eliminar los archivos en conflicto probablemente dejará otros archivos por ahí, lo que posiblemente podría causar otros problemas.Al instalar software con otros administradores de paquetes, hay formas de aislarlos de los archivos del sistema. Esta es una práctica recomendada establecida, por ejemplo, durante el desarrollo de software, donde realmente desea mantener las versiones consistentes y evitar conflictos con otro software. Ejemplos incluyen:
fuente
sudo pip install
comando. ¿Quizás debería evitar usar pip con sudo?Estaba instalando paquetes que generalmente instalo con pip a través de pacman debido a esto. Pero algunos paquetes no se encuentran en repositorios pacman. Creo que deberíamos evitar instalar pip con privilegios de sudo y, en cambio:
- La marca de usuario hace paquetes de instalación de pip en su directorio de inicio, que no requiere ningún privilegio especial. https://stackoverflow.com/questions/42988977/what-is-the-purpose-pip-install-user
fuente
TLDR;
sudo pacman -Syu
nuevo.editado para agregar TLDR y corregir errores tipográficos
Aunque estoy bastante seguro de que no he estado haciendo nada estúpido, tal vez he tenido este problema cada vez que he intentado actualizar desde que uso Manjaro; tres o cuatro veces en dos meses. Punto de ser, esto lo arregla.
Obtenga una lista de sus archivos.
Cuando la actualización falla en la ventana de su terminal, obtiene esto:
... y mucho más.
Copie el resultado del terminal y póngalo en un archivo. Usé nano , y llamé a los "archivos" míos, como en ~ / work / files .
Tira información extraña:
cat files | awk '{print $2}' >> ~/work/files2
Esto toma la segunda "palabra" de cada línea y la imprime en archivos2.
Lidiar con los archivos
Puede eliminarlos, moverlos o cambiarles el nombre.
Si algo se rompe, es más fácil solucionarlo si lo rompemos moviéndolo en lugar de eliminarlo o renombrarlo:
mkdir ~/work/oldfiles while read -r file; do sudo mv -- "$file" ~/work/oldfiles/$file; done < files2
Si realmente desea eliminarlos, no hay razón para hacerlo ( PELIGRO PELIGRO ): mientras lee el archivo -r; do sudo rm - "$ archivo"; hecho <archivos2
Actualización
Para que --overwrite funcione, lo que debemos hacer para que pacman se dé cuenta de que el paquete no está roto, necesita la siguiente sintaxis:
sudo pacman -S package_name --overwrite /location/of/thing
sudo pacman -S libidn2 --overwrite /usr/lib/libidn2.so.0
sudo pacman -S libx000 --overwrite /usr/lib/libx000.so.f.u.loser
Tuve un lindo problema en el que si eliminaba el enlace simbólico libidn2.so.0, nada funcionaba, y cuando lo volví a colocar, recibí el error "existe en el sistema de archivos". Lo anterior, con --overwrite, es todo lo que funcionó para mí.
Finalmente:
sudo pacman -Syu
fuente
Después de que pacman finalmente desactive la
--force
opción y haga que la--overwrite
opción sustituta funcione como se espera, se debe tener en cuenta el siguiente patrón de uso.Un comando equivalente para reproducir la
--force
opción que sobrescribe ciegamente cualquier conflicto será:O
La parte difícil es escapar del globo para evitar que el caparazón lo expanda primero.
fuente
Si tienes muchos archivos como yo,
resuelve todos los problemas.
fuente