GNU/Linux >> LINUX-Kenntnisse >  >> Arch Linux

Finden und entfernen Sie widersprüchliche Dateien, die keinem Paket in Arch Linux gehören

Heute bin ich auf ein Problem gestoßen - "Fehler:Transaktion konnte nicht ausgeführt werden (widersprüchliche Dateien)" während ich versuchte, ein Paket auf meinem Arch Linux-Desktop zu installieren. Es hat immer wieder die Fehler ausgelöst, wenn ich versuche, Pakete mit Python-Abhängigkeiten zu installieren. Hier ist die Beispielausgabe, während ich versuche, ein Paket zu installieren oder zu aktualisieren.

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.

Nach einer kurzen Suche auf der Wiki-Seite von Arch Linux fand ich heraus, dass der Grund sein könnte:"pacman hat einen Dateikonflikt erkannt und es wird keine Dateien für Sie überschreiben" . Diese Art von Fehler kann auftreten, wenn Ihr Arch-Linux-System während oder direkt nach einem Pacman-Vorgang wahrscheinlich unsauber heruntergefahren wurde. Dies hinterließ eine kaputte Pacman-Datenbank und leere Dateien.

Entfernen Sie widersprüchliche Dateien, die keinem Paket in Arch Linux gehören

Die Lösung zur Behebung dieses Fehlers besteht darin, Pacman zu zwingen, diese widersprüchlichen Dateien mit folgendem Befehl zu überschreiben:

$ sudo pacman -S --force <package-name>

Wenn es nicht hilft, müssen Sie herausfinden, ob diese Dateien keinem Paket gehören, und dann sollten Sie sie entweder löschen oder umbenennen.

Um herauszufinden, ob die Dateien einem Paket gehören, wie unten gezeigt. In meinem Fall habe ich den folgenden Befehl ausgeführt:

$ sudo pacman -Qo /usr/lib/python3.6/site-packages/requests/__init__.py

Der obige Befehl prüft, ob es ein Paket gibt, das /usr/lib/python3.6/site-packages/requests/__init__.py besitzt oder nicht.

Beispielausgabe:

error: No package owns /usr/lib/python3.6/site-packages/requests/__init__.py

Wie Sie im obigen Beispiel sehen, besitzt kein Paket __init__.py Datei. Ich habe alle Dateien in der obigen Ausgabe überprüft. Keiner von ihnen gehört irgendwelchen Paketen. Wenn Sie also Dateien finden, die keinem Paket gehören, benennen oder löschen Sie diese Dateien einfach um. Bevor Sie sie löschen, sichern Sie einfach diese Dateien (d. h. alle Dateien in /usr/lib/python3.6/site-packages/requests/ Verzeichnis), damit Sie sie wiederherstellen können, falls etwas schief geht.

In meinem Fall sichere ich alle Inhalte von /usr/lib/python3.6/site-packages/requests/ Ordner.

$ cp -fr /usr/lib/python3.6/site-packages/requests/. backup/

Dann habe ich alle Dateien in der obigen Ausgabe gelöscht.

$ sudo /usr/lib/python3.6/site-packages/requests/__init__.py
[...]
$ sudo rm -fr /usr/lib/python3.6/site-packages/requests/utils.py

Diesmal kann ich das Paket ohne Fehler installieren.


Arch Linux
  1. Wie behandelt Linux mehrere aufeinanderfolgende Pfadtrennzeichen (/home////username///file)?

  2. Suchen und entfernen Sie Dateien mit Leerzeichen mit dem Befehl find unter Linux

  3. Installieren Sie Binärdateien in /bin, /sbin, /usr/bin und /usr/sbin, Interaktionen mit --prefix und DESTDIR

  4. gcc - /usr/bin/ld error:kann <library> in /usr/local/lib nicht finden, obwohl ldconfig es auflistet, und Pfad zu ld.so.conf hinzugefügt

  5. Was bedeuten /usr/sbin, /usr/local/sbin und /usr/local/bin?

So teilen Sie Dateien und Ordner in Arch Linux sofort

So finden Sie die installierten proprietären Pakete in Arch Linux

So finden Sie doppelte Dateien in Linux und entfernen sie

So entfernen Sie Dateien und Verzeichnisse unter Linux

Linux – /sbin/init existiert nicht?

/proc/cpuinfo- und /proc/meminfo-Dateien unter Linux