Historical bug tracker for the Pacman package manager.
The pacman bug tracker has moved to gitlab:
https://gitlab.archlinux.org/pacman/pacman/-/issues
This tracker remains open for interaction with historical bugs during the transition period. Any new bugs reports will be closed without further action.
The pacman bug tracker has moved to gitlab:
https://gitlab.archlinux.org/pacman/pacman/-/issues
This tracker remains open for interaction with historical bugs during the transition period. Any new bugs reports will be closed without further action.
FS#25206 - Handling of dependencies on metapackages in not optimal
Attached to Project:
Pacman
Opened by Sergey Malkin (Axon) - Thursday, 21 July 2011, 20:44 GMT
Last edited by Allan McRae (Allan) - Sunday, 22 April 2012, 10:42 GMT
Opened by Sergey Malkin (Axon) - Thursday, 21 July 2011, 20:44 GMT
Last edited by Allan McRae (Allan) - Sunday, 22 April 2012, 10:42 GMT
|
DetailsSummary and Info:
When pacman removes package and it's dependencies recursively, it checks whether or not packages installed as dependencies of this package are needed by any other package, and if they are, pacman doesn't remove them. But there may be situations when there are several packages providing one metapackage, but installed as dependencies of different packages in the system. If in this case you try to remove one of the least and it's dependencies recursively, pacman will not remove it's dependency that providies metapackage needed by other package even if this dependency is already fulfilled by other package. Steps to Reproduce: 1. Install package "foo1" wich depeds on metapackage "bar" and package "bar1" providing this metapackage as dependency of package "foo1". 2. Install package "foo2" wich depends on package "bar2" and package "bar2" that also provides metapackage "bar" as dependency of package "foo2" 3. Remove package foo2 and it's dependencies recursively. You expect that this will remove packages "foo2" and "bar2", but "bar2" will remain because it provides metapackage "bar" needed by package "foo1". If after removing package "foo2" you manually remove package "bar2", this is done without conflict because the dependency of package "foo1" is fulfilled by package "bar1". So, if pacman will check whether or not the metapackage provided by package that is to be removed is already provided by any other package not only on manual remove, but when recursively removing is as a dependency, the behaviour will be more correct. |
This task depends upon
Closed by Allan McRae (Allan)
Sunday, 22 April 2012, 10:42 GMT
Reason for closing: No response
Additional comments about closing: Need concrete example to decide if there is a possible correct decision here.
Sunday, 22 April 2012, 10:42 GMT
Reason for closing: No response
Additional comments about closing: Need concrete example to decide if there is a possible correct decision here.
Here is what I took out of it:
Installed:
foo1 (depends on bar)
foo2 (depends on bar)
bar1 (provides bar)
bar2 (provides bar)
Operation:
pacman -Rss foo2
Expected:
foo1, bar1 are installed; foo2, bar2 are not installed
Actual:
foo1, bar1, bar2 are installed; foo2 is not installed
I'm not at all convinced removing either bar1 or bar2 is the right move here. Note that *either* of these could be removed; there is no priority given to either, and your suggestion didn't cover that scenario.