查找和删除Arch Linux中不属于任何程序包的有冲突的文件
时间:2020-03-21 11:43:43 来源:igfitidea点击:
今天,当我尝试在Arch Linux桌面上安装软件包时遇到了“错误:无法提交事务(冲突文件)”问题。
error: failed to commit transaction (conflicting files)
当我尝试安装任何具有Python依赖项的软件包时,它总是抛出错误。
这是我尝试安装或者更新任何软件包时的示例输出。
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.
在Arch Linux Wiki页面上稍作搜索后,我发现原因可能是“ pacman检测到文件冲突,并且不会为我们覆盖文件”。
当我们在pacman操作过程中或者之后直接关闭Arch Linux系统时,可能会发生这种错误。
这给我们留下了一个损坏的pacman数据库和空文件。
删除Arch Linux中任何程序包都不拥有的有冲突的文件
解决此错误的方法是强制pacman使用以下命令覆盖这些冲突的文件:
$sudo pacman -S --force <package-name>
如果没有帮助,则需要查找这些文件是否不属于任何软件包,然后删除或者重命名它们。
查找文件是否归任何软件包所有,如下所示。
就我而言,我运行了以下命令:
$sudo pacman -Qo /usr/lib/python3.6/site-packages/requests/__init__.py
上面的命令将检查是否有任何软件包拥有/usr/lib/python3.6/site-packages/requests/init.py。
输出示例:
error: No package owns /usr/lib/python3.6/site-packages/requests/__init__.py
如上例所示,没有包拥有__init__.py文件。
我检查了上面输出中的所有文件。
它们都不属于任何软件包。
因此,如果找到任何文件都不属于任何程序包,只需重命名或者删除这些文件。
在删除它们之前,只需备份这些文件(例如:/usr/lib/python3.6/site-packages/requests/目录中的所有文件),以便在出现任何问题时可以将其还原。
就我而言,我备份了/usr/lib/python3.6/site-packages/requests/文件夹中的所有内容。
$cp -fr /usr/lib/python3.6/site-packages/requests/. backup/
然后,我删除了上面输出中的所有文件。
$sudo /usr/lib/python3.6/site-packages/requests/__init__.py [...] $sudo rm -fr /usr/lib/python3.6/site-packages/requests/utils.py
这次,我可以无任何错误地安装软件包。