package names in dependencies

Neal Gompa ngompa13 at gmail.com
Tue Mar 23 17:18:36 CET 2021


On Tue, Mar 23, 2021 at 11:39 AM Elan Ruusamäe <glen at pld-linux.org> wrote:
>
>
> On 23.03.2021 12:59, Neal Gompa wrote:
> > On Tue, Mar 23, 2021 at 5:04 AM Elan Ruusamäe <glen at pld-linux.org> wrote:
> >> i found some odd inconsistency:
> >>
> >>
> >> error: line 319: Illegal char ')' (0x29) in: Obsoletes: virtual(init-daemon)
> >> error: line 319: Only package names are allowed in Obsoletes:
> >> Obsoletes:        virtual(init-daemon)
> >>
> >>
> >> So: "Obsoletes: virtual(init-daemon)" is not okay, but it's fine on some
> >> other tags;
> >>
> >>
> >> Requires:   webserver(indexfile)
> >> Requires:   webserver(php) >= 4.2.0
> >> Suggests:   php(openssl)
> >> Suggests:   webserver(setenv)
> >> Provides:   group(eventum)
> >> Provides:   user(eventum)
> >>
> > Obsoletes has to be a real package name, but virtual names are allowed
> > for other tags.
> Why?
> > This was always the case in RPM, but it started enforcing it in RPM 4.13.
>
> PLD has used virtual obsoletes for the time i've used it (since 2004).
>
> and we are using it when multiple packages provide something common, say:
>
> 'init-daemon"
>
> they are mutually exclusive, so installing one, must uninstall the other.
>
> and if adding new "virtual(init-daemon)" virtual, without need to update
> other packages, they all can have O/P: virtual(init-daemon)
>
>
> now rpm enforces that each of those packages must cross reference all
> 'the other' virtuals... duh!
>

RPM since RPM 4.10 supports mutual exclusion by using Provides + Conflicts.

For example, the following is enough to get the behavior you want:

Provides: init-daemon
Conflicts: init-daemon



-- 
真実はいつも一つ!/ Always, there's only one truth!


More information about the pld-devel-en mailing list