Aujourd'hui, j'ai rencontré un problème - "erreur :échec de la validation de la transaction (fichiers en conflit)" pendant que j'essayais d'installer un paquet sur mon bureau Arch Linux. Il n'arrêtait pas de lancer les erreurs lorsque j'essayais d'installer des packages avec des dépendances Python. Voici l'exemple de sortie pendant que j'essaie d'installer ou de mettre à jour un package.
error: failed to commit transaction (conflicting files) python-requests: /usr/lib/python3.6/site-packages/requests/__init__.py exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/__pycache__/__init__.cpython-36.pyc exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/__pycache__/_internal_utils.cpython-36.pyc exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/__pycache__/adapters.cpython-36.pyc exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/__pycache__/api.cpython-36.pyc exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/__pycache__/auth.cpython-36.pyc exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/__pycache__/certs.cpython-36.pyc exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/__pycache__/compat.cpython-36.pyc exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/__pycache__/cookies.cpython-36.pyc exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/__pycache__/exceptions.cpython-36.pyc exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/__pycache__/hooks.cpython-36.pyc exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/__pycache__/models.cpython-36.pyc exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/__pycache__/sessions.cpython-36.pyc exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/__pycache__/status_codes.cpython-36.pyc exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/__pycache__/structures.cpython-36.pyc exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/__pycache__/utils.cpython-36.pyc exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/_internal_utils.py exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/adapters.py exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/api.py exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/auth.py exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/certs.py exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/compat.py exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/cookies.py exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/exceptions.py exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/hooks.py exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/models.py exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/packages/__init__.py exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/packages/__pycache__/__init__.cpython-36.pyc exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/packages/idna/__init__.py exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/packages/idna/__pycache__/__init__.cpython-36.pyc exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/packages/idna/__pycache__/codec.cpython-36.pyc exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/packages/idna/__pycache__/compat.cpython-36.pyc exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/packages/idna/__pycache__/core.cpython-36.pyc exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/packages/idna/__pycache__/idnadata.cpython-36.pyc exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/packages/idna/__pycache__/intranges.cpython-36.pyc exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/packages/idna/__pycache__/uts46data.cpython-36.pyc exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/packages/idna/codec.py exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/packages/idna/compat.py exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/packages/idna/core.py exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/packages/idna/idnadata.py exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/packages/idna/intranges.py exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/packages/idna/uts46data.py exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/sessions.py exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/status_codes.py exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/structures.py exists in filesystem python-requests: /usr/lib/python3.6/site-packages/requests/utils.py exists in filesystem Errors occurred, no packages were upgraded.
Après une petite recherche sur la page wiki d'Arch Linux, j'ai trouvé que la raison pourrait être - "pacman a détecté un conflit de fichiers, et il n'écrasera pas les fichiers pour vous" . Ce type d'erreur peut se produire lorsque votre système Arch Linux a probablement été arrêté de manière impropre pendant ou directement après une opération pacman. Cela vous a laissé avec une base de données pacman cassée et des fichiers vides.
Supprimer les fichiers en conflit qui n'appartiennent à aucun paquet dans Arch Linux
La solution pour corriger cette erreur est de forcer pacman à écraser ces fichiers en conflit à l'aide de la commande :
$ sudo pacman -S --force <package-name>
Si cela ne vous aide pas, vous devez trouver si ces fichiers n'appartiennent à aucun paquet, puis vous devez soit les supprimer, soit les renommer.
Pour savoir si les fichiers appartiennent à un package, comme indiqué ci-dessous. Dans mon cas, j'ai exécuté la commande suivante :
$ sudo pacman -Qo /usr/lib/python3.6/site-packages/requests/__init__.py
La commande ci-dessus vérifiera si un paquet possède /usr/lib/python3.6/site-packages/requests/__init__.py ou pas.
Exemple de résultat :
error: No package owns /usr/lib/python3.6/site-packages/requests/__init__.py
Comme vous le voyez dans l'exemple ci-dessus, aucun paquet ne possède __init__.py dossier. J'ai vérifié tous les fichiers dans la sortie ci-dessus. Aucun d'entre eux n'appartient à des packages. Donc, si vous trouvez des fichiers qui n'appartiennent à aucun paquet, renommez ou supprimez simplement ces fichiers. Avant de les supprimer, sauvegardez simplement ces fichiers (c'est-à-dire tous les fichiers dans /usr/lib/python3.6/site-packages/requests/ répertoire), afin que vous puissiez les restaurer en cas de problème.
Dans mon cas, je sauvegarde tout le contenu de /usr/lib/python3.6/site-packages/requests/ dossier.
$ cp -fr /usr/lib/python3.6/site-packages/requests/. backup/
Ensuite, j'ai supprimé tous les fichiers de la sortie ci-dessus.
$ sudo /usr/lib/python3.6/site-packages/requests/__init__.py [...] $ sudo rm -fr /usr/lib/python3.6/site-packages/requests/utils.py
Cette fois, je peux installer le package sans aucune erreur.