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/[email protected] exists. I have made no changes to it so far. Here are the contents, unfortunately line-wrapped by Thunderbird.

================================
[root@mythtv system]# grep -v '^#' [email protected]
[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
===================================

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@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 <[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]>
     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


_______________________________________________
Nut-upsuser mailing list
[email protected]
https://alioth-lists.debian.net/cgi-bin/mailman/listinfo/nut-upsuser

Reply via email to