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

Simon Wilson simon at simonandkate.net
Wed Nov 30 10:15:59 GMT 2022


  ----- Message from Jim Klimov <jimklimov+nut at gmail.com> ---------
   Date: Wed, 30 Nov 2022 09:05:33 +0100
   From: Jim Klimov <jimklimov+nut at gmail.com>
Subject: Re: [Nut-upsuser] NUT no longer works after 2.7 -> 2.8 upgrade
     To: simon at simonandkate.net
     Cc: nut-upsuser at alioth-lists.debian.net

> FWIW, just checked: `git grep nut-client` does not return anything  
> related to systemd, so that typo gotta be Fedora's invention ;)
>     
>    In-source there is only nut-common.tmpfiles handling.
>     
>    Jim
>  

Based on:

https://bugzilla.redhat.com/show_bug.cgi?id=2127269
https://bugzilla.redhat.com/show_bug.cgi?id=2143442
https://bugzilla.redhat.com/show_bug.cgi?id=2143833
https://bugzilla.redhat.com/show_bug.cgi?id=2148706

I'd say that these are known issues :-D

Interestingly... RH/Fedora 2.7.4 packages don't have these issues -  
they bring in nut-client.tmpfiles as nut-run.conf, which is then  
correctly called from ExecStartPre, which sets /run/nut with correct  
permissions. %piddir% is set to /run/nut, which is used in STATEPATH,  
and everything is happy.

For the Fedora/RH 2.8.0 packages:

 From https://src.fedoraproject.org/rpms/nut/:
Versions 2.8.0-4 and earlier:

- pull in 'nut-client-tmpfiles' as SOURCE3
- write driver service file ExecStartPre to look for it...
- ...but don't actually install it (commented out line to use it in  
nut.spec)...
- ...and end up with the 'standard' nut-common.conf file but a service  
file looking for something else
- appear to have broken STATEPATH / pid path? (although this is not  
broken on my 2.8.0-1.el8)

Versions 2.8.0-5 and later:
- pull in 'nut-client-tmpfiles' as SOURCE3
- write driver service file ExecStartPre to look for it...
- ...but don't actually install it (commented out line to use it in  
nut.spec)...
- ...and end up with the 'standard' nut-common.conf file but a service  
file looking for something else
- appear to have FIXED the broken STATEPATH / pid path

All in all it looks like the Fedora/RH 2.8.0 packages are not going to  
run as expected "out of the box"...

>
>      On Wed, Nov 30, 2022 at 8:20 AM Simon Wilson via Nut-upsuser  
> <nut-upsuser at alioth-lists.debian.net> 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[1]>
>>       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
>>>
>>>
>>> On 11/29/22 17:43, Jim Klimov wrote:
>>>> As recently noted in the lists, this was tracked
>>>> down to a Fedora 37 packaging bug: 
>>>> https://bugzilla.redhat.com/show_bug.cgi 
>>>> <https://bugzilla.redhat.com/show_bug.cgi>?id=2127269
>>>>
>>>> > The nut user does not have write permissions at /run.
>>>> Note that /run is linked as /var/run and the nut user DOES have write
>>>> permissions there.
>>>>
>>>> These two statements do not fit together :) Permissions on symlink 
>>>> do not matter, only the ultimate object's rights do (root-owned 
>>>> /run). The packaging error is that (/var)/run/nut should have been 
>>>> used for drivers and upsd, or /var/state/ups as it should also 
>>>> exist and be accessible to these. For a quick fix you can set 
>>>> Environment=NUT_ALTPIDPATH=/var/state/ups for their systemd units 
>>>> or respective custom drop-in files.
>>>>
>>>> Jim
>>>>
>>>> On Tue, Nov 29, 2022, 14:06 Bill Gee <bgee at campercaver.net 
>>>> <mailto:bgee at campercaver.net>> wrote:
>>>>
>>>>     Yesterday I upgraded one of my systems from Fedora 36 to Fedora 
>>>> 37.     NUT
>>>>     was upgraded to version 2.8.0.  It no longer runs.
>>>>
>>>>     At first I thought it was because of the XFCE Power Manager program.
>>>>     That program finds the UPS with no problem.  I thought maybe the two
>>>>     programs were competing for the UPS port.  I shut down the XFCE power
>>>>     manager, but that did not help NUT.
>>>>
>>>>     Based on the diagnostics given below, I think this is a permissions
>>>>     problem at /run.  The nut user does not have write  
>>>> permissions at /run.
>>>>     Note that /run is linked as /var/run and the nut user DOES have write
>>>>     permissions there.
>>>>
>>>>     How can I correct this?
>>>>
>>>>     =======================================
>>>>     [root at mythtv ups]# 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 Tue 2022-11-29 06:18:13 CST;
>>>>     19min ago
>>>>          Main PID: 11908 (upsd)
>>>>             Tasks: 1 (limit: 9482)
>>>>            Memory: 736.0K
>>>>               CPU: 27ms
>>>>            CGroup: /system.slice/nut-server.service
>>>>                    └─11908 /usr/sbin/upsd -F
>>>>
>>>>     Nov 29 06:18:13 mythtv.billgee.local upsd[11908]: Can't connect to UPS
>>>>     [cyberpower] (usbhid-ups-cyberpower): No such fi>
>>>>     Nov 29 06:18:13 mythtv.billgee.local nut-server[11908]: Can't
>>>>     connect to
>>>>     UPS [cyberpower] (usbhid-ups-cyberpower): No s>
>>>>     Nov 29 06:18:13 mythtv.billgee.local nut-server[11908]: Running as
>>>>     foreground process, not saving a PID file
>>>>     Nov 29 06:18:13 mythtv.billgee.local upsd[11908]: Running as  
>>>> foreground
>>>>     process, not saving a PID file
>>>>     Nov 29 06:23:13 mythtv.billgee.local nut-server[11908]: Can't
>>>>     connect to
>>>>     UPS [cyberpower] (usbhid-ups-cyberpower): No such file or directory>
>>>>     Nov 29 06:23:13 mythtv.billgee.local upsd[11908]: Can't connect to UPS
>>>>     [cyberpower] (usbhid-ups-cyberpower): No such file or directory>
>>>>
>>>>     [root at mythtv ups]# usbhid-ups -a cyberpower
>>>>     Network UPS Tools - Generic HID driver 0.47 (2.8.0)
>>>>     USB communication driver (libusb 1.0) 0.43
>>>>     writepid: fopen /var/run/usbhid-ups-cyberpower.pid: Permission denied
>>>>     Using subdriver: CyberPower HID 0.6
>>>>     cps_adjust_battery_scale: battery readings will be scaled by 2/3
>>>>
>>>>     Fatal error: unable to create listener socket
>>>>
>>>>     bind /var/run/usbhid-ups-cyberpower failed: Permission denied
>>>>
>>>>     Exiting.
>>>>
>>>>     [root at mythtv ups]# ll /var/run/usb*
>>>>     ls: cannot access '/var/run/usb*': No such file or directory
>>>>
>>>>     [root at mythtv ups]# ll -d /var/run
>>>>     lrwxrwxrwx. 1 root root 6 Aug 31  2014 /var/run -> ../run
>>>>
>>>>     [root at mythtv ups]# ll -d /run
>>>>     drwxr-xr-x 55 root root 1500 Nov 28 08:22 /run
>>>>
>>>>     [root at mythtv ups]# tail /etc/ups/ups.conf
>>>>     [cyberpower]
>>>>               driver=usbhid-ups
>>>>               desc="CyberPower CP1500"
>>>>               port=auto
>>>>               vendorid=0764
>>>>     ==================================================
>>>>
>>>>
>>>>     Thanks!
>>>>     --     ===============
>>>>     Bill Gee
>>>>
>>>>     _______________________________________________
>>>>     Nut-upsuser mailing list
>>>>     Nut-upsuser at alioth-lists.debian.net
>>>>     <mailto:Nut-upsuser at alioth-lists.debian.net>
>>>>     https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser
>>>>     <https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser>
>>>>
>>>
>>> _______________________________________________
>>> 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> -----
>>
>> --
>> Simon Wilson
>> M: 0400 12 11 16
>>
>> _______________________________________________
>> 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 <jimklimov+nut at gmail.com> -----



Links:
------
[1] mailto:jimklimov%2Bnut at gmail.com

-- 
Simon Wilson
M: 0400 12 11 16




More information about the Nut-upsuser mailing list