[Nut-upsuser] NUT no longer works after 2.7 -> 2.8 upgrade
Simon Wilson
simon at simonandkate.net
Thu Dec 1 22:42:52 GMT 2022
Just read through your tracking down of pid paths... yikes.
I'm just looking forward to a set of RH/Fedora packages which are not
borked out of the box.
Simon.
----- Message from Jim Klimov via Nut-upsuser
<nut-upsuser at alioth-lists.debian.net> ---------
Date: Thu, 1 Dec 2022 19:44:18 +0100
From: Jim Klimov via Nut-upsuser <nut-upsuser at alioth-lists.debian.net>
Reply-To: Jim Klimov <jimklimov+nut at gmail.com>
Subject: Re: [Nut-upsuser] NUT no longer works after 2.7 -> 2.8 upgrade
To: Bill Gee <bgee at campercaver.net>
Cc: nut-upsuser at alioth-lists.debian.net
> 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
>>
----- End message from Jim Klimov via Nut-upsuser
<nut-upsuser at alioth-lists.debian.net> -----
--
Simon Wilson
M: 0400 12 11 16
More information about the Nut-upsuser
mailing list