How to add custom RPMs?

I understand and use standard package layering and see the references in the documentation to work that will potentially make this even easier which is great.

And, I know that it is possible to install custom rpms via say a systemd unit driven privileged container, mounting impacted directories (e.g. /usr/local/bin, /usr/local/lib64). We currently use this method to successfully install nvidia-container-runtime pre-requisites for GPU nodes presently.

But am I right in understanding that if one wanted to layer said custom rpms via rpm-ostree this would mean building an entirely new derivative rpm-ostree, like this? And once down this path it would seem you are in the realm of publishing your own rpm-ostree for updates…and therefore tying some custom rpm-ostree rebuild/update to follow FCOS central?

The option of building your own derivative rpm-ostree is incredible functionality frankly, but the overhead seems high when compared to the downsides of a one-shot systemd invocation of rpm install?

Perhaps we should include some documentation on this point in the FAQ as the ‘next level’ to the customizing OS after the layering topic?

You can rpm-ostree install individual arbitrary rpms.

1 Like

Correct… The package layering docs that you linked to describe exactly how to do it. You don’t need to build your own OSTree layer. It happens client side and rpm-ostree on the node will manage that package layer from that point forward. You will continue to get updates.

1 Like

Thanks @jasonbrooks & @dustymabe. Wow. That is just great.

Not mentioned in the link but kind of obvious for non-standard packages:

  • Add your custom rpm repo defintion to: /etc/yum.repos.d/your-custom.repo
  • Make sure the rpms install to rpm-ostree supported locations (e.g. not /usr/local)
  • Add any public GPG keys for the repo.

I have some re-packaging to attempt before I can say these bullets cover all the additional steps but it sounds like that would be it.