解决Arch Linux中的“错误:'pacman'无法安装缺少的依赖项”

时间:2020-03-21 11:47:16  来源:igfitidea点击:

前几天,我尝试使用Yay帮助程序从AUR安装软件包。

我尝试安装的软件包具有许多Python依赖项。
不幸的是,我无法安装它,并且Yay不断抛出以下错误。
我认为如果删除有冲突的软件包,该问题将得到解决。
但是,我不想破坏系统。
这是当我尝试从AUR安装程序时的输出错误消息:

error: failed to commit transaction (conflicting files)
 python-tabulate: /usr/bin/tabulate exists in filesystem
 python-tabulate: /usr/lib/python3.6/site-packages/__pycache__/tabulate.cpython-36.pyc exists in filesystem
 python-tabulate: /usr/lib/python3.6/site-packages/tabulate.py exists in filesystem
 Errors occurred, no packages were upgraded.
 :: Building torrench package(s)...
 ==> Making package: torrench 1.0.56-1 (Mon Oct 23 15:46:37 IST 2016)
 ==> Checking runtime dependencies...
 ==> Installing missing dependencies...
 error: target not found: python-tabulate
 ==> ERROR: 'pacman' failed to install missing dependencies.

如我们在上面的输出中看到的,以下三个软件包是导致问题的软件包。

  • /usr/bin/tabulate
  • /usr/lib/python3.6/site-packages/pycache/tabulate.cpython-36.pyc
  • /usr/lib/python3.6/site-packages/tabulate.py

解决Arch Linux中的“错误:'pacman'无法安装缺少的依赖项”

对我来说,删除有问题的软件包可以解决此问题。
但是,始终建议检查有问题的文件不属于其他某些软件包。
因为如果它归某个其他程序所有,则删除它们不是一个好主意。
因此,我们需要查找那些冲突文件不属于任何其他软件包的文件。
pacman命令可以轻松找出文件是否由Arch Linux系统中的其他软件包拥有。

就我而言,我检查了上述文件是否归其他一些软件包所有,如下所示。

$sudo pacman -Qo /usr/bin/tabulate

输出示例:

error: No package owns /usr/bin/tabulate
$sudo pacman -Qo /usr/lib/python3.6/site-packages/__pycache__/tabulate.cpython-36.pyc

输出示例:

error: No package owns /usr/lib/python3.6/site-packages/__pycache__/tabulate.cpython-36.pyc
$sudo pacman -Qo /usr/lib/python3.6/site-packages/tabulate.py

输出示例:

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

如我们所见,以上所有命令向我展示了这些文件不属于任何软件包。
因此,我只是将它们一一删除。

$sudo rm /usr/bin/tabulate
$sudo rm /usr/lib/python3.6/site-packages/__pycache__/tabulate.cpython-36.pyc
$sudo rm /usr/lib/python3.6/site-packages/tabulate.py

完毕!现在,我可以安装所有具有Python依赖项的软件包。
为了安全起见,在删除有冲突的文件之前,请先备份它们。
我们可以将其还原,以防万一删除后出现任何问题。