最近,我试图在我的(fedora 27,x64)机器上更新一些软件包,dnf
抱怨说这与此相冲突。然而,我不知道如何让dnf
告诉我冲突的原因,这个相关的问题说我应该用--best
来解决问题,但这仍然不能告诉我为什么一个看似不冲突的情况被认为是冲突。
这个问题的TL;DR是:how,我是否得到了 dnf
to,告诉我哪些包是冲突的,哪些相关的受抚养人是?
以下是冲突:
$dnf update
Last metadata expiration check: 1:49:45 ago on Tue 27 Nov 2018 03:16:34 PM CET.
Dependencies resolved.
Problem: problem with installed package i3status-2.12-1.fc27.x86_64
- package i3status-2.12-1.fc27.x86_64 requires libconfuse.so.1()(64bit), but none of the providers can be installed
- cannot install both libconfuse-3.2.2-1.fc27.x86_64 and libconfuse-3.2-3.fc27.x86_64
- cannot install both libconfuse-3.2-3.fc27.x86_64 and libconfuse-3.2.2-1.fc27.x86_64
- cannot install the best update candidate for package libconfuse-3.2-3.fc27.x86_64
我发现(使用dnf --deplist info
) i3status-2.12-1.fc27.x86_64
依赖于libconfuse-3.2-3.fc27.x86_64
:
dependency: libconfuse.so.1()(64bit)
provider: libconfuse-3.2-3.fc27.x86_64
然而,对于我的生活,我无法弄清楚什么是依赖于旧的libconfuse-3.2.2-1.fc27.x86_64
包。我假设安装的包的反向依赖关系很容易搜索,但是解决方案建议这里声明dnf repoquery --available --alldeps --source --whatrequires libconfuse-3.2.2-1.fc27.x86_64
应该做这件事;但是输出是:
Last metadata expiration check: 1:59:58 ago on Tue 27 Nov 2018 03:16:34 PM CET.
libconfuse-3.2.2-1.fc27.src.rpm
在这个rpm中,根本不存在依赖关系。换句话说,唯一需要这一点的包是包本身,但是这种情况并不总是发生,所以我猜这个列表是不完整的。深入研究dnf repoquery
,我发现dnf repoquery --all --installed --whatrequires libconfuse
应该给我想要的输出。上面写着:
i3status-0:2.12-1.fc27.x86_64
哪个包最初是作为我想更新的包列出的,但正如上面已经指出的,这取决于libconfuse-3.2-3.fc27.x86_64
提供的D18
。换句话说,根据这一产出,不应发生冲突。我在这里错过了什么?
发布于 2020-10-15 09:33:51
下面的命令将返回一个依赖于 list 的<>已安装的包的列表,以及它们所依赖的确切版本和体系结构:
sudo dnf repoquery --whatdepends libconfuse \
--queryformat "%{name}.%{arch} %{version}-%{release}" 2>/dev/null \
| grep -F -f <(sudo dnf list installed \
| tr -s '[[:space:]]' | cut -d ' ' -f-2) \
| xargs -L1 sudo dnf repoquery --deplist 2>/dev/null \
| grep 'package\|libconfuse'
(确保用没有任何版本号的库名dnf替换>的外观,否则就无法工作)
https://unix.stackexchange.com/questions/484479
复制相似问题