Eu recentemente tentei atualizar alguns pacotes na minha máquina (fedora 27, x64), que dnf
reclama está em conflito. No entanto, não consigo descobrir como obter dnf
para me informar a causa do conflito. Esta questão relacionada diz que eu deveria usar --best
para resolver o problema, mas isso ainda não me diz porque uma situação aparentemente não conflitante é considerada um conflito.
O TL; DR desta pergunta é: como obtenho o dnf
para me dizer quais pacotes são conflitantes e quais são os dependentes associados?
O seguinte é o conflito:
$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
Eu descobri (com dnf --deplist info
) que i3status-2.12-1.fc27.x86_64
depende de libconfuse-3.2-3.fc27.x86_64
:
dependency: libconfuse.so.1()(64bit)
provider: libconfuse-3.2-3.fc27.x86_64
No entanto, não posso, na minha vida, descobrir o que depende do antigo pacote libconfuse-3.2.2-1.fc27.x86_64
. Eu supus que dependências reversas de pacotes instalados seriam fáceis de pesquisar, mas a solução sugeriu aqui afirma que dnf repoquery --available --alldeps --source --whatrequires libconfuse-3.2.2-1.fc27.x86_64
deve fazer o truque; no entanto, a saída é:
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
E desse rpm, não há dependências. Em outras palavras, o único pacote que requer isso é o próprio pacote, mas isso não acontece o tempo todo, então estou supondo que essa lista está incompleta. Cavando em dnf repoquery
um pouco, achei que dnf repoquery --all --installed --whatrequires libconfuse
deveria me dar a saída desejada. Isso diz:
i3status-0:2.12-1.fc27.x86_64
Qual é o pacote que foi originalmente listado como o pacote que eu quero atualizar, mas como já foi mencionado acima, isso depende de libconfuse.so.1()(64bit)
fornecido por libconfuse-3.2-3.fc27.x86_64
. Em outras palavras, não deve haver conflito, de acordo com essa saída. O que estou perdendo aqui?