私は最近私の(fedora 27、x64)コンピュータでいくつかのパッケージを更新しようとしましたが、クラッシュについて文句を言いdnf
ました。しかし、dnf
紛争の原因をどのように言うべきかわかりません。この関連質問--best
使うべきだと言いました。解決する質問がありますが、まだわからないなぜ紛争がないと思われる状況は紛争と見なされます。
この質問の概要は次のとおりです。dnf
競合するパッケージと関連する依存関係は何であるか、どうすればわかりますか?
以下は衝突状況です。
$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.so.1()(64bit)
んlibconfuse-3.2-3.fc27.x86_64
。私がここで何を見逃しているのでしょうか?
答え1
次のコマンドはリストを返します。インストール済み依存パッケージ難読化ライブラリそして、彼らが依存する正確なバージョンとアーキテクチャは次のとおりです。
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と競合があります。そうでなければ実行できません。)