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#23573 - Simplify Makepkg provides/replaces/conflicts
Attached to Project:
Pacman
Opened by Lone_Wolf (Lone_Wolf) - Sunday, 03 April 2011, 14:29 GMT
Last edited by Dan McGee (toofishes) - Wednesday, 06 April 2011, 17:36 GMT
Opened by Lone_Wolf (Lone_Wolf) - Sunday, 03 April 2011, 14:29 GMT
Last edited by Dan McGee (toofishes) - Wednesday, 06 April 2011, 17:36 GMT
|
DetailsI have seen many packages that replace functionality also found in other pacakages, and it strikes me that
they all seem to need provides & replaces & conflicts to get the desired effect. of those 3 , the only 1 i have seen being used solo is conflicts. I suggest to remove replaces and change the meaning of provides. example : foo provides foo_1 this should be interpreted as : foo and foo_1 conflict, only 1 of them can be present. |
This task depends upon
Closed by Dan McGee (toofishes)
Wednesday, 06 April 2011, 17:36 GMT
Reason for closing: Won't implement
Additional comments about closing: Provides can be used without conflicts/replaces, so no real way to simplify things here.
Wednesday, 06 April 2011, 17:36 GMT
Reason for closing: Won't implement
Additional comments about closing: Provides can be used without conflicts/replaces, so no real way to simplify things here.
Example: msmtp provides the facility 'smtp-forwarder', but has no conflicts.
conflicts=('exim')
provides=('smtp-forwarder')
from exim PKGBUILD :
provides=('smtp-server')
conflicts=('smtp-server')
That suggests an inconsistency.
It also looks as though we should distinguish between 2 types of provides :
- providing something virtual like smpt-forwarder
- providing an existing package like mesa
To me it seems in both situations we have a provides/conflicts/replaces combo.
I have a strong feeling that we'll find that those examples use provides/conflicts/replaces wrong.
example :
ati-dri has
depends=("libgl=${pkgver}")
pkgdesc="Mesa DRI + Gallium3D r300 drivers for AMD/ATI Radeon"
conflicts=('xf86-video-ati<6.9.0-6')
conflicts is used wrong imo here, it should be like this :
depends=("libgl=${pkgver}" 'xf86-video-ati>=6.90-6))
pkgdesc="Mesa DRI + Gallium3D r300 drivers for AMD/ATI Radeon"
conflicts=()
if people try to install ati-dri before xf86-video-ati this might lead to a circular dependency.
xf86-video-ati depends on ati-dri & ati-dri depends on xf-86-video-ati
Does this cause problems for pacman dependency handling ?
python2 conflicts with python<3
msmtp provides smtp-server
libreoffice replaces openoffice-base
They do serve a purpose separately...
Changing the suggestion as follows :
new meaning of provides , no other changes :
provides also implies conflicts and replaces
example :
foo_new provides foo
this should be interpreted as :
foo_new provides foo
foo_new conflicts with foo
foo_new replaces foo
xorg-server provides x-server but has no conflicts (there are other implementations of X).
bash provides sh, but doesn't conflict...
I can keep looking through the repos...
It seems i did not make clear the logic behind the new provides meaning, i'll attempt to clarify.
package fooA provides foo
package fooB provides foo
does pacman allow to have both fooA and fooB installed ?
If the answer is yes, then my suggestion for a new meaning of provides doesn't make sense and this feature request can be closed.
However if the answer is no, then 'provides foo' implies a conflict between fooA and fooB.
this implied conflict is not mentioned at all in the manpages.
example :
metalog and syslog-ng both provide logger.
neither of those packages has a conflicts or replaces array in the pkgbuild.
Does pacman allow both metalog and syslog-ng to be installed ?
about transition plan / code changes :
if pacman / makepkg developers are not convinced this is a good change, there's no point in doing those.
Yes.
> Does pacman allow both metalog and syslog-ng to be installed ?
yes.
There are plenty of cases where provides can be used on its own. So...
> then my suggestion for a new meaning of provides doesn't make sense and this feature request can be closed.