On Thu, Nov 30, 2023 at 12:54 AM Zbigniew Jędrzejewski-Szmek <zbyszek@xxxxxxxxx> 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@xxxxxxxxx> 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/#_dynamic_allocation > > 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@xxxxxxxxxxxxxxxxxxxxxxx > To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx > 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@xxxxxxxxxxxxxxxxxxxxxxx > Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue -- _______________________________________________ devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx 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@xxxxxxxxxxxxxxxxxxxxxxx Do not reply to spam, report it: https://pagure.io/fedora-infrastructure/new_issue