FS#12536 - pacman should report package versions when conflicts are detected

Attached to Project: Pacman
Opened by shapeshifter (shapeshifter) - Monday, 22 December 2008, 14:16 GMT
Last edited by Allan McRae (Allan) - Tuesday, 29 December 2020, 13:24 GMT
Task Type Feature Request
Category General
Status Assigned
Assigned To Allan McRae (Allan)
Architecture All
Severity Medium
Priority Normal
Reported Version None
Due in Version Undecided
Due Date Undecided
Percent Complete 0%
Votes 5
Private No

Details

Description:

When a repository package conflicts with a local one, it would be very helpful if pacman would report both the versions instead of just reporting the conflict. For example I have libdrm-git installed and today another package requested libdrm to be installed from the repository upon -Syu (Which is a bit odd just like that anyways as libdrm-git is supposed to provide libdrm)

[root@Tachychineta | 14:25:48] # pacman -Syu
:: Synchronising package databases...
(...)
:: Starting full system upgrade...
resolving dependencies...
looking for inter-conflicts...
:: libdrm conflicts with libdrm-git. Remove libdrm-git? [Y/n] n
error: unresolvable package conflicts detected
error: failed to prepare transaction (conflicting dependencies)
:: libdrm: conflicts with libdrm-git
[root@Tachychineta | 14:25:56] #

Problems with this output:
1.) I don't get to know WHY libdrm should be installed (pacman should report why it's a dependency all of a sudden)
2.) I don't get to know which VERSION of libdrm will be installed in contrary to which version my local package is providing (of course I can pacman -Ss libdrm to find this one out)

In my case, "something" needs libdrm to be installed for some unknown reason (as my libdrm-git package provides libdrm libdrm-git libdrm>=2.3.0 libdrm>=2.3.1 libdrm>=2.3 while the libdrm package is 2.3.1-2 and my git package would be perfectly fine.) Knowing which version of the original libdrm pacman wants and to install and which local package is already providing a (maybe) lower version would speed up the problem solving process.

This task depends upon

Comment by Nagy Gabor (combo) - Tuesday, 23 December 2008, 20:31 GMT
Your request makes sense, and it is easy to implement.

"my libdrm-git package provides libdrm libdrm-git libdrm>=2.3.0 libdrm>=2.3.1 libdrm>=2.3 ..."
libdrm>=2.3.0 etc. provisions are NOT allowed, only explicit version specifications (e.g. libdrm=2.3.0).
Comment by shapeshifter (shapeshifter) - Wednesday, 24 December 2008, 00:58 GMT
Yes this was indeed a problem with the libdrm-git PKGBUILD which used >= in provides=(). Replacing it by = solved my problem.
In any case, I still think it would be nice if pacman would report the version of the conflicting packages.
Comment by Dan McGee (toofishes) - Saturday, 06 June 2009, 17:37 GMT
Isn't this fixed with commit 2f59996c, meant to solve  FS#12540 ?
Comment by shapeshifter (shapeshifter) - Saturday, 06 June 2009, 17:55 GMT
Well, the dependency resolution problems are certainly fixed as makepkg will now fail. It would still be nice to see some version numbers upon a conflict error.
Comment by Nagy Gabor (combo) - Saturday, 06 June 2009, 19:32 GMT
My suggestion: pmconflict_t should contain two pmpkg_t pointers, not strings (of package names). Then the front-end could even print the repo (and decide which package is local).

However, this needs more careful programming (to be sure that those pointers don't become invalid), so I am a bit unsure. (Alternatively, we can also push version info into pmconflict_t as strings as well)
Comment by Allan McRae (Allan) - Saturday, 05 September 2009, 06:57 GMT
  • Assignment removed
Removing me from assignees. The makepkg part is fixed and I have no idea about the pacman part...
Comment by Xilon (Xilon) - Sunday, 10 April 2011, 11:00 GMT
Posted a patch for this to the pacman-dev ML, entitled "[PATCH] Add more information in conflicts question"

Attaching here as well for convenience.

Loading...