SOLUTION: Rc-local service broken in fresh Fedora 42 install

I used to have a /etc/rc.d/rc.local file that ran reliably before I upgraded to F42. Now it doesn’t get run on startup. A manual “systemctl enable rc-local” works fine but when I run “systemctl enable rc-local”, I get

The unit files have no installation config (WantedBy=, RequiredBy=, UpheldBy=,
Also=, or Alias= settings in the [Install] section, and DefaultInstance= for
template units). This means they are not meant to be enabled or disabled using systemctl.

Possible reasons for having these kinds of units are:
• A unit may be statically enabled by being symlinked from another unit’s
.wants/, .requires/, or .upholds/ directory.
• A unit’s purpose may be to act as a helper for some other unit which has
a requirement dependency on it.
• A unit may be started when needed via activation (socket, path, timer,
D-Bus, udev, scripted systemctl call, …).
• In case of template units, the unit is meant to be enabled with some
instance name specified.

I have no idea what this means - does it mean the rv-local unit file is bad? Does my /etc/rc.d/rc.local file need to be a unit file now?

I guess I could just write a unit file but isn’t the rc-local service upposed to work?

SOLUTION:

This was more buggery from selinux. Even though my /etc/rc.d/rc.local was mode 755, the following log entry was being produced: “systemd-rc-local-generator: /etc/rc.d/rc.local is not marked executable, skipping.” Setting selinux to permissive fixed this.

You should also run sudo restorecon -v /etc/rc.d/rc.local.

Accoding to man systemd-rc-local-generator

   Support for /etc/rc.d/rc.local is provided for compatibility with specific System V systems only. However, it is strongly recommended to avoid using
   this script today, and instead provide proper unit files with appropriate dependencies for any scripts to run during the boot process.

That is: rc.local may stop working in a future Fedora version.