Sync from SUSE:SLFO:Main nut revision 71ffbff551d77025179c6fa023991893
This commit is contained in:
commit
50ba8b2405
23
.gitattributes
vendored
Normal file
23
.gitattributes
vendored
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
## Default LFS
|
||||||
|
*.7z filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.bsp filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.bz2 filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.gem filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.gz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.jar filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.lz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.lzma filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.obscpio filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.oxt filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.pdf filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.png filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.rpm filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.tbz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.tbz2 filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.tgz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.ttf filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.txz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.whl filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.xz filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.zip filter=lfs diff=lfs merge=lfs -text
|
||||||
|
*.zst filter=lfs diff=lfs merge=lfs -text
|
161
README.SUSE
Normal file
161
README.SUSE
Normal file
@ -0,0 +1,161 @@
|
|||||||
|
COnfiguration and use of NUT in SuSE
|
||||||
|
|
||||||
|
NUT in openSUSE comes in several packages:
|
||||||
|
|
||||||
|
- nut - The core package. It features UPS monitoring and network UPS
|
||||||
|
management.
|
||||||
|
|
||||||
|
and two additional packages:
|
||||||
|
|
||||||
|
- nut-drivers-net - two additional drivers for network communication of
|
||||||
|
UPS daemons. You will need for advanced configuration (e. g. if you
|
||||||
|
want to manage shutdown of more computers sharing the same UPS).
|
||||||
|
|
||||||
|
- nut-cgi provides support for monitoring UPS web pages using apache web
|
||||||
|
browser. Predefined address is http://localhost/nut/index.html
|
||||||
|
|
||||||
|
nut Configuration
|
||||||
|
|
||||||
|
NUT is pre-configured to use a local or remote UPS as far as possible.
|
||||||
|
But it still requires a minimal manual configuration before the first
|
||||||
|
use.
|
||||||
|
|
||||||
|
This document contains:
|
||||||
|
- How to configure local or remote UPS (mandatory reading).
|
||||||
|
- How to configure to suspend to disk (optional reading).
|
||||||
|
- What to do in environment with possible service timeouts (optional
|
||||||
|
reading).
|
||||||
|
|
||||||
|
|
||||||
|
The default setup uses one local UPS. You have to define UPS type in
|
||||||
|
file /etc/ups/ups.conf.
|
||||||
|
|
||||||
|
|
||||||
|
It requires only few adoptions before you can start the service:
|
||||||
|
|
||||||
|
|
||||||
|
* Configuration of a locally connected UPS:
|
||||||
|
|
||||||
|
In /etc/ups/ups.conf:
|
||||||
|
- Go to the [myups] section at the end of the file.
|
||||||
|
- Set driver key to the driver name supporting your UPS.
|
||||||
|
(see /usr/lib/ups/driver/ for possible drivers. Each driver
|
||||||
|
has a man page. Many USB UPSes are usbhid-ups.)
|
||||||
|
- Set port key to the device your UPS is connected to,
|
||||||
|
e.g. /dev/ttyS0 for first serial port (COM1) or
|
||||||
|
/dev/usb/hiddev0
|
||||||
|
for USB HID UPS.
|
||||||
|
- Adjust desc key as you want.
|
||||||
|
|
||||||
|
Start the service:
|
||||||
|
- "/etc/init.d/upsd start"
|
||||||
|
|
||||||
|
|
||||||
|
* Configuration of a UPS connected to a remote machine:
|
||||||
|
|
||||||
|
In /etc/ups/ups.conf:
|
||||||
|
- Comment out or remove the [myups] section at the end of the
|
||||||
|
file.
|
||||||
|
|
||||||
|
In /etc/ups/upsmon.conf:
|
||||||
|
- Find the uncommented MONITOR line followed by
|
||||||
|
"myups@localhost" and change it to:
|
||||||
|
MONITOR myups@remote_machine 1 upsslave remote_password slave
|
||||||
|
Where:
|
||||||
|
remote_machine is a hostname of the remote machine.
|
||||||
|
remote_password is the password used for upsslave on the
|
||||||
|
remote machine (you can find it in the remote file
|
||||||
|
/etc/ups/upsd.users).
|
||||||
|
|
||||||
|
In /etc/ups/hosts.conf:
|
||||||
|
- Find the uncommented MONITOR line followed by
|
||||||
|
"myups@localhost".
|
||||||
|
- Change the hostname from "localhost" to the hostname of
|
||||||
|
the remote machine.
|
||||||
|
- Change the description as you want.
|
||||||
|
|
||||||
|
In the remote /etc/ups/upsd.conf:
|
||||||
|
- Add a rule for the remote clients relevant to your network or
|
||||||
|
your needs. Standard local networks are:
|
||||||
|
10.0.0.0/8, 172.16.0.0/12 and 192.168.0.0/16
|
||||||
|
ACL my_network 192.168.0.0/16
|
||||||
|
ACCEPT my_network
|
||||||
|
|
||||||
|
In the remote /etc/ups/upsd.users:
|
||||||
|
- Find the line allowfrom for upsslave user.
|
||||||
|
- Add your local machine name to the allowfrom list.
|
||||||
|
|
||||||
|
In the remote SuSE firewall:
|
||||||
|
- Enable nut (Network UPS Tools) service (port 3493), e. g. by
|
||||||
|
"YaST2 firewall".
|
||||||
|
|
||||||
|
Start the service:
|
||||||
|
- "/etc/init.d/upsd start" on both local and remote machines.
|
||||||
|
- If you have edited configuration of a running server, run
|
||||||
|
"/etc/init.d/upsd reload"
|
||||||
|
|
||||||
|
|
||||||
|
* Test the configuration using upsc or upslog:
|
||||||
|
|
||||||
|
- "upsc myups@localhost"
|
||||||
|
Should display information about the UPS status.
|
||||||
|
|
||||||
|
- "upslog -s myups@localhost -l -"
|
||||||
|
Should display UPS status log every 30 seconds.
|
||||||
|
(Press Ctrl-C keys to stop upslog).
|
||||||
|
|
||||||
|
Notes:
|
||||||
|
|
||||||
|
- Predefined user upsmaster
|
||||||
|
|
||||||
|
There are two predefined users - upsmaster and upsslave. The passwords
|
||||||
|
for them are generated during the installation (see the "password"
|
||||||
|
lines in /etc/ups/upsd.users).
|
||||||
|
|
||||||
|
User upsmaster has privileges to shut down master machine (default for
|
||||||
|
local UPS), upsslave has privileges to shut down slave machines.
|
||||||
|
|
||||||
|
If you change it, or add another user, don't forget to adopt the
|
||||||
|
MONITOR lines in upsmon.conf on all machines using this user and
|
||||||
|
password combination to connect to the upsd.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Suspend to disk
|
||||||
|
|
||||||
|
If you want to configure nut to do suspend to disk instead of shutdown
|
||||||
|
you should:
|
||||||
|
|
||||||
|
- Verify, that suspend to disk works correctly with your desktop:
|
||||||
|
sudo systemctl hibernate
|
||||||
|
(You can lose your unsaved data, if your computer does not support
|
||||||
|
suspend.)
|
||||||
|
- Change SHUTDOWNCMD in /etc/ups/upsmon.conf to:
|
||||||
|
SHUTDOWNCMD "/usr/bin/systemctl hibernate"
|
||||||
|
- Verify, that your UPS provides reasonable grace period to complete
|
||||||
|
suspend in all situations.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Environment with possible service timeouts
|
||||||
|
|
||||||
|
In some environments, there is no guarantee, that the machine will
|
||||||
|
correctly shut down, either because other machines providing critical
|
||||||
|
services are already down or because some services (e. g. squid) are
|
||||||
|
stopping too long and battery power is not sufficient. In this case,
|
||||||
|
you can prefer incorrect but fast shutdown.
|
||||||
|
|
||||||
|
To fix this problem, you need to do:
|
||||||
|
|
||||||
|
- Copy upsd-early-powerdown script to your /etc/init.d/ directory.
|
||||||
|
|
||||||
|
- Edit following lines:
|
||||||
|
|
||||||
|
Replace "FIXME scripts which should not stop before powerdown" by an
|
||||||
|
appropriate init script list.
|
||||||
|
|
||||||
|
Replace "FIXME scripts which should stop before powerdown" by an
|
||||||
|
appropriate init script list.
|
||||||
|
|
||||||
|
- Start YaST Runlevel Editor and enable this meta-service in
|
||||||
|
runlevels, where you want to apply early shutdown.
|
21
harden_nut-driver.service.patch
Normal file
21
harden_nut-driver.service.patch
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
diff -purN a/scripts/systemd/nut-driver@.service.in b/scripts/systemd/nut-driver@.service.in
|
||||||
|
--- a/scripts/systemd/nut-driver@.service.in 2023-10-07 16:06:44.000000000 +0200
|
||||||
|
+++ b/scripts/systemd/nut-driver@.service.in 2023-11-03 19:46:30.856267504 +0100
|
||||||
|
@@ -46,6 +46,17 @@ PartOf=nut-driver.target
|
||||||
|
# Finally note that "nut-driver-enumerator.service" should take care of this.
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
+# added automatically, for details please see
|
||||||
|
+# https://en.opensuse.org/openSUSE:Security_Features#Systemd_hardening_effort
|
||||||
|
+ProtectSystem=full
|
||||||
|
+ProtectHome=true
|
||||||
|
+ProtectHostname=true
|
||||||
|
+ProtectKernelTunables=true
|
||||||
|
+ProtectKernelModules=true
|
||||||
|
+ProtectKernelLogs=true
|
||||||
|
+ProtectControlGroups=true
|
||||||
|
+RestrictRealtime=true
|
||||||
|
+# end of automatic additions
|
||||||
|
Environment=NUT_IGNORE_NOWAIT=true
|
||||||
|
EnvironmentFile=-@CONFPATH@/nut.conf
|
||||||
|
SyslogIdentifier=%N
|
21
harden_nut-monitor.service.patch
Normal file
21
harden_nut-monitor.service.patch
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
diff -purN a/scripts/systemd/nut-monitor.service.in b/scripts/systemd/nut-monitor.service.in
|
||||||
|
--- a/scripts/systemd/nut-monitor.service.in 2023-10-07 16:06:44.000000000 +0200
|
||||||
|
+++ b/scripts/systemd/nut-monitor.service.in 2023-11-03 19:48:16.280004811 +0100
|
||||||
|
@@ -25,6 +25,17 @@ Wants=nut-server.service
|
||||||
|
PartOf=nut.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
+# added automatically, for details please see
|
||||||
|
+# https://en.opensuse.org/openSUSE:Security_Features#Systemd_hardening_effort
|
||||||
|
+ProtectSystem=full
|
||||||
|
+ProtectHome=true
|
||||||
|
+ProtectHostname=true
|
||||||
|
+ProtectKernelTunables=true
|
||||||
|
+ProtectKernelModules=true
|
||||||
|
+ProtectKernelLogs=true
|
||||||
|
+ProtectControlGroups=true
|
||||||
|
+RestrictRealtime=true
|
||||||
|
+# end of automatic additions
|
||||||
|
EnvironmentFile=-@CONFPATH@/nut.conf
|
||||||
|
SyslogIdentifier=%N
|
||||||
|
ExecStartPre=-@SYSTEMD_TMPFILES_PROGRAM@ --create @systemdtmpfilesdir@/nut-common-tmpfiles.conf
|
21
harden_nut-server.service.patch
Normal file
21
harden_nut-server.service.patch
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
diff -purN a/scripts/systemd/nut-server.service.in b/scripts/systemd/nut-server.service.in
|
||||||
|
--- a/scripts/systemd/nut-server.service.in 2023-10-07 16:06:44.000000000 +0200
|
||||||
|
+++ b/scripts/systemd/nut-server.service.in 2023-11-03 19:49:51.496940092 +0100
|
||||||
|
@@ -26,6 +26,17 @@ Before=nut-monitor.service
|
||||||
|
PartOf=nut.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
+# added automatically, for details please see
|
||||||
|
+# https://en.opensuse.org/openSUSE:Security_Features#Systemd_hardening_effort
|
||||||
|
+ProtectSystem=full
|
||||||
|
+ProtectHome=true
|
||||||
|
+ProtectHostname=true
|
||||||
|
+ProtectKernelTunables=true
|
||||||
|
+ProtectKernelModules=true
|
||||||
|
+ProtectKernelLogs=true
|
||||||
|
+ProtectControlGroups=true
|
||||||
|
+RestrictRealtime=true
|
||||||
|
+# end of automatic additions
|
||||||
|
# A busy server can be monitoring a lot of devices as well as replying
|
||||||
|
# to many clients. The "infinity" definition is actually capped by OS
|
||||||
|
# settings and hardcoded defaults; typically can be 65535+ nowadays.
|
BIN
nut-2.8.2-repack.tar.gz
(Stored with Git LFS)
Normal file
BIN
nut-2.8.2-repack.tar.gz
(Stored with Git LFS)
Normal file
Binary file not shown.
28
nut-doc-fixed-date.patch
Normal file
28
nut-doc-fixed-date.patch
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
diff -purN a/docs/Makefile.am b/docs/Makefile.am
|
||||||
|
--- a/docs/Makefile.am 2023-10-16 10:06:18.000000000 +0200
|
||||||
|
+++ b/docs/Makefile.am 2023-11-03 19:40:55.360576893 +0100
|
||||||
|
@@ -248,8 +248,8 @@ solaris-usb.html solaris-usb.chunked sol
|
||||||
|
A2X_COMMON_OPTS = $(ASCIIDOC_VERBOSE) \
|
||||||
|
--attribute=icons \
|
||||||
|
--xsltproc-opts="--nonet" \
|
||||||
|
- --xsltproc-opts="--stringparam nut.localdate \"`TZ=UTC date +%Y-%m-%d`\"" \
|
||||||
|
- --xsltproc-opts="--stringparam nut.localtime \"`TZ=UTC date +%H:%M:%S`\"" \
|
||||||
|
+ --xsltproc-opts "--stringparam nut.localdate \"`TZ=UTC date +%Y-%m-%d -r $(top_srcdir)/ChangeLog`\"" \
|
||||||
|
+ --xsltproc-opts "--stringparam nut.localtime \"`TZ=UTC date +%H:%M:%S -r $(top_srcdir)/ChangeLog`\"" \
|
||||||
|
--xsltproc-opts="--stringparam nut.nutversion \"@PACKAGE_VERSION@\"" \
|
||||||
|
--attribute=docinfodir="$(builddir)" \
|
||||||
|
--attribute=iconsdir="$(srcdir)/images" \
|
||||||
|
diff -purN a/docs/man/Makefile.am b/docs/man/Makefile.am
|
||||||
|
--- a/docs/man/Makefile.am 2023-10-24 10:45:21.000000000 +0200
|
||||||
|
+++ b/docs/man/Makefile.am 2023-11-03 19:41:55.114481978 +0100
|
||||||
|
@@ -999,8 +999,8 @@ DOCBUILD_END = { \
|
||||||
|
echo " DOC-MAN-HTML Generating $@"; \
|
||||||
|
$(DOCBUILD_BEGIN) ; RES=0; \
|
||||||
|
$(ASCIIDOC) --backend=xhtml11 $${A2X_VERBOSE} \
|
||||||
|
- --attribute localdate="`TZ=UTC date +%Y-%m-%d`" \
|
||||||
|
- --attribute localtime="`TZ=UTC date +%H:%M:%S`" \
|
||||||
|
+ --attribute localdate=`TZ=UTC date +%Y-%m-%d -r $(top_srcdir)/ChangeLog` \
|
||||||
|
+ --attribute localtime=`TZ=UTC date +%H:%M:%S -r $(top_srcdir)/ChangeLog` \
|
||||||
|
--attribute nutversion="@PACKAGE_VERSION@" \
|
||||||
|
--attribute srcdir="$(abs_srcdir)/" \
|
||||||
|
--attribute builddir="$(abs_builddir)/" \
|
19
nut-notifyflag.patch
Normal file
19
nut-notifyflag.patch
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
diff -purN a/conf/upsmon.conf.sample.in b/conf/upsmon.conf.sample.in
|
||||||
|
--- a/conf/upsmon.conf.sample.in 2023-10-28 23:36:02.000000000 +0200
|
||||||
|
+++ b/conf/upsmon.conf.sample.in 2023-11-03 19:38:24.015393331 +0100
|
||||||
|
@@ -364,6 +364,15 @@ POWERDOWNFLAG "@POWERDOWNFLAG@"
|
||||||
|
#
|
||||||
|
# If you use IGNORE, don't use any other flags on the same line.
|
||||||
|
|
||||||
|
+NOTIFYFLAG ONLINE SYSLOG
|
||||||
|
+NOTIFYFLAG COMMOK SYSLOG
|
||||||
|
+NOTIFYFLAG SHUTDOWN SYSLOG
|
||||||
|
+NOTIFYFLAG ONBATT SYSLOG+WALL
|
||||||
|
+NOTIFYFLAG LOWBATT SYSLOG+WALL
|
||||||
|
+NOTIFYFLAG FSD SYSLOG+WALL
|
||||||
|
+NOTIFYFLAG NOCOMM SYSLOG+WALL
|
||||||
|
+NOTIFYFLAG COMMBAD SYSLOG+WALL
|
||||||
|
+
|
||||||
|
# --------------------------------------------------------------------------
|
||||||
|
# OFFDURATION - put "OFF" state into effect if it persists for this many seconds
|
||||||
|
#
|
48
nut-preconfig.patch
Normal file
48
nut-preconfig.patch
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
diff -purN a/conf/hosts.conf.sample b/conf/hosts.conf.sample
|
||||||
|
--- a/conf/hosts.conf.sample 2023-02-28 13:49:32.000000000 +0100
|
||||||
|
+++ b/conf/hosts.conf.sample 2023-11-03 19:28:46.048488997 +0100
|
||||||
|
@@ -27,3 +27,5 @@
|
||||||
|
# MONITOR myups@localhost "Local UPS"
|
||||||
|
# MONITOR su2200@10.64.1.1 "Finance department"
|
||||||
|
# MONITOR matrix@shs-server.example.edu "Sierra High School data room #1"
|
||||||
|
+
|
||||||
|
+MONITOR myups@localhost "Local UPS"
|
||||||
|
diff -purN a/conf/ups.conf.sample b/conf/ups.conf.sample
|
||||||
|
--- a/conf/ups.conf.sample 2023-10-28 23:02:42.000000000 +0200
|
||||||
|
+++ b/conf/ups.conf.sample 2023-11-03 19:29:35.641548694 +0100
|
||||||
|
@@ -214,3 +214,8 @@ maxretry = 3
|
||||||
|
#
|
||||||
|
# To find out if your driver supports any extra settings, start it with
|
||||||
|
# the -h option and/or read the driver's documentation.
|
||||||
|
+
|
||||||
|
+[myups]
|
||||||
|
+ driver = undefined
|
||||||
|
+ port = /dev/undefined
|
||||||
|
+ desc = "Local UPS"
|
||||||
|
diff -purN a/conf/upsd.conf.sample b/conf/upsd.conf.sample
|
||||||
|
--- a/conf/upsd.conf.sample 2023-09-17 16:34:05.000000000 +0200
|
||||||
|
+++ b/conf/upsd.conf.sample 2023-11-03 19:30:18.374644467 +0100
|
||||||
|
@@ -183,3 +183,11 @@
|
||||||
|
# or CLI options, regardless of older logging level being higher or lower
|
||||||
|
# than the newly found number; a missing (or commented away) value however
|
||||||
|
# does not change the previously active logging verbosity.
|
||||||
|
+
|
||||||
|
+[upsmaster]
|
||||||
|
+ password = @UPSD_INITIAL_MASTER_PASSWORD@
|
||||||
|
+ upsmon master
|
||||||
|
+
|
||||||
|
+[upsslave]
|
||||||
|
+ password = @UPSD_INITIAL_SLAVE_PASSWORD@
|
||||||
|
+ upsmon slave
|
||||||
|
diff -purN a/conf/upsmon.conf.sample.in b/conf/upsmon.conf.sample.in
|
||||||
|
--- a/conf/upsmon.conf.sample.in 2023-10-28 23:36:02.000000000 +0200
|
||||||
|
+++ b/conf/upsmon.conf.sample.in 2023-11-03 19:25:57.482732658 +0100
|
||||||
|
@@ -117,6 +117,8 @@
|
||||||
|
# MONITOR su700@server.example.com 1 monuser secretpass secondary
|
||||||
|
# MONITOR myups@localhost 1 monuser pass primary # (or secondary)
|
||||||
|
|
||||||
|
+MONITOR myups@localhost 1 upsmaster @UPSD_INITIAL_MASTER_PASSWORD@ master
|
||||||
|
+
|
||||||
|
# --------------------------------------------------------------------------
|
||||||
|
# MINSUPPLIES <num>
|
||||||
|
#
|
1286
nut.changes
Normal file
1286
nut.changes
Normal file
File diff suppressed because it is too large
Load Diff
167
nut.keyring
Normal file
167
nut.keyring
Normal file
@ -0,0 +1,167 @@
|
|||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
Comment: B834 59F7 76B9 0224 988F 36C0 DE01 84DA 7043 DCF7
|
||||||
|
Comment: Jim Klimov (Doing FOSS since last millennium) <jimklimo
|
||||||
|
|
||||||
|
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
|
||||||
|
robYJcFvq9Nqudw=
|
||||||
|
=GbxM
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
6
nut.rpmlintrc
Normal file
6
nut.rpmlintrc
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
addFilter("binary-or-shlib-calls-gethostbyname /usr/libexec/ups/driver/apcupsd-ups")
|
||||||
|
addFilter("logrotate-log-dir-not-packaged /var/log$")
|
||||||
|
addFilter("obsolete-not-provided nut-devel-doc-pdf")
|
||||||
|
addFilter("obsolete-not-provided nut-doc-pdf")
|
||||||
|
addFilter("obsolete-not-provided nut-hal")
|
||||||
|
addFilter("potential-bashisms /usr/libexec/nut-driver-enumerator.sh")
|
553
nut.spec
Normal file
553
nut.spec
Normal file
@ -0,0 +1,553 @@
|
|||||||
|
#
|
||||||
|
# spec file for package nut
|
||||||
|
#
|
||||||
|
# Copyright (c) 2024 SUSE LLC
|
||||||
|
#
|
||||||
|
# All modifications and additions to the file contributed by third parties
|
||||||
|
# remain the property of their copyright owners, unless otherwise agreed
|
||||||
|
# upon. The license for this file, and modifications and additions to the
|
||||||
|
# file, is the same license as for the pristine package itself (unless the
|
||||||
|
# license for the pristine package is not an Open Source License, in which
|
||||||
|
# case the license is the MIT License). An "Open Source License" is a
|
||||||
|
# license that conforms to the Open Source Definition (Version 1.9)
|
||||||
|
# published by the Open Source Initiative.
|
||||||
|
|
||||||
|
# Please submit bugfixes or comments via https://bugs.opensuse.org/
|
||||||
|
#
|
||||||
|
|
||||||
|
|
||||||
|
%define CGIPATH %{apache_serverroot}/cgi-bin/%{name}
|
||||||
|
%define HTMLPATH %{apache_serverroot}/htdocs/%{name}
|
||||||
|
%define MODELPATH %{_libexecdir}/ups/driver
|
||||||
|
%define STATEPATH %{_localstatedir}/lib/ups
|
||||||
|
%define CONFPATH %{_sysconfdir}/ups
|
||||||
|
%define PIDPATH %{_rundir}
|
||||||
|
%define NUT_USER upsd
|
||||||
|
%define NUT_GROUP daemon
|
||||||
|
%define LBRACE (
|
||||||
|
%define RBRACE )
|
||||||
|
%define QUOTE "
|
||||||
|
%define BACKSLASH \\
|
||||||
|
# Collect all devices listed in ups-nut-device.fdi:
|
||||||
|
%define USBHIDDRIVERS %(zcat %{SOURCE0} | tr a-z A-Z | grep -a -A1 USBHID-UPS | sed -n 's/.*ATTR{IDVENDOR}==%{QUOTE}%{BACKSLASH}%{LBRACE}[^%{QUOTE}]*%{BACKSLASH}%{RBRACE}%{QUOTE}, ATTR{IDPRODUCT}==%{QUOTE}%{BACKSLASH}%{LBRACE}[^%{QUOTE}]*%{BACKSLASH}%{RBRACE}%{QUOTE}, MODE=.*/modalias%{LBRACE}usb:v%{BACKSLASH}1p%{BACKSLASH}2d*dc*dsc*dp*ic*isc*ip*%{RBRACE}/p' | tr '%{BACKSLASH}n' ' ')
|
||||||
|
%define USBNONHIDDRIVERS %(zcat %{SOURCE0} | tr a-z A-Z | grep -a -A1 _USB | sed -n 's/.*ATTR{IDVENDOR}==%{QUOTE}%{BACKSLASH}%{LBRACE}[^%{QUOTE}]*%{BACKSLASH}%{RBRACE}%{QUOTE}, ATTR{IDPRODUCT}==%{QUOTE}%{BACKSLASH}%{LBRACE}[^%{QUOTE}]*%{BACKSLASH}%{RBRACE}%{QUOTE}, MODE=.*/modalias%{LBRACE}usb:v%{BACKSLASH}1p%{BACKSLASH}2d*dc*dsc*dp*ic*isc*ip*%{RBRACE}/p' | tr '%{BACKSLASH}n' ' ')
|
||||||
|
%define systemdsystemdutildir %(pkg-config --variable=systemdutildir systemd)
|
||||||
|
%define bashcompletionsdir %(pkg-config bash-completion --variable=completionsdir)
|
||||||
|
%bcond_with texdoc
|
||||||
|
%if 0%{?suse_version} >= 1500
|
||||||
|
%bcond_without libi2c
|
||||||
|
%else
|
||||||
|
%bcond_with libi2c
|
||||||
|
%endif
|
||||||
|
%if 0%{?suse_version} > 1500 || 0%{?sle_version} >= 150400
|
||||||
|
%bcond_without libmodbus
|
||||||
|
%else
|
||||||
|
%bcond_with libmodbus
|
||||||
|
%endif
|
||||||
|
%if 0%{?suse_version} == 1500
|
||||||
|
%bcond_without libnsl
|
||||||
|
%else
|
||||||
|
%bcond_with libnsl
|
||||||
|
%endif
|
||||||
|
%ifarch %{ix86} x86_64 ia64
|
||||||
|
%bcond_without libfreeipmi
|
||||||
|
%else
|
||||||
|
%bcond_with libfreeipmi
|
||||||
|
%endif
|
||||||
|
Name: nut
|
||||||
|
Version: 2.8.2
|
||||||
|
Release: 0
|
||||||
|
Summary: Network UPS Tools Core (Uninterruptible Power Supply Monitoring)
|
||||||
|
License: GPL-2.0-or-later
|
||||||
|
Group: Hardware/UPS
|
||||||
|
URL: https://www.networkupstools.org/
|
||||||
|
# Repack with upstream PR #2623 patched in due to files with proprietary license
|
||||||
|
Source0: %{name}-%{version}-repack.tar.gz
|
||||||
|
Source2: README.SUSE
|
||||||
|
Source3: nut.rpmlintrc
|
||||||
|
Source4: nut.keyring
|
||||||
|
Source6: nut.system-sleep
|
||||||
|
Patch0: nut-preconfig.patch
|
||||||
|
Patch1: nut-notifyflag.patch
|
||||||
|
# PATCH-FEATURE-OPENSUSE nut-doc-fixed-date.patch sbrabec@suse.cz -- Make doc builds reproducible.
|
||||||
|
Patch2: nut-doc-fixed-date.patch
|
||||||
|
Patch3: harden_nut-driver.service.patch
|
||||||
|
Patch4: harden_nut-monitor.service.patch
|
||||||
|
Patch5: harden_nut-server.service.patch
|
||||||
|
BuildRequires: apache-rpm-macros
|
||||||
|
BuildRequires: asciidoc
|
||||||
|
BuildRequires: fdupes
|
||||||
|
BuildRequires: gcc-c++
|
||||||
|
BuildRequires: libcppunit-devel
|
||||||
|
BuildRequires: libtool
|
||||||
|
BuildRequires: libxml2-tools
|
||||||
|
BuildRequires: libxslt-tools
|
||||||
|
BuildRequires: net-snmp-devel
|
||||||
|
BuildRequires: pkgconfig
|
||||||
|
BuildRequires: tcpd-devel
|
||||||
|
BuildRequires: pkgconfig(avahi-client)
|
||||||
|
BuildRequires: pkgconfig(avahi-core)
|
||||||
|
BuildRequires: pkgconfig(bash-completion)
|
||||||
|
BuildRequires: pkgconfig(dbus-glib-1)
|
||||||
|
BuildRequires: pkgconfig(gdlib)
|
||||||
|
BuildRequires: pkgconfig(libgpiod) >= 1.0.0
|
||||||
|
BuildRequires: pkgconfig(libpowerman)
|
||||||
|
BuildRequires: pkgconfig(libsystemd)
|
||||||
|
BuildRequires: pkgconfig(libusb-1.0)
|
||||||
|
BuildRequires: pkgconfig(neon)
|
||||||
|
BuildRequires: pkgconfig(openssl)
|
||||||
|
BuildRequires: pkgconfig(udev)
|
||||||
|
Requires: logrotate
|
||||||
|
Requires: usbutils
|
||||||
|
Requires(post): udev
|
||||||
|
# Package provides driver for USB HID UPSes, but people can live with hal addon:
|
||||||
|
Enhances: %{USBHIDDRIVERS}
|
||||||
|
# Package provides the only avalailable driver for other USB UPSes:
|
||||||
|
Supplements: %{USBNONHIDDRIVERS}
|
||||||
|
# for update from openSUSE <= 11.3, SLE <= 11
|
||||||
|
Provides: nut-classic = %{version}
|
||||||
|
Obsoletes: nut-classic < %{version}
|
||||||
|
Obsoletes: nut-hal < %{version}
|
||||||
|
%{?systemd_requires}
|
||||||
|
%if %{with libfreeipmi}
|
||||||
|
BuildRequires: pkgconfig(libfreeipmi)
|
||||||
|
%endif
|
||||||
|
%if %{with libi2c}
|
||||||
|
BuildRequires: libi2c0-devel
|
||||||
|
%endif
|
||||||
|
%if %{with libmodbus}
|
||||||
|
BuildRequires: pkgconfig(libmodbus)
|
||||||
|
%endif
|
||||||
|
%if %{with libnsl}
|
||||||
|
BuildRequires: pkgconfig(libnsl)
|
||||||
|
%endif
|
||||||
|
%if %{with texdoc}
|
||||||
|
BuildRequires: asciidoc-latex-backend
|
||||||
|
%else
|
||||||
|
# Obsolete all the docu stuff with disabled tex dependencies
|
||||||
|
Obsoletes: %{name}-devel-doc-pdf <= %{version}
|
||||||
|
Obsoletes: %{name}-doc-pdf <= %{version}
|
||||||
|
%endif
|
||||||
|
%if 0%{?suse_version} >= 1500
|
||||||
|
BuildRequires: source-highlight
|
||||||
|
Requires(pre): user(upsd)
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%description
|
||||||
|
Core package of Network UPS Tools.
|
||||||
|
|
||||||
|
Network UPS Tools is a collection of programs which provide a common
|
||||||
|
interface for monitoring and administering UPS hardware.
|
||||||
|
|
||||||
|
%package drivers-net
|
||||||
|
Summary: Network UPS Tools - Extra Networking Drivers (for Network Monitoring)
|
||||||
|
Group: Hardware/UPS
|
||||||
|
Requires: %{name} = %{version}
|
||||||
|
Enhances: %{name}
|
||||||
|
|
||||||
|
%description drivers-net
|
||||||
|
Networking drivers for the Network UPS Tools. You will need them
|
||||||
|
together with nut to provide UPS networking support.
|
||||||
|
|
||||||
|
Network UPS Tools is a collection of programs which provide a common
|
||||||
|
interface for monitoring and administering UPS hardware.
|
||||||
|
|
||||||
|
%package -n libnutclient2
|
||||||
|
Summary: Network UPS Tools Library (Uninterruptible Power Supply Monitoring)
|
||||||
|
Group: System/Libraries
|
||||||
|
Conflicts: libupsclient1
|
||||||
|
|
||||||
|
%description -n libnutclient2
|
||||||
|
Shared library for the Network UPS Tools.
|
||||||
|
|
||||||
|
Network UPS Tools is a collection of programs which provide a common
|
||||||
|
interface for monitoring and administering UPS hardware.
|
||||||
|
|
||||||
|
%package -n libnutscan2
|
||||||
|
Summary: Network UPS Tools Library (Uninterruptible Power Supply Monitoring)
|
||||||
|
Group: System/Libraries
|
||||||
|
Conflicts: libupsclient1
|
||||||
|
|
||||||
|
%description -n libnutscan2
|
||||||
|
Shared library for the Network UPS Tools.
|
||||||
|
|
||||||
|
Network UPS Tools is a collection of programs which provide a common
|
||||||
|
interface for monitoring and administering UPS hardware.
|
||||||
|
|
||||||
|
%package -n libupsclient6
|
||||||
|
Summary: Network UPS Tools Library (Uninterruptible Power Supply Monitoring)
|
||||||
|
Group: System/Libraries
|
||||||
|
Conflicts: libupsclient1
|
||||||
|
|
||||||
|
%description -n libupsclient6
|
||||||
|
Shared library for the Network UPS Tools.
|
||||||
|
|
||||||
|
Network UPS Tools is a collection of programs which provide a common
|
||||||
|
interface for monitoring and administering UPS hardware.
|
||||||
|
|
||||||
|
%package -n libnutclientstub1
|
||||||
|
Summary: Network UPS Tools Library (Uninterruptible Power Supply Monitoring)
|
||||||
|
Group: System/Libraries
|
||||||
|
Conflicts: libupsclient1
|
||||||
|
|
||||||
|
%description -n libnutclientstub1
|
||||||
|
Shared library for the Network UPS Tools.
|
||||||
|
|
||||||
|
Network UPS Tools is a collection of programs which provide a common
|
||||||
|
interface for monitoring and administering UPS hardware.
|
||||||
|
|
||||||
|
%package cgi
|
||||||
|
Summary: Network UPS Tools Web Server Support (UPS Status Pages)
|
||||||
|
Group: Hardware/UPS
|
||||||
|
Requires: %{name} = %{version}
|
||||||
|
Enhances: %{name}
|
||||||
|
Supplements: (%{name} and apache2)
|
||||||
|
|
||||||
|
%description cgi
|
||||||
|
Web server support package for the Network UPS Tools.
|
||||||
|
|
||||||
|
Predefined URL is http://localhost/nut/index.html
|
||||||
|
|
||||||
|
Network UPS Tools is a collection of programs which provide a common
|
||||||
|
interface for monitoring and administering UPS hardware.
|
||||||
|
|
||||||
|
%package devel
|
||||||
|
Summary: Network UPS Tools (Uninterruptible Power Supply Monitoring)
|
||||||
|
Group: Development/Libraries/C and C++
|
||||||
|
Requires: libnutclient2 = %{version}-%{release}
|
||||||
|
Requires: libnutclientstub1 = %{version}-%{release}
|
||||||
|
Requires: libnutscan2 = %{version}-%{release}
|
||||||
|
Requires: libupsclient6 = %{version}-%{release}
|
||||||
|
Requires: pkgconfig(openssl)
|
||||||
|
|
||||||
|
%description devel
|
||||||
|
Network UPS Tools is a collection of programs which provide a common
|
||||||
|
interface for monitoring and administering UPS hardware.
|
||||||
|
|
||||||
|
%package doc-asciidoc
|
||||||
|
Summary: Network UPS Tools - Documentation in AsciiDoc Format
|
||||||
|
Group: Documentation/Other
|
||||||
|
Requires: %{name}-doc-images = %{version}
|
||||||
|
Recommends: %{name} = %{version}
|
||||||
|
Enhances: %{name}
|
||||||
|
BuildArch: noarch
|
||||||
|
|
||||||
|
%description doc-asciidoc
|
||||||
|
NUT manuals in AsciiDoc format (human readable source).
|
||||||
|
|
||||||
|
Network UPS Tools is a collection of programs which provide a common
|
||||||
|
interface for monitoring and administering UPS hardware.
|
||||||
|
|
||||||
|
%package devel-doc-html
|
||||||
|
Summary: Network UPS Tools - Documentation in HTML
|
||||||
|
# For CSS files:
|
||||||
|
Group: Documentation/HTML
|
||||||
|
Requires: %{name}-doc-html = %{version}
|
||||||
|
Requires: %{name}-doc-images = %{version}
|
||||||
|
Recommends: %{name} = %{version}
|
||||||
|
Enhances: %{name}
|
||||||
|
BuildArch: noarch
|
||||||
|
|
||||||
|
%description devel-doc-html
|
||||||
|
Developer manual in HTML format.
|
||||||
|
|
||||||
|
Network UPS Tools is a collection of programs which provide a common
|
||||||
|
interface for monitoring and administering UPS hardware.
|
||||||
|
|
||||||
|
%package doc-html
|
||||||
|
Summary: Network UPS Tools - Documentation in HTML
|
||||||
|
Group: Documentation/HTML
|
||||||
|
Requires: %{name}-doc-images = %{version}
|
||||||
|
Recommends: %{name} = %{version}
|
||||||
|
Enhances: %{name}
|
||||||
|
BuildArch: noarch
|
||||||
|
|
||||||
|
%description doc-html
|
||||||
|
User manual in HTML format.
|
||||||
|
|
||||||
|
Network UPS Tools is a collection of programs which provide a common
|
||||||
|
interface for monitoring and administering UPS hardware.
|
||||||
|
|
||||||
|
%package doc-images
|
||||||
|
Summary: Network UPS Tools - Images for Documentation
|
||||||
|
Group: Documentation/Other
|
||||||
|
Requires: %{name}-doc-images = %{version}
|
||||||
|
Recommends: %{name} = %{version}
|
||||||
|
Enhances: %{name}
|
||||||
|
BuildArch: noarch
|
||||||
|
|
||||||
|
%description doc-images
|
||||||
|
Images for the documentation. It is a supplementary package for some NUT
|
||||||
|
documentation packages.
|
||||||
|
|
||||||
|
Network UPS Tools is a collection of programs which provide a common
|
||||||
|
interface for monitoring and administering UPS hardware.
|
||||||
|
|
||||||
|
%if %{with texdoc}
|
||||||
|
%package doc-pdf
|
||||||
|
Summary: Network UPS Tools - Documentation in PDF
|
||||||
|
Group: Documentation/Other
|
||||||
|
Recommends: %{name} = %{version}
|
||||||
|
Enhances: %{name}
|
||||||
|
BuildArch: noarch
|
||||||
|
|
||||||
|
%description doc-pdf
|
||||||
|
User manual in PDF format.
|
||||||
|
|
||||||
|
Network UPS Tools is a collection of programs which provide a common
|
||||||
|
interface for monitoring and administering UPS hardware.
|
||||||
|
|
||||||
|
%package devel-doc-pdf
|
||||||
|
Summary: Network UPS Tools - Documentation in PDF
|
||||||
|
Group: Documentation/Other
|
||||||
|
Recommends: %{name} = %{version}
|
||||||
|
Enhances: %{name}
|
||||||
|
BuildArch: noarch
|
||||||
|
|
||||||
|
%description devel-doc-pdf
|
||||||
|
Developer manual in PDF format.
|
||||||
|
|
||||||
|
Network UPS Tools is a collection of programs which provide a common
|
||||||
|
interface for monitoring and administering UPS hardware.
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%autosetup -p1
|
||||||
|
cp -a %{SOURCE2} .
|
||||||
|
sed -i s/@now@/`date -r ChangeLog +%%Y-%%m-%%d`/g docs/docinfo.xml.in
|
||||||
|
|
||||||
|
%build
|
||||||
|
autoreconf -fvi
|
||||||
|
%configure \
|
||||||
|
--disable-static \
|
||||||
|
--sysconfdir=%{CONFPATH} \
|
||||||
|
--datadir=%{_datadir}/%{name} \
|
||||||
|
--with-all \
|
||||||
|
%if %{with texdoc}
|
||||||
|
--with-doc="man html-single html-chunked pdf" \
|
||||||
|
%else
|
||||||
|
--with-doc="man html-single html-chunked" \
|
||||||
|
%endif
|
||||||
|
--with-ssl \
|
||||||
|
--with-openssl \
|
||||||
|
--without-nss \
|
||||||
|
%if %{without libmodbus}
|
||||||
|
--without-modbus \
|
||||||
|
%endif
|
||||||
|
%if %{with libnsl}
|
||||||
|
--with-wrap \
|
||||||
|
%endif
|
||||||
|
%if %{without libfreeipmi}
|
||||||
|
--without-ipmi \
|
||||||
|
%endif
|
||||||
|
%if %{without libi2c}
|
||||||
|
--without-i2c
|
||||||
|
%endif
|
||||||
|
--with-htmlpath=%{HTMLPATH} \
|
||||||
|
--with-cgipath=%{CGIPATH} \
|
||||||
|
--with-statepath=%{STATEPATH} \
|
||||||
|
--with-drvpath=%{MODELPATH} \
|
||||||
|
--with-pidpath=%{PIDPATH} \
|
||||||
|
--with-user=%{NUT_USER} \
|
||||||
|
--with-group=%{NUT_GROUP} \
|
||||||
|
--with-udev-dir=%{_udevrulesdir}/.. \
|
||||||
|
--enable-option-checking=fatal
|
||||||
|
|
||||||
|
# does not create reproducible output with parallelism
|
||||||
|
%make_build -j1
|
||||||
|
|
||||||
|
%install
|
||||||
|
%make_install
|
||||||
|
find %{buildroot} -type f -name "*.la" -delete -print
|
||||||
|
mkdir -p %{buildroot}%{STATEPATH}
|
||||||
|
mkdir -p %{buildroot}%{_docdir}/%{name}
|
||||||
|
mkdir -p %{buildroot}%{_sbindir}
|
||||||
|
|
||||||
|
# initscript
|
||||||
|
ln -s service %{buildroot}%{_sbindir}/rcnut-driver
|
||||||
|
ln -s service %{buildroot}%{_sbindir}/rcnut-server
|
||||||
|
ln -s service %{buildroot}%{_sbindir}/rcnut-monitor
|
||||||
|
rename .sample "" %{buildroot}%{_sysconfdir}/ups/*.sample
|
||||||
|
|
||||||
|
install -D -m 750 %{SOURCE6} %{buildroot}%{systemdsystemdutildir}/system-sleep/%{name}.sh
|
||||||
|
install -D -m 644 scripts/logrotate/nutlogd %{buildroot}%{_sysconfdir}/logrotate.d/%{name}
|
||||||
|
install -D -m 644 scripts/misc/nut.bash_completion %{buildroot}%{bashcompletionsdir}/%{name}
|
||||||
|
|
||||||
|
# Documentation
|
||||||
|
cp -a docs/*.txt docs/cables docs/images %{buildroot}%{_docdir}/%{name}/
|
||||||
|
cp -a docs/*.css docs/*.html %{buildroot}%{_docdir}/%{name}/
|
||||||
|
%if %{with texdoc}
|
||||||
|
cp -a docs/*.pdf %{buildroot}%{_docdir}/%{name}/
|
||||||
|
%endif
|
||||||
|
|
||||||
|
# Not needed for packaged contents:
|
||||||
|
rm -f %{buildroot}%{_docdir}/%{name}/packager-guide.*
|
||||||
|
rm -f %{buildroot}%{_docdir}/%{name}/cables/Makefile*
|
||||||
|
rm -f %{buildroot}%{_docdir}/%{name}/cables/*.txt-prepped
|
||||||
|
|
||||||
|
# Create symlinks for man pages
|
||||||
|
%fdupes -s %{buildroot}%{_mandir}
|
||||||
|
|
||||||
|
%pre
|
||||||
|
%if 0%{?suse_version} < 1330
|
||||||
|
getent passwd %{NUT_USER} >/dev/null || useradd -r -g %{NUT_GROUP} -s /bin/false -c "UPS daemon" -d /sbin %{NUT_USER} 2>/dev/null
|
||||||
|
%endif
|
||||||
|
%service_add_pre nut-server.service nut-monitor.service nut-driver-enumerator.path nut-driver-enumerator.service nut-driver.target nut.target nut-driver-enumerator-daemon-activator.path nut-driver-enumerator-daemon-activator.service nut-driver-enumerator-daemon.service
|
||||||
|
|
||||||
|
%post
|
||||||
|
# Generate initial passwords.
|
||||||
|
if grep -q "password = @UPSD_INITIAL_MASTER_PASSWORD@" %{CONFPATH}/upsmon.conf %{CONFPATH}/upsd.users; then
|
||||||
|
UPSD_INITIAL_MASTER_PASSWORD=$(head -c 20 /dev/urandom | md5sum | head -c 10)
|
||||||
|
sed -i s/@UPSD_INITIAL_MASTER_PASSWORD@/$UPSD_INITIAL_MASTER_PASSWORD/ %{CONFPATH}/upsmon.conf %{CONFPATH}/upsd.users
|
||||||
|
fi
|
||||||
|
if grep -q "password = @UPSD_INITIAL_SLAVE_PASSWORD@" %{CONFPATH}/upsd.users ; then
|
||||||
|
UPSD_INITIAL_SLAVE_PASSWORD=$(head -c 20 /dev/urandom | md5sum | head -c 10)
|
||||||
|
sed -i s/@UPSD_INITIAL_SLAVE_PASSWORD@/$UPSD_INITIAL_SLAVE_PASSWORD/ %{CONFPATH}/upsd.users
|
||||||
|
fi
|
||||||
|
# Migrate Suspend to Disc to the new convention (bnc#449861 and later bnc#871406):
|
||||||
|
# It was never on by default, but documentation up to 11.0 recommends
|
||||||
|
# "shutdown -z +0" for suspend to disc. It was discontinued before 11.0.
|
||||||
|
# Documentation since 11.0 up to 13.1 recommends /powersave -U.
|
||||||
|
# pm-utils (and powersave) were obsoleted after 13.1 in favor of systemd.
|
||||||
|
if grep "shutdown -z +0" %{_sysconfdir}/ups/upsmon.conf ; then
|
||||||
|
sed -i 's:/sbin/shutdown -z +0:%{_bindir}/systemctl hibernate:;s:shutdown -z +0:%{_bindir}/systemctl hibernate:' %{_sysconfdir}/ups/upsmon.conf
|
||||||
|
fi
|
||||||
|
if grep "powersave -U" %{_sysconfdir}/ups/upsmon.conf ; then
|
||||||
|
sed -i 's:%{_bindir}/powersave -U:%{_bindir}/systemctl hibernate:;s:powersave -U:%{_bindir}/systemctl hibernate:' %{_sysconfdir}/ups/upsmon.conf
|
||||||
|
fi
|
||||||
|
# And finally trigger udev to set permissions according to newly installed rules files.
|
||||||
|
udevadm trigger --subsystem-match=usb --property-match=DEVTYPE=usb_device
|
||||||
|
%service_add_post nut-server.service nut-monitor.service nut-driver-enumerator.path nut-driver-enumerator.service nut-driver.target nut.target nut-driver-enumerator-daemon-activator.path nut-driver-enumerator-daemon-activator.service nut-driver-enumerator-daemon.service
|
||||||
|
%tmpfiles_create %{_tmpfilesdir}/%{name}-common-tmpfiles.conf
|
||||||
|
|
||||||
|
%preun
|
||||||
|
%service_del_preun nut-server.service nut-monitor.service nut-driver-enumerator.path nut-driver-enumerator.service nut-driver.target nut.target nut-driver-enumerator-daemon-activator.path nut-driver-enumerator-daemon-activator.service nut-driver-enumerator-daemon.service
|
||||||
|
|
||||||
|
%postun
|
||||||
|
%service_del_postun nut-server.service nut-monitor.service nut-driver-enumerator.path nut-driver-enumerator.service nut-driver.target nut.target nut-driver-enumerator-daemon-activator.path nut-driver-enumerator-daemon-activator.service nut-driver-enumerator-daemon.service
|
||||||
|
|
||||||
|
%if 0%{?suse_version} > 1500 || 0%{?sle_version} >= 150400
|
||||||
|
%ldconfig_scriptlets -n libnutclient2
|
||||||
|
%ldconfig_scriptlets -n libnutclientstub1
|
||||||
|
%ldconfig_scriptlets -n libnutscan2
|
||||||
|
%ldconfig_scriptlets -n libupsclient6
|
||||||
|
%else
|
||||||
|
%post -n libnutclient2 -p /sbin/ldconfig
|
||||||
|
%postun -n libnutclient2 -p /sbin/ldconfig
|
||||||
|
%post -n libnutclientstub1 -p /sbin/ldconfig
|
||||||
|
%postun -n libnutclientstub1 -p /sbin/ldconfig
|
||||||
|
%post -n libnutscan2 -p /sbin/ldconfig
|
||||||
|
%postun -n libnutscan2 -p /sbin/ldconfig
|
||||||
|
%post -n libupsclient6 -p /sbin/ldconfig
|
||||||
|
%postun -n libupsclient6 -p /sbin/ldconfig
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%files
|
||||||
|
%doc AUTHORS ChangeLog MAINTAINERS NEWS.adoc README.adoc README.SUSE UPGRADING.adoc
|
||||||
|
%license COPYING
|
||||||
|
%config %{_sysconfdir}/logrotate.d/*
|
||||||
|
%{_bindir}/*
|
||||||
|
%{_datadir}/%{name}
|
||||||
|
%{_mandir}/man5/*%{ext_man}
|
||||||
|
%{_mandir}/man8/*%{ext_man}
|
||||||
|
%exclude %{_mandir}/man8/netxml-ups*.*
|
||||||
|
%exclude %{_mandir}/man8/snmp-ups*.*
|
||||||
|
%dir %{_libexecdir}/ups
|
||||||
|
%{_libexecdir}/nut-driver-enumerator.sh
|
||||||
|
%python_sitearch/PyNUT.py
|
||||||
|
%{_sbindir}/*
|
||||||
|
%{_udevrulesdir}/*.rules
|
||||||
|
%config(noreplace) %{CONFPATH}/hosts.conf
|
||||||
|
%config(noreplace) %attr(600,%{NUT_USER},root) %{CONFPATH}/upsd.conf
|
||||||
|
%config(noreplace) %attr(600,%{NUT_USER},root) %{CONFPATH}/upsd.users
|
||||||
|
%config(noreplace) %attr(600,%{NUT_USER},root) %{CONFPATH}/upsmon.conf
|
||||||
|
%dir %{CONFPATH}
|
||||||
|
%config(noreplace) %{CONFPATH}/nut.conf
|
||||||
|
%config(noreplace) %{CONFPATH}/ups.conf
|
||||||
|
%config(noreplace) %{CONFPATH}/upsset.conf
|
||||||
|
%config(noreplace) %{CONFPATH}/upssched.conf
|
||||||
|
%dir %{MODELPATH}
|
||||||
|
%{MODELPATH}/*
|
||||||
|
%exclude %{MODELPATH}/snmp-ups
|
||||||
|
%exclude %{MODELPATH}/netxml-ups
|
||||||
|
%dir %attr(700,%{NUT_USER},%{NUT_GROUP}) %{STATEPATH}
|
||||||
|
%{_unitdir}/*.path
|
||||||
|
%{_unitdir}/*.target
|
||||||
|
%{_unitdir}/*.service
|
||||||
|
%{systemdsystemdutildir}/system-shutdown/*
|
||||||
|
%{systemdsystemdutildir}/system-sleep/%{name}.sh
|
||||||
|
%{bashcompletionsdir}/*
|
||||||
|
%{_tmpfilesdir}/%{name}-common-tmpfiles.conf
|
||||||
|
%ghost %{_rundir}/%{name}
|
||||||
|
%ghost %attr(700,%{NUT_USER},%{NUT_GROUP}) %{STATEPATH}/upssched
|
||||||
|
|
||||||
|
%files drivers-net
|
||||||
|
%{MODELPATH}/snmp-ups
|
||||||
|
%{MODELPATH}/netxml-ups
|
||||||
|
%{_mandir}/man8/netxml-ups*%{ext_man}
|
||||||
|
%{_mandir}/man8/snmp-ups*%{ext_man}
|
||||||
|
|
||||||
|
%files -n libnutclient2
|
||||||
|
%{_libdir}/libnutclient.so.*
|
||||||
|
|
||||||
|
%files -n libnutclientstub1
|
||||||
|
%{_libdir}/libnutclientstub.so.*
|
||||||
|
|
||||||
|
%files -n libnutscan2
|
||||||
|
%{_libdir}/libnutscan.so.*
|
||||||
|
|
||||||
|
%files -n libupsclient6
|
||||||
|
%{_libdir}/libupsclient.so.*
|
||||||
|
|
||||||
|
%files cgi
|
||||||
|
%dir %{apache_serverroot}
|
||||||
|
%dir %{apache_serverroot}/cgi-bin
|
||||||
|
%dir %{apache_serverroot}/htdocs
|
||||||
|
%{CGIPATH}
|
||||||
|
%{HTMLPATH}
|
||||||
|
%config(noreplace) %{CONFPATH}/upsstats-single.html
|
||||||
|
%config(noreplace) %{CONFPATH}/upsstats.html
|
||||||
|
|
||||||
|
%files devel
|
||||||
|
%{_includedir}/*.h
|
||||||
|
%{_libdir}/*.so
|
||||||
|
%{_libdir}/pkgconfig/*.pc
|
||||||
|
%{_libexecdir}/sockdebug
|
||||||
|
%{_mandir}/man3/*%{ext_man}
|
||||||
|
%python_sitearch/test_nutclient.py
|
||||||
|
|
||||||
|
%files doc-asciidoc
|
||||||
|
%doc %dir %{_docdir}/%{name}{,/cables}
|
||||||
|
%{_docdir}/%{name}/*.txt
|
||||||
|
%{_docdir}/%{name}/cables/*.txt
|
||||||
|
|
||||||
|
%files devel-doc-html
|
||||||
|
%{_docdir}/%{name}/developer-guide.html
|
||||||
|
|
||||||
|
%files doc-html
|
||||||
|
%{_docdir}/%{name}/ChangeLog.html
|
||||||
|
%{_docdir}/%{name}/FAQ.html
|
||||||
|
%{_docdir}/%{name}/cables.html
|
||||||
|
%{_docdir}/%{name}/release-notes.html
|
||||||
|
%{_docdir}/%{name}/solaris-usb.html
|
||||||
|
%{_docdir}/%{name}/user-manual.html
|
||||||
|
%{_docdir}/%{name}/*.css
|
||||||
|
|
||||||
|
%files doc-images
|
||||||
|
%doc %dir %{_docdir}/%{name}
|
||||||
|
%{_docdir}/%{name}/images
|
||||||
|
|
||||||
|
%if %{with texdoc}
|
||||||
|
%files doc-pdf
|
||||||
|
%doc %dir %{_docdir}/%{name}
|
||||||
|
%{_docdir}/%{name}/FAQ.pdf
|
||||||
|
%{_docdir}/%{name}/cables.pdf
|
||||||
|
%{_docdir}/%{name}/solaris-usb.pdf
|
||||||
|
%{_docdir}/%{name}/user-manual.pdf
|
||||||
|
|
||||||
|
%files devel-doc-pdf
|
||||||
|
%doc %dir %{_docdir}/%{name}
|
||||||
|
%{_docdir}/%{name}/developer-guide.pdf
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%changelog
|
17
nut.system-sleep
Normal file
17
nut.system-sleep
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Always stop nut before sleep, but do not initiate powerdown for hybrid-sleep.
|
||||||
|
if [ "$1" = pre ] && ( [ "$2" = hibernate ] || [ "$2" = hybrid-sleep ] ) ; then
|
||||||
|
/usr/bin/systemctl stop nut-server.service
|
||||||
|
fi
|
||||||
|
if [ "$1" = pre ] && [ "$2" = hibernate ] ; then
|
||||||
|
# FIXME: All hibernate quirks are called in parallel. To be on a safest side, we should initiate powerdown grace period when they terminate.
|
||||||
|
sleep 5
|
||||||
|
if test -n "$POWERDOWNFLAG" -a -f "$POWERDOWNFLAG" ; then
|
||||||
|
export UPSD_POWERDOWN_CONDITION=1
|
||||||
|
/usr/sbin/upsdrvctl shutdown
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [ "$1" = post ] && ( [ "$2" = hibernate ] || [ "$2" = hybrid-sleep ] ) ; then
|
||||||
|
/usr/bin/systemctl start nut-server.service
|
||||||
|
fi
|
Loading…
Reference in New Issue
Block a user