[Nut-upsuser] NUT no longer works after 2.7 -> 2.8 upgrade

Jim Klimov jimklimov+nut at gmail.com
Thu Dec 1 18:44:18 GMT 2022


Curious finding up there. I think this is due to `load_upsdconf(0);` being
at https://github.com/networkupstools/nut/blob/master/server/upsd.c#L1776
being after the initial signal-probing for competitors (or sending a
command to a running daemon), so using built-in PID/STATE paths, and
notably that probing happens before the optional chrooting (and PID file is
later recorded relative to the chroot).

For that initial probing, it would honor the NUT_ALTPIDPATH envvar
(although still disregarding "relative to chroot" part if used), but not
yet the know config file contents.

So it is messed up somewhat.

FWIW, last week I tried to track down current usage of various PATHs in the
sources, see
https://github.com/networkupstools/nut/issues/1712#issuecomment-1327627850
if interested :)

Hope this helps,
Jim Klimov

On Thu, Dec 1, 2022 at 5:43 PM Bill Gee <bgee at campercaver.net> wrote:

> My email client (Thunderbird) does not truncate, but it does wrap.  The
> truncations come from the way systemctl runs its output through a pager.
> When I copy-paste from the bash session, it truncates at the right edge
> of the window.   I need to use the --full and --no-pager options to get
> the full text, which will be wrapped as needed.
>
> Here is the output from upsd -DD:
>
> ===================================
> [root at mythtv ~]# upsd -DD
> Network UPS Tools upsd 2.8.0
>     0.000000     fopen /var/run/upsd.pid: No such file or directory
>     0.000030     Could not find PID file '/var/run/upsd.pid' to see if
> previous upsd instance is already running!
>
>     0.000250     [D1] debug level is '2'
>     0.000335     listening on ::1 port 3493
>     0.000375     listening on 127.0.0.1 port 3493
>     0.001417     /var/run is world readable
>     0.001557     Can't connect to UPS [cyberpower]
> (usbhid-ups-cyberpower): No such file or directory
>     0.002315     Running as foreground process, not saving a PID file
>     0.002337     [D1] mainloop: UPS [cyberpower] is not currently connected
>     0.002377     [D1] mainloop: UPS [cyberpower] is now connected as FD -1
>     0.002399     [D2] mainloop: polling 2 filedescriptors
>     2.003794     [D2] mainloop: no data available
>     2.003842     [D1] mainloop: UPS [cyberpower] is not currently connected
>     2.003897     [D1] mainloop: UPS [cyberpower] is now connected as FD -1
>     2.003917     [D2] mainloop: polling 2 filedescriptors
>     4.005963     [D2] mainloop: no data available
>     4.006009     [D1] mainloop: UPS [cyberpower] is not currently connected
>     4.006054     [D1] mainloop: UPS [cyberpower] is now connected as FD -1
>     4.006073     [D2] mainloop: polling 2 filedescriptors
>     6.008122     [D2] mainloop: no data available
> ==============================
>
> Just for grins, I edited /etc/ups/upsd.conf to uncomment the STATEPATH
> line.  I set it to /run/nut.  When I ran upsd -DD again, it was still
> looking at /var/run.  However!  It successfully connected to the
> cyberpower device.  Upsc returns good information.
>
>
> =================================
> [root at mythtv ups]# upsd -DD
> Network UPS Tools upsd 2.8.0
>     0.000000     fopen /var/run/upsd.pid: No such file or directory
>     0.000037     Could not find PID file '/var/run/upsd.pid' to see if
> previous upsd instance is already running!
>
>     0.000271     [D1] debug level is '2'
>     0.000357     listening on ::1 port 3493
>     0.000395     listening on 127.0.0.1 port 3493
>     0.001550     Connected to UPS [cyberpower]: usbhid-ups-cyberpower
>     0.002323     Running as foreground process, not saving a PID file
>     0.002347     [D2] mainloop: polling 3 filedescriptors
>     0.002423     [D2] mainloop: polling 3 filedescriptors
>     0.002493     [D2] mainloop: polling 3 filedescriptors
>     0.002570     [D2] mainloop: polling 3 filedescriptors
>     0.002648     [D2] mainloop: polling 3 filedescriptors
>     0.002701     [D2] mainloop: polling 3 filedescriptors
>     2.004311     [D2] mainloop: no data available
>     2.004352     [D2] mainloop: polling 3 filedescriptors
>     4.006061     [D2] mainloop: no data available
>
> [root at mythtv ups]# systemctl --full --no-pager status nut-server
> ● nut-server.service - Network UPS Tools - power devices information server
>       Loaded: loaded (/usr/lib/systemd/system/nut-server.service;
> disabled; preset: disabled)
>       Active: active (running) since Thu 2022-12-01 10:35:01 CST; 18s ago
>     Main PID: 3445 (upsd)
>        Tasks: 1 (limit: 9482)
>       Memory: 732.0K
>          CPU: 4ms
>       CGroup: /system.slice/nut-server.service
>               └─3445 /usr/sbin/upsd -F
>
> Dec 01 10:35:01 mythtv.billgee.local nut-server[3445]: fopen
> /var/run/upsd.pid: No such file or directory
> Dec 01 10:35:01 mythtv.billgee.local nut-server[3445]: Could not find
> PID file '/var/run/upsd.pid' to see if previous upsd instance is already
> running!
> Dec 01 10:35:01 mythtv.billgee.local nut-server[3445]: listening on ::1
> port 3493
> Dec 01 10:35:01 mythtv.billgee.local nut-server[3445]: listening on
> 127.0.0.1 port 3493
> Dec 01 10:35:01 mythtv.billgee.local upsd[3445]: listening on ::1 port 3493
> Dec 01 10:35:01 mythtv.billgee.local upsd[3445]: listening on 127.0.0.1
> port 3493
> Dec 01 10:35:01 mythtv.billgee.local nut-server[3445]: Connected to UPS
> [cyberpower]: usbhid-ups-cyberpower
> Dec 01 10:35:01 mythtv.billgee.local upsd[3445]: Connected to UPS
> [cyberpower]: usbhid-ups-cyberpower
> Dec 01 10:35:01 mythtv.billgee.local upsd[3445]: Running as foreground
> process, not saving a PID file
> Dec 01 10:35:01 mythtv.billgee.local nut-server[3445]: Running as
> foreground process, not saving a PID file
>
> [root at mythtv ups]# upsc cyberpower at localhost
> battery.charge: 100
> battery.charge.low: 10
> battery.charge.warning: 20
> battery.mfr.date: CPS
> battery.runtime: 2100
> battery.runtime.low: 300
> battery.type: PbAcid
> battery.voltage: 13.3
> battery.voltage.nominal: 12
> device.mfr: CPS
> device.model: UPS CP1000AVRLCD
> device.type: ups
> driver.name: usbhid-ups
> [-- snip --]
>
>
> ===============
> Bill Gee
>
> On 12/1/22 06:41, Simon Wilson via Nut-upsuser wrote:
> > Hi Bill, well at least you now have a fully operating, starts-on-reboot
> > driver - so that is progress. One thing we need to know which I asked
> > but you've not answered:
> > "Did you need to add the environment drop-in file? At which step did it
> > work?" The answer to that may change next step.
> >
> > nut-server *should* just work if there is a driver available and running.
> >
> > OK, run:
> >
> >   systemctl disable nut-server (stop it trying to run automatically)
> >   upsd -DD
> >
> > And then Ctrl-C to stop it once you have got output to screen with
> > startup messages.
> >
> > Then copy back here the output from upsd -DD, preferably without
> > truncating lines which your mail client seems to do :(
> >
> > I'm pretty sure that nut-server is using /var/run as its STATEPATH. Can
> > you also include your upsd.conf, minus commented lines.
> >
> > Simon.
> >
> > ----- Message from Bill Gee <bgee at campercaver.net> ---------
> >     Date: Thu, 1 Dec 2022 06:14:10 -0600
> >     From: Bill Gee <bgee at campercaver.net>
> > Subject: Re: [Nut-upsuser] NUT no longer works after 2.7 -> 2.8 upgrade
> >       To: nut-upsuser at alioth-lists.debian.net
> >
> >
> >> Hi Simon -
> >>
> >> I modified /usr/lib/tmpfiles.d/nut-client to use /run instead of
> >> /var/run.  I checked the startup status of the nut services.
> >>
> >> =================
> >> [root at mythtv ~]# systemctl list-unit-files | grep -i nut
> >> nut-driver-enumerator.path  enabled         disabled
> >> nut-driver-enumerator.service  enabled         disabled
> >> nut-driver at .service  indirect        disabled
> >> nut-monitor.service  disabled        disabled
> >> nut-server.service  enabled         disabled
> >> nut-driver.target  disabled        disabled
> >> nut.target  disabled        disabled
> >> ==========================
> >>
> >> I did a shutdown/reboot on the system.  The usbhid driver loaded
> >> without errors and did not complain about /var/run.  /run/nut exists
> >> and contains the expected two files.
> >>
> >> nut-server also started since it is set to "enabled", but failed to
> >> connect to the driver.  It complains about "no such file or
> >> directory". What file is it looking for?  I ran journalctl on it but
> >> got nothing more than what systemctl status reports.
> >>
> >> ===========================
> >> [root at mythtv ~]# systemctl status nut-driver at cyberpower
> >> ● nut-driver at cyberpower.service - Network UPS Tools - device driver
> >> for NUT device 'cyberpower'
> >>      Loaded: loaded (/usr/lib/systemd/system/nut-driver at .service;
> >> enabled; preset: disabled)
> >>     Drop-In: /etc/systemd/system/nut-driver at .service.d
> >>              └─environ.conf
> >>              /etc/systemd/system/nut-driver at cyberpower.service.d
> >>              └─nut-driver-enumerator-generated-checksum.conf,
> >> nut-driver-enumerator-generated.conf
> >>      Active: active (running) since Thu 2022-12-01 05:56:04 CST; 9min
> ago
> >>     Process: 712 ExecStartPre=/usr/bin/systemd-tmpfiles --create
> >> /usr/lib/tmpfiles.d/nut-client.conf (code=exited, stat>
> >>     Process: 719 ExecStart=/bin/sh -c
> >> NUTDEV="`/usr/libexec/nut-driver-enumerator.sh
> >> --get-device-for-service cyberpowe>
> >>    Main PID: 791 (usbhid-ups)
> >>       Tasks: 1 (limit: 9482)
> >>      Memory: 2.9M
> >>         CPU: 113ms
> >>      CGroup:
> >> /system.slice/system-nut\x2ddriver.slice/nut-driver at cyberpower.service
> >>              └─791 /usr/sbin/usbhid-ups -a cyberpower
> >>
> >> Dec 01 05:56:04 mythtv.billgee.local nut-driver at cyberpower[787]: Using
> >> subdriver: CyberPower HID 0.6
> >> Dec 01 05:56:04 mythtv.billgee.local nut-driver at cyberpower[787]:
> >> Network UPS Tools - Generic HID driver 0.47 (2.8.0)
> >> Dec 01 05:56:04 mythtv.billgee.local nut-driver at cyberpower[787]: USB
> >> communication driver (libusb 1.0) 0.43
> >> Dec 01 05:56:04 mythtv.billgee.local nut-driver at cyberpower[787]:
> >> cps_adjust_battery_scale: battery readings will be sca>
> >> Dec 01 05:56:04 mythtv.billgee.local nut-driver at cyberpower[719]:
> >> Network UPS Tools - UPS driver controller 2.8.0
> >> Dec 01 05:56:04 mythtv.billgee.local usbhid-ups[791]: Startup successful
> >>
> >> [root at mythtv ~]# systemctl status nut-server
> >> ● nut-server.service - Network UPS Tools - power devices information
> >> server
> >>      Loaded: loaded (/usr/lib/systemd/system/nut-server.service;
> >> enabled; preset: disabled)
> >>      Active: active (running) since Thu 2022-12-01 05:56:07 CST; 9min
> ago
> >>    Main PID: 809 (upsd)
> >>       Tasks: 1 (limit: 9482)
> >>      Memory: 1000.0K
> >>         CPU: 15ms
> >>      CGroup: /system.slice/nut-server.service
> >>              └─809 /usr/sbin/upsd -F
> >>
> >> Dec 01 05:56:08 mythtv.billgee.local upsd[809]: listening on ::1 port
> >> 3493
> >> Dec 01 05:56:08 mythtv.billgee.local upsd[809]: listening on 127.0.0.1
> >> port 3493
> >> Dec 01 05:56:08 mythtv.billgee.local nut-server[809]: /var/run is
> >> world readable
> >> Dec 01 05:56:08 mythtv.billgee.local nut-server[809]: Can't connect to
> >> UPS [cyberpower] (usbhid-ups-cyberpower): No suc>
> >> Dec 01 05:56:08 mythtv.billgee.local upsd[809]: /var/run is world
> >> readable
> >> Dec 01 05:56:08 mythtv.billgee.local upsd[809]: Can't connect to UPS
> >> [cyberpower] (usbhid-ups-cyberpower): No such file>
> >> Dec 01 05:56:10 mythtv.billgee.local nut-server[809]: Running as
> >> foreground process, not saving a PID file
> >> Dec 01 05:56:10 mythtv.billgee.local upsd[809]: Running as foreground
> >> process, not saving a PID file
> >> Dec 01 06:01:08 mythtv.billgee.local nut-server[809]: Can't connect to
> >> UPS [cyberpower] (usbhid-ups-cyberpower): No suc>
> >> Dec 01 06:01:08 mythtv.billgee.local upsd[809]: Can't connect to UPS
> >> [cyberpower] (usbhid-ups-cyberpower): No such file>
> >> ================================
> >>
> >>
> >>
> >> ===============
> >> Bill Gee
> >>
> >> On 11/30/22 21:14, Simon Wilson via Nut-upsuser wrote:
> >>> ----- Message from Bill Gee <bgee at campercaver.net> ---------
> >>>    Date: Wed, 30 Nov 2022 19:26:46 -0600
> >>>    From: Bill Gee <bgee at campercaver.net>
> >>> Subject: Re: [Nut-upsuser] NUT no longer works after 2.7 -> 2.8 upgrade
> >>>      To: nut-upsuser at alioth-lists.debian.net
> >>>
> >>>
> >>>> Hi Simon -
> >>>>
> >>>> I ran through the steps you gave below.  To quote Gilbert&Sullivan
> >>>> ... "Modified Rapture!"  I suppose I should try a reboot to make
> >>>> sure everything starts properly.
> >>>
> >>> Not yet with the reboot. Baby steps... :) you have a driver running
> >>> from the service file! Celebrations are in order.
> >>>
> >>> Did you need to add the environment drop-in file? At which step did
> >>> it work?
> >>>
> >>>> But first, there is a problem with upsc. Also nut-server complains
> >>>> that it cannot connect to the device.
> >>>
> >>> Ok, that's next... your comments are wrong way around :) nut-server
> >>> not starting is why upsc doesn't give you anything.
> >>>
> >>>>
> >>>> /run/nut exists and contains two files.
> >>>>
> >>>> Here are some outputs:
> >>>>
> >>>> ======================================
> >>>> [root at mythtv ~]# journalctl -u nut-driver at cyberpower.service -f
> >>>> Nov 30 19:00:20 mythtv.billgee.local systemd[1]: Starting
> >>>> nut-driver at cyberpower.service - Network UPS Tools - device driver
> >>>> for NUT device 'cyberpower'...
> >>>> Nov 30 19:00:20 mythtv.billgee.local systemd-tmpfiles[28689]:
> >>>> /usr/lib/tmpfiles.d/nut-client.conf:2: Line references path below
> >>>> legacy directory /var/run/, updating /var/run/nut → /run/nut; please
> >>>> update the tmpfiles.d/ drop-in file accordingly.
> >>>
> >>> That line is the "noise" error I mentioned. Edit
> >>> /usr/lib/tmpfiles.d/nut-client.conf to read /run/nut, not /var/run/nut
> >>>
> >>>> Nov 30 19:00:20 mythtv.billgee.local systemd-tmpfiles[28689]:
> >>>> /usr/lib/tmpfiles.d/nut-client.conf:3: Line references path below
> >>>> legacy directory /var/run/, updating /var/run/nut → /run/nut; please
> >>>> update the tmpfiles.d/ drop-in file accordingly.
> >>>
> >>> Ditto, although you probably don't need line 3 in the file anyway.
> >>>
> >>>> Nov 30 19:00:21 mythtv.billgee.local nut-driver at cyberpower[28719]:
> >>>> Using subdriver: CyberPower HID 0.6
> >>>> Nov 30 19:00:21 mythtv.billgee.local nut-driver at cyberpower[28719]:
> >>>> Network UPS Tools - Generic HID driver 0.47 (2.8.0)
> >>>> Nov 30 19:00:21 mythtv.billgee.local nut-driver at cyberpower[28719]:
> >>>> USB communication driver (libusb 1.0) 0.43
> >>>> Nov 30 19:00:21 mythtv.billgee.local nut-driver at cyberpower[28719]:
> >>>> cps_adjust_battery_scale: battery readings will be scaled by 2/3
> >>>> Nov 30 19:00:21 mythtv.billgee.local usbhid-ups[28769]: Startup
> >>>> successful
> >>>> Nov 30 19:00:21 mythtv.billgee.local nut-driver at cyberpower[28691]:
> >>>> Network UPS Tools - UPS driver controller 2.8.0
> >>>> Nov 30 19:00:21 mythtv.billgee.local systemd[1]: Started
> >>>> nut-driver at cyberpower.service - Network UPS Tools - device driver
> >>>> for NUT device 'cyberpower'.
> >>>>
> >>>> [root at mythtv ups]# ll /run/nut
> >>>> total 4
> >>>> srw-rw---- 1 nut nut 0 Nov 30 19:00 usbhid-ups-cyberpower
> >>>> -rw-r--r-- 1 nut nut 6 Nov 30 19:00 usbhid-ups-cyberpower.pid
> >>>>
> >>>>
> >>>> [root at mythtv ups]# systemctl --no-pager --full status nut-server
> >>>> ● nut-server.service - Network UPS Tools - power devices information
> >>>> server
> >>>>      Loaded: loaded (/usr/lib/systemd/system/nut-server.service;
> >>>> enabled; preset: disabled)
> >>>>      Active: active (running) since Wed 2022-11-30 19:06:53 CST;
> >>>> 13min ago
> >>>>    Main PID: 28918 (upsd)
> >>>>       Tasks: 1 (limit: 9482)
> >>>>      Memory: 736.0K
> >>>>         CPU: 20ms
> >>>>      CGroup: /system.slice/nut-server.service
> >>>>              └─28918 /usr/sbin/upsd -F
> >>>>
> >>>> Nov 30 19:06:53 mythtv.billgee.local nut-server[28918]: /var/run is
> >>>> world readable
> >>>> Nov 30 19:06:53 mythtv.billgee.local upsd[28918]: /var/run is world
> >>>> readable
> >>>> Nov 30 19:06:53 mythtv.billgee.local upsd[28918]: Can't connect to
> >>>> UPS [cyberpower] (usbhid-ups-cyberpower): Connection refused
> >>>> Nov 30 19:06:53 mythtv.billgee.local nut-server[28918]: Can't
> >>>> connect to UPS [cyberpower] (usbhid-ups-cyberpower): Connection
> refused
> >>>> Nov 30 19:06:53 mythtv.billgee.local nut-server[28918]: Running as
> >>>> foreground process, not saving a PID file
> >>>> Nov 30 19:06:53 mythtv.billgee.local upsd[28918]: Running as
> >>>> foreground process, not saving a PID file
> >>>> Nov 30 19:11:53 mythtv.billgee.local nut-server[28918]: Can't
> >>>> connect to UPS [cyberpower] (usbhid-ups-cyberpower): Connection
> refused
> >>>> Nov 30 19:11:53 mythtv.billgee.local upsd[28918]: Can't connect to
> >>>> UPS [cyberpower] (usbhid-ups-cyberpower): Connection refused
> >>>> Nov 30 19:16:53 mythtv.billgee.local nut-server[28918]: Can't
> >>>> connect to UPS [cyberpower] (usbhid-ups-cyberpower): Connection
> refused
> >>>> Nov 30 19:16:53 mythtv.billgee.local upsd[28918]: Can't connect to
> >>>> UPS [cyberpower] (usbhid-ups-cyberpower): Connection refused
> >>>>
> >>>> [root at mythtv ups]# ps ax | grep ups
> >>>>     768 ?        Ss     0:00 /usr/sbin/cupsd -l
> >>>>     773 ?        Ss     0:00 sshd: /usr/sbin/sshd -D [listener] 0 of
> >>>> 10-100 startups
> >>>>   28769 ?        Ss     0:00 /usr/sbin/usbhid-ups -a cyberpower
> >>>>   28918 ?        Ss     0:00 /usr/sbin/upsd -F
> >>>>   28929 pts/1    S+     0:00 grep --color=auto ups
> >>>>
> >>>> [root at mythtv ups]# upsc cyberpower at localhost
> >>>> Error: Driver not connected
> >>>
> >>> upsc won't work without nut-server running, so this is expected based
> >>> on the above failure to start nut-server.
> >>>
> >>>>
> >>>>
> >>>
> >>> So... next.
> >>>
> >>> Fix nut-client.conf contents, and make sure that you can start /
> >>> restart the driver as needed with no errors. Set
> >>> nut-driver at cyberpower.service to enabled for autostart, so with ONLY
> >>> the enumerator services and nut-driver at cyberpower.service enabled,
> >>> you should see something like the following for 'systemctl
> >>> list-unit-files | grep -i nut':
> >>>
> >>> [root at emp80 ups]# systemctl list-unit-files | grep -i nut
> >>> nut-driver-enumerator.path
> >>>    enabled
> >>> nut-driver-enumerator.service
> >>>    enabled
> >>> nut-driver at .service
> >>>    indirect
> >>> nut-monitor.service
> >>>    disabled
> >>> nut-server.service
> >>>    disabled
> >>> nut-driver.target
> >>>    disabled
> >>> nut.target
> >>>    disabled
> >>>
> >>> Stop any running nut processes, and reboot. On reboot the only thing
> >>> that should autostart is nut-driver at cyberpower.service (from the
> >>> 'indirect' call via nut-driver at .service). upsc will still not work.
> >>>
> >>> Monitor the driver for a while 'journalctl -u
> >>> nut-driver at cyberpower.service -f' and make sure it is stable and
> >>> stays connected - google searches show some flakiness with some
> >>> cyberpower UPSs.
> >>>
> >>> Once you are confident that the driver is reliable, starting OK and
> >>> staying up then move on to nut-server.
> >>>
> >>> I'll check in this evening and we can do some more digging on that.
> >>>
> >>> Simon
> >>>
> >>>>
> >>>> ===============
> >>>> Bill Gee
> >>>>
> >>>> On 11/30/22 07:21, Simon Wilson via Nut-upsuser wrote:
> >>>>> Comments inline.
> >>>>>
> >>>>> ----- Message from Bill Gee <bgee at campercaver.net> ---------
> >>>>>    Date: Wed, 30 Nov 2022 06:04:14 -0600
> >>>>>    From: Bill Gee <bgee at campercaver.net>
> >>>>> Subject: Re: [Nut-upsuser] NUT no longer works after 2.7 -> 2.8
> >>>>> upgrade
> >>>>>      To: nut-upsuser at alioth-lists.debian.net
> >>>>>
> >>>>>
> >>>>>> Hi Simon --
> >>>>>>
> >>>>>> Yes, I am pretty sure this is the RedHat packaging problem.  I
> >>>>>> sure hope they get it squared away.  I have only one system using
> >>>>>> nut and that is because all my other systems have APC battery
> >>>>>> backup and run apcupsd. Apcupsd may be old, grey and unmaintained,
> >>>>>> but it Just Works.
> >>>>>>
> >>>>>> You mention that the STATEPATH line in upsd.conf will override
> >>>>>> other settings.  It does not appear to be the case for me.  The
> >>>>>> only way I could get the driver to run was by setting
> >>>>>> NUT_STATEPATH on the command line.  Perhaps that is an issue with
> >>>>>> the driver and not nut-server?
> >>>>>>
> >>>>>> In answer to your questions:
> >>>>>>
> >>>>>> 1) /usr/lib/systemd/system/nut-driver at .service exists.  I have
> >>>>>> made no changes to it so far.  Here are the contents,
> >>>>>> unfortunately line-wrapped by Thunderbird.
> >>>>>>
> >>>>>> ================================
> >>>>>> [root at mythtv system]# grep -v '^#' nut-driver at .service
> >>>>>> [Unit]
> >>>>>> Description=Network UPS Tools - device driver for %I
> >>>>>> After=local-fs.target
> >>>>>>
> >>>>>>
> >>>>>> PartOf=nut-driver.target
> >>>>>>
> >>>>>>
> >>>>>> [Service]
> >>>>>> EnvironmentFile=-/etc/ups/nut.conf
> >>>>>> SyslogIdentifier=%N
> >>>>>> ExecStartPre=-/usr/bin/systemd-tmpfiles --create
> >>>>>> /usr/lib/tmpfiles.d/nut-client.conf
> >>>>>> ExecStart=/bin/sh -c
> >>>>>> 'NUTDEV="`/usr/libexec/nut-driver-enumerator.sh
> >>>>>> --get-device-for-service %i`" && [ -n "$NUTDEV" ] || { echo
> >>>>>> "FATAL: Could not find a NUT device section for service unit %i"
> >>>>>> >&2 ; exit 1 ; } ; /usr/sbin/upsdrvctl start "$NUTDEV"'
> >>>>>> ExecStop=/bin/sh -c
> >>>>>> 'NUTDEV="`/usr/libexec/nut-driver-enumerator.sh
> >>>>>> --get-device-for-service %i`" && [ -n "$NUTDEV" ] || { echo
> >>>>>> "FATAL: Could not find a NUT device section for service unit %i"
> >>>>>> >&2 ; exit 1 ; } ; /usr/sbin/upsdrvctl stop "$NUTDEV"'
> >>>>>> StartLimitInterval=0
> >>>>>> Restart=always
> >>>>>> RestartSec=15s
> >>>>>> Type=forking
> >>>>>>
> >>>>>> [Install]
> >>>>>> WantedBy=nut-driver.target
> >>>>>> ===================================
> >>>>>
> >>>>> OK, so that's the same as mine. It's ExecStartPre task is to create
> >>>>> the pid folder from your answer to the third (unasked) question :)
> >>>>> which is that outlined in /usr/lib/tmpfiles.d/nut-client.conf
> >>>>>
> >>>>> You have /var/run/nut 0770 root nut - so systemd should ensure that
> >>>>> exists.
> >>>>>
> >>>>> By the way, having it with "/var/run/nut" will trigger a 'noise'
> >>>>> error about the "/var" path - change it to just be /run/nut in
> >>>>> nut-client.conf.
> >>>>>
> >>>>> As a test, what happens if you:
> >>>>>
> >>>>> - make sure nut.conf has MODE=standalone
> >>>>> - make sure ALL nut services are stopped, i.e. 'ps -ax | grep ups'
> >>>>> should give you only the grep process as an answer
> >>>>> - delete /run/nut folder (it will get re-created automatically)
> >>>>> - take /etc/ups/upsd.conf back to have commented out STATEPATH as
> >>>>> distributed in the package
> >>>>> - run "systemctl enable nut-driver-enumerator.path
> >>>>> nut-driver-enumerator.service --now" - this will enable and start
> >>>>> the services that monitor ups.conf for changes and then write the
> >>>>> actual driver service file; the second one also runs early in boot
> >>>>> and ensures that the service file exists and is correct.
> >>>>> - run 'nut-scanner -U' and copy its output into ups.conf instead of
> >>>>> your current definition with name heading [cyberpower], save and
> >>>>> exit: this will trigger the above enumerators to run and re-do the
> >>>>> nut-driver at cyberpower.service file
> >>>>>
> >>>>> Based on an out of the box install, you have at this point done
> >>>>> enough that the driver should run (*should*!!!!)
> >>>>>
> >>>>> - run "journalctl -u nut-driver at cyberpower.service -f" in one
> >>>>> terminal while you run "systemctl start
> >>>>> nut-driver at cyberpower.service" in another - what does journalctl
> >>>>> output?
> >>>>>
> >>>>> Assuming it does not start (based on what you have said below),
> >>>>> show the messages.
> >>>>>
> >>>>> If it still does not start as configured above, but you \can/ run
> >>>>> /usr/sbin/usbhid-ups with your environment variables specified like
> >>>>> you had done before, and it *does* run, then do the following steps
> >>>>> to create a systemd drop-in file for the variable, but make the
> >>>>> steps use /run/nut instead of /var/run/nut:
> >>>>> https://bugzilla.redhat.com/show_bug.cgi?id=2127269#c8  (comment 8,
> >>>>> formatted for ease of reading). You want to get back to the
> >>>>> RH/Fedora default of using /run/nut, not /var/state/ups
> >>>>>
> >>>>>   1. uncomment the "STATEPATH /var/run/nut" as already mentioned
> >>>>>   2. create: /etc/systemd/system/nut-driver at .service.d/environ.conf
> >>>>>    with these two lines:
> >>>>>
> >>>>>     [Service]
> >>>>>     Environment=NUT_STATEPATH=/var/run/nut
> >>>>>
> >>>>>   3. and finally do: systemctl daemon-reload
> >>>>>
> >>>>> ...then try and run systemctl start nut-driver at cyberpower.service
> >>>>> again, while monitoring journalctl.
> >>>>>
> >>>>>
> >>>>> If that does not work - then I'm out of ideas at this point lol...
> :-D
> >>>>>
> >>>>> 'set' has nothing BTW on my working system related to nut.
> >>>>>
> >>>>>>
> >>>>>> 2) In /etc/ups/upsd.conf, the original STATEPATH line is
> >>>>>>
> >>>>>> STATEPATH /var/run/nut
> >>>>>>
> >>>>>> Right now the original line is commented and I added another line
> >>>>>> to point at /var/state/ups.
> >>>>>>
> >>>>>> 3) You only asked two questions, but I sense a third might be
> >>>>>> important.  Originally the system had
> >>>>>> /usr/lib/tmpfiles.d/nut-common.conf.  I have modified that file
> >>>>>> and no longer have the original.  I copied that file to
> >>>>>> nut-client.conf, and both have the same contents:
> >>>>>>
> >>>>>> =======================
> >>>>>> # State file (e.g. upsd to driver) and pidfile location for NUT:
> >>>>>> D /var/run/nut 0770 root nut - -
> >>>>>> X /var/run/nut
> >>>>>> ========================
> >>>>>>
> >>>>>> 4) And one more unasked question!  :-)  When I look at the
> >>>>>> environment variables on the system, I see this:
> >>>>>>
> >>>>>> ========================
> >>>>>> [root at mythtv tmpfiles.d]# set | grep -i nut
> >>>>>> _=/etc/ups/nut.conf
> >>>>>> ========================
> >>>>>>
> >>>>>>
> >>>>>>
> >>>>>> Bill Gee
> >>>>>>
> >>>>>> On 11/30/22 01:20, Simon Wilson via Nut-upsuser wrote:
> >>>>>>> ----- Message from Bill Gee <bgee at campercaver.net> ---------
> >>>>>>>    Date: Tue, 29 Nov 2022 19:25:19 -0600
> >>>>>>>    From: Bill Gee <bgee at campercaver.net>
> >>>>>>> Subject: Re: [Nut-upsuser] NUT no longer works after 2.7 -> 2.8
> >>>>>>> upgrade
> >>>>>>>      To: Jim Klimov <jimklimov+nut at gmail.com>
> >>>>>>>      Cc: Arnaud Quette via Nut-upsuser
> >>>>>>> <nut-upsuser at alioth-lists.debian.net>
> >>>>>>>
> >>>>>>>
> >>>>>>>> I got it to run, but what a mess ...
> >>>>>>>>
> >>>>>>>> Yes, I am running systemctl daemon-reload and systemctl restart
> >>>>>>>> nut-server after each change I make.
> >>>>>>>>
> >>>>>>>
> >>>>>>> Hi Bill,
> >>>>>>>
> >>>>>>> Drivers and upsd share defaults (see 'man nutupsdrv').
> >>>>>>>
> >>>>>>> Your original error message ("writepid: fopen
> >>>>>>> /var/run/usbhid-ups-cyberpower.pid: Permission denied") would
> >>>>>>> seem to indicate, same as the Red Hat bug, that your driver's
> >>>>>>> default pid path is /var/run.
> >>>>>>>
> >>>>>>> The driver by default uses STATEPATH (which can be over-ridden in
> >>>>>>> upsd.conf) to store pid files. The driver .service file is
> >>>>>>> supposed to make sure that path exists by running the
> >>>>>>> ExecStartPre line, which gets its instructions from the
> >>>>>>> referenced ".conf" file from /usr/lib/tmpfiles.d. The .service
> >>>>>>> file then calls 'upsdrvctl start' to start your usbhid-ups
> >>>>>>> driver, as defined in ups.conf. Those all need to align...
> >>>>>>>
> >>>>>>> 2 x questions:
> >>>>>>>
> >>>>>>> 1. Without its comments, what are the active lines (as installed,
> >>>>>>> without any changes) in
> >>>>>>> /usr/lib/systemd/system/nut-driver at .service (or wherever that
> >>>>>>> service file is located on your system)?
> >>>>>>> 2. in your upsd.conf (also as installed, without any changes),
> >>>>>>> what is the commented out STATEPATH you later mention uncommenting?
> >>>>>>>
> >>>>>>>> I created /usr/lib/tmpfiles.d/nut-client.conf   The owner is
> >>>>>>>> root:root and permissions are 0644.  The contents are
> >>>>>>>>
> >>>>>>>> # State file (e.g. upsd to driver) and pidfile location for NUT:
> >>>>>>>> D /var/run/nut 0770 root nut - -
> >>>>>>>> X /var/run/nut
> >>>>>>>>
> >>>>>>>> I uncommented the STATEPATH line in /etc/ups/upsd.conf.
> >>>>>>>>
> >>>>>>>> I created a directory /var/state/ups, set to 777 permissions.
> >>>>>>>> Changed the STATEPATH line in upsd.conf.  No success.
> >>>>>>>>
> >>>>>>>> I looked at /usr/lib/systemd/system/nut-driver at .service but
> >>>>>>>> could not see any changes to be made.  The bug report at RedHat
> >>>>>>>> mentions that a file identified in ExecStartPre does not exist,
> >>>>>>>> but I could not duplicate.
> >>>>>>>>
> >>>>>>>> I tried running this as root:
> >>>>>>>>
> >>>>>>>> NUT_STATEPATH=/var/state/ups NUT_ALTPIDPATH=/var/state/ups
> >>>>>>>> /usr/sbin/usbhid-ups -u nut -g nut -s cyberpower -x port=auto
> >>>>>>>>
> >>>>>>>> And it works.  I tried it with only one or the other of the two
> >>>>>>>> environment variables, but did not work.  It has to have both.
> >>>>>>>>
> >>>>>>>> ===============
> >>>>>>>> Bill Gee
> >>>>>>>>
> >>>>>>
> >>>>>> _______________________________________________
> >>>>>> Nut-upsuser mailing list
> >>>>>> Nut-upsuser at alioth-lists.debian.net
> >>>>>>
> https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser
> >>>>>
> >>>>>
> >>>>> ----- End message from Bill Gee <bgee at campercaver.net> -----
> >>>>>
> >>>>>
> >>>>>
> >>>>
> >>>> _______________________________________________
> >>>> Nut-upsuser mailing list
> >>>> Nut-upsuser at alioth-lists.debian.net
> >>>> https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser
> >>>
> >>>
> >>> ----- End message from Bill Gee <bgee at campercaver.net> -----
> >>>
> >>>
> >>>
> >>
> >> _______________________________________________
> >> Nut-upsuser mailing list
> >> Nut-upsuser at alioth-lists.debian.net
> >> https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser
> >
> >
> > ----- End message from Bill Gee <bgee at campercaver.net> -----
> >
> >
> >
>
> _______________________________________________
> Nut-upsuser mailing list
> Nut-upsuser at alioth-lists.debian.net
> https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://alioth-lists.debian.net/pipermail/nut-upsuser/attachments/20221201/7de3041d/attachment-0001.htm>


More information about the Nut-upsuser mailing list