----- Message from Jim Klimov <[email protected]> ---------
Date: Wed, 30 Nov 2022 09:05:33 +0100
From: Jim Klimov <[email protected]>
Subject: Re: [Nut-upsuser] NUT no longer works after 2.7 -> 2.8 upgrade
To: [email protected]
Cc: [email protected]
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
<[email protected]> wrote:
----- Message from Bill Gee <[email protected]> ---------
Date: Tue, 29 Nov 2022 19:25:19 -0600
From: Bill Gee <[email protected]>
Subject: Re: [Nut-upsuser] NUT no longer works after 2.7 -> 2.8 upgrade
To: Jim Klimov <[email protected][1]>
Cc: Arnaud Quette via Nut-upsuser
<[email protected]>
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/[email protected]
(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/[email protected] 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 <[email protected]
<mailto:[email protected]>> 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@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@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@mythtv ups]# ll /var/run/usb*
ls: cannot access '/var/run/usb*': No such file or directory
[root@mythtv ups]# ll -d /var/run
lrwxrwxrwx. 1 root root 6 Aug 31 2014 /var/run -> ../run
[root@mythtv ups]# ll -d /run
drwxr-xr-x 55 root root 1500 Nov 28 08:22 /run
[root@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
[email protected]
<mailto:[email protected]>
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
[email protected]
https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser
----- End message from Bill Gee <[email protected]> -----
--
Simon Wilson
M: 0400 12 11 16
_______________________________________________
Nut-upsuser mailing list
[email protected]
https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser
----- End message from Jim Klimov <[email protected]> -----
Links:
------
[1] mailto:jimklimov%[email protected]
--
Simon Wilson
M: 0400 12 11 16
_______________________________________________
Nut-upsuser mailing list
[email protected]
https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser