Oggi ho riscontrato un problema:"errore:impossibile eseguire il commit della transazione (file in conflitto)" mentre ho provato a installare un pacchetto nel mio desktop Arch Linux. Continuava a generare errori quando provo a installare qualsiasi pacchetto con dipendenze Python. Ecco l'output di esempio mentre provo a installare o aggiornare qualsiasi pacchetto.
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.
Dopo una piccola ricerca sulla pagina wiki di Arch Linux, ho scoperto che il motivo potrebbe essere:"pacman ha rilevato un conflitto di file e non sovrascriverà i file per te" . Questo tipo di errore potrebbe verificarsi quando il tuo sistema Arch Linux è stato probabilmente spento in modo non pulito durante o subito dopo un'operazione pacman. Questo ti ha lasciato un database pacman rotto e file vuoti.
Rimuovi i file in conflitto non di proprietà di nessun pacchetto in Arch Linux
La soluzione per correggere questo errore è forzare pacman a sovrascrivere quei file in conflitto usando il comando:
$ sudo pacman -S --force <package-name>
Se non aiuta, devi scoprire se quei file non sono di proprietà di alcun pacchetto, quindi dovresti eliminarli o rinominarli.
Per scoprire se i file sono di proprietà di un pacchetto, come mostrato di seguito. Nel mio caso, ho eseguito il seguente comando:
$ sudo pacman -Qo /usr/lib/python3.6/site-packages/requests/__init__.py
Il comando precedente verificherà se esiste un pacchetto che possiede /usr/lib/python3.6/site-packages/requests/__init__.py oppure no.
Risultato di esempio:
error: No package owns /usr/lib/python3.6/site-packages/requests/__init__.py
Come puoi vedere nell'esempio sopra, nessun pacchetto possiede __init__.py file. Ho controllato tutti i file nell'output sopra. Nessuno di loro è di proprietà di alcun pacchetto. Quindi, se trovi file che non sono di proprietà di alcun pacchetto, rinomina o elimina questi file. Prima di eliminarli, esegui il backup di quei file (cioè tutti i file all'interno di /usr/lib/python3.6/site-packages/requests/ directory), in modo da poterli ripristinare nel caso qualcosa vada storto.
Nel mio caso, eseguo il backup di tutti i contenuti di /usr/lib/python3.6/site-packages/requests/ cartella.
$ cp -fr /usr/lib/python3.6/site-packages/requests/. backup/
Quindi, ho eliminato tutti i file nell'output sopra.
$ sudo /usr/lib/python3.6/site-packages/requests/__init__.py [...] $ sudo rm -fr /usr/lib/python3.6/site-packages/requests/utils.py
Questa volta posso installare il pacchetto senza errori.