On Thu, Nov 30, 2023 at 12:54 AM Zbigniew Jędrzejewski-Szmek
<zbyszek(a)in.waw.pl> wrote:
Yeah, there are no guidelines for this case because it didn't
really
come up before. I think this case can be used to figure out the best
way to do this and then the guidelines can be informed by the solution.
Okay. I don't mind being a pioneer.
I asked to avoid reinventing the wheel.
So actually systemd does _not_ exactly pick up the file. The macro
generates code to create the user in %pre. The systemd-sysusers.service
will also look at this sysusers file, but by the time it gets run,
the user/group already exist to it doesn't do anything.
Alright, thanks for the explanation.
I hacked together a working example.
I'll present it after some polishing and testing that it actually works.
There's yet another twist to this story: rpm is getting support
for sysusers natively, so %sysusers_create_compat will go away and
the guidelines will need to be updated. But I think it should be
fine to start with %sysusers_create_compat and get the subpackage
working, and then this details of the implementation can be adjusted
later.
Given the several years delay before I noticed the change:
https://fedoraproject.org/wiki/Changes/Adopting_sysusers.d_format
I doubt it wouldn't be worth updating at least to the *current* format :)
Michal
--
Michal Schorm
Software Engineer
Core Services - Databases Team
Red Hat
--
On Thu, Nov 30, 2023 at 12:54 AM Zbigniew Jędrzejewski-Szmek
<zbyszek(a)in.waw.pl> wrote:
>
> On Wed, Nov 29, 2023 at 08:04:11PM +0100, Michal Schorm wrote:
> > I maintain the packages 'mariadb' and 'community-mysql'.
> > Sub-packages of each of them need the user 'mysql' to be present prior
> > installation.
> > Both manually create the user in the %pre section.
> >
> > I found out a different system should be used nowadays:
> >
https://docs.fedoraproject.org/en-US/packaging-guidelines/UsersAndGroups/...
> > Introduced by this change:
> >
https://fedoraproject.org/wiki/Changes/Adopting_sysusers.d_format
> >
> > However while the change talks about the possibility of a setup of
> > multiple packages requiring the same user, the packaging guidelines do
> > not cover this topic.
> >
> > I'm not sure how to implement it properly, so I need help with my case,
> > and I ask for the guidelines to be extended.
>
Yeah, there are no guidelines for this case because it didn't
really
come up before. I think this case can be used to figure out the best
way to do this and then the guidelines can be informed by the solution.
>
> > The MariaDB upstream ships a simple 'sysusers.conf' file.
> > I already pack it, so the resulting RPM already has - thanks to this:
> > | Provides:
> > | group(mysql)
> > | user(mysql)
> > Based on the documentation in the guidelines, I guess it's never
> > actually applied though, since I always define the user manually,
> > before the sysuser file could take effect.
> >
> > I'd like to move the 'sysusers.conf' file to a separate
sub-package,
> > and use it by both mariadb-server and community-mysql-server RPMs.
> >
> > I guess the following code would be for the sub-package shipping the
> > 'sysusers.conf' file:
> > | %package system-user-mysql
> > | Summary: This package provides system user 'mysql'
> > | %description system-user-mysql
> > | This package provides system user 'mysql'
> > |
> > | %files system-user-mysql
> > | %{_sysusersdir}/%{pkg_name}.conf
> >
> > And then for the 'mariadb-server', which needs the user, the code would
be:
> > | Requires(pre): user(mysql)
> > | Requires(pre): group(mysql)
> This all looks reasonable.
>
> > but I'm not sure whether I'm not missing any of those, and/or where:
> > | BuildRequires: systemd-rpm-macros
> > | %{?sysusers_requires_compat}
> > |
> > | %pre
> > | %sysusers_create_compat %{SOURCE3}
> Those should be attached to the subpackage that has the sysusers file.
>
> > Likely because I don't understand where/when the systemd picks up,
> > recognizes the installed file and actually creates the user, if it
> > does not exist already.
So actually systemd does _not_ exactly pick up the file. The macro
generates code to create the user in %pre. The systemd-sysusers.service
will also look at this sysusers file, but by the time it gets run,
the user/group already exist to it doesn't do anything.
>
There's yet another twist to this story: rpm is getting support
for sysusers natively, so %sysusers_create_compat will go away and
the guidelines will need to be updated. But I think it should be
fine to start with %sysusers_create_compat and get the subpackage
working, and then this details of the implementation can be adjusted
later.
>
> Zbyszek
> --
> _______________________________________________
> devel mailing list -- devel(a)lists.fedoraproject.org
> To unsubscribe send an email to devel-leave(a)lists.fedoraproject.org
> Fedora Code of Conduct:
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
> List Guidelines:
https://fedoraproject.org/wiki/Mailing_list_guidelines
> List Archives:
https://lists.fedoraproject.org/archives/list/devel@lists.fedoraproject.org
> Do not reply to spam, report it:
https://pagure.io/fedora-infrastructure/new_issue