arhclinux下用pacman安装docker-compose的时候,报以下错误(截取了一部分):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
error: failed to commit transaction (conflicting files) python-urllib3: /usr/lib/python3.6/site-packages/urllib3/__init__.py exists in filesystem python-urllib3: /usr/lib/python3.6/site-packages/urllib3/__pycache__/__init__.cpython-36.pyc exists in filesystem python-urllib3: /usr/lib/python3.6/site-packages/urllib3/__pycache__/_collections.cpython-36.pyc exists in filesystem python-urllib3: /usr/lib/python3.6/site-packages/urllib3/__pycache__/connection.cpython-36.pyc exists in filesystem python-urllib3: /usr/lib/python3.6/site-packages/urllib3/__pycache__/connectionpool.cpython-36.pyc exists in filesystem python-urllib3: /usr/lib/python3.6/site-packages/urllib3/__pycache__/exceptions.cpython-36.pyc exists in filesystem ... python-requests: /usr/lib/python3.6/site-packages/requests/packages.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. |
在archlinux的wiki中(见参考部分),查到问题的原因:pacman安装时发现文件冲突,也就是文件安装前已经存在了。
所以先分两步走排查原因,一种是pacman安装,另一种是非pacman安装。
如果是pacman安装的,自然是pacman依赖没做好,可以通过pacman -Qo来查询文件所属的软件包:
1 |
pacman -Qo /usr/lib/python3.6/site-packages/requests |
返回如果类似这样:
1 |
/usr/lib/python3.6/site-packages/requests/ is owned by python-requests 2.18.4-4 |
那就是pacman的问题了,明明安装过了却没记录下来,就需要往上报bug了。
但是如果是这样的:
1 |
error: No package owns /usr/lib/python3.6/site-packages/requests |
那就是我们不知道什么时候自己安装上去的,把这个文件夹先做个备份转移走。
1 |
mv /usr/lib/python3.6/site-packages/requests ~/requests.bak |
根据之前的错误提示,挨个排查(我的例子中就是urllib3和request),如果都是非pacman以来,就先都备份,然后重新执行pacman的安装应该就可以了。
作者使用的pacman版本:Pacman v5.1.0 - libalpm v11.0.0