Dnes jsem narazil na problém - "chyba:Nepodařilo se potvrdit transakci (konfliktní soubory)" když jsem se pokoušel nainstalovat balíček na plochu Arch Linuxu. Při pokusu o instalaci jakýchkoli balíčků se závislostmi na Pythonu to neustále házelo chyby. Zde je ukázkový výstup, když se pokouším nainstalovat nebo aktualizovat jakýkoli balíček.
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.
Po chvíli hledání na wiki stránce Arch Linuxu jsem zjistil, že důvodem může být - "pacman zjistil konflikt souborů a soubory za vás nepřepíše" . Tento druh chyby může nastat, když byl váš systém Arch Linux pravděpodobně nečistě vypnut během nebo přímo po operaci pacmana. Zůstalo vám porouchaná databáze pacmana a prázdné soubory.
Odstranění konfliktních souborů, které nevlastní žádné balíčky v Arch Linuxu
Řešením, jak tuto chybu opravit, je přinutit pacmana, aby přepsal tyto konfliktní soubory pomocí příkazu:
$ sudo pacman -S --force <package-name>
Pokud to nepomůže, musíte zjistit, zda tyto soubory nevlastní žádný balíček, a pak byste je měli smazat nebo přejmenovat.
Chcete-li zjistit, zda soubory vlastní nějaký balíček, jak je uvedeno níže. V mém případě jsem spustil následující příkaz:
$ sudo pacman -Qo /usr/lib/python3.6/site-packages/requests/__init__.py
Výše uvedený příkaz zkontroluje, zda existuje nějaký balíček, který vlastní /usr/lib/python3.6/site-packages/requests/__init__.py nebo ne.
Ukázkový výstup:
error: No package owns /usr/lib/python3.6/site-packages/requests/__init__.py
Jak vidíte ve výše uvedeném příkladu, žádný balíček nevlastní __init__.py soubor. Zkontroloval jsem všechny soubory ve výše uvedeném výstupu. Žádný z nich nevlastní žádné balíčky. Pokud tedy najdete nějaké soubory, které nevlastní žádný balíček, stačí tyto soubory přejmenovat nebo odstranit. Před jejich odstraněním stačí tyto soubory zazálohovat (tj. všechny soubory v /usr/lib/python3.6/site-packages/requests/ adresář), takže je můžete obnovit v případě, že se něco pokazí.
V mém případě zálohuji veškerý obsah /usr/lib/python3.6/site-packages/requests/ složka.
$ cp -fr /usr/lib/python3.6/site-packages/requests/. backup/
Poté jsem smazal všechny soubory ve výše uvedeném výstupu.
$ sudo /usr/lib/python3.6/site-packages/requests/__init__.py [...] $ sudo rm -fr /usr/lib/python3.6/site-packages/requests/utils.py
Tentokrát mohu balíček nainstalovat bez jakýchkoli chyb.