Table of Contents
this is a Work In Progress document.
Abstract
The aim of this document is to describe the best way to package the Network UPS Tools, and the best practices across the various packaging implementation of NUT.
So as to these can be spread on all supported platforms as a standard, and as a foundation block to build upon.
Packaging is a final aim for software. It eases and completes the software integration into an OS, and allows users to have an easy software installation and support out of the box.
making NUT packaging more uniform should help its documentation, support and maintenance accross the supported OSes.
*sandbox* This document assumes that you have read the other NUT document such as INSTALL.nut, FAQ, config-notes.txt, ... Facts about NUT packaging ========================= NUT has so much evolved those two last years (with USB and SNMP support, the premices of libraries, ...) that the simple "1, 2 or 3 package(s)" approach is no more suitable. This fact has reached a high level since NUT 1.4. Actually, doing this would result in either being forced to install hosts of unneeded dependencies (net-snmp, gd, ... as seen on SuSE), to have a partially broken package [1] or not being able to use all NUT features [2]. Let's now have an overview on how NUT is currently packaged: 1) Debian: http://packages.qa.debian.org/n/nut.html nut, nut-dev, nut-usb, nut-snmp, nut-xml, nut-cgi, nut-doc 2) Mandriva http://cvs.mandriva.com/cgi-bin/cvsweb.cgi/SPECS/nut/ nut-server nut nut-cgi 3) SuSE / Novell nut 4) RedHat 5) PLD http://cvs.pld-linux.org/cgi-bin/cvsweb/SPECS/nut.spec ... (FreeBSD, Gentoo Linux, IRIX, NetBSD, OpenBSD) This shows how much the packages name split is now scattered. The result is: - that a user of several systems will be lost, and will waste time - there is a big waste of energy - this makes things hard to create standard configuration wizards [1] NUT build on Debian GNU/Linux m68k and Hurd was once broken due to hiddev dependencies, and usb support still included in the core package. [2] - snmp-ups driver is not available under Mandrake GNU/Linux, but its man is present. See http://rpms.mandrakeclub.com/rpms/mandrake/9.1/i586/Mandrake/RPMS/nut-server-1.2.1-4mdk.i586.html - secured ssh network mode not available (due to deps and/or non free) - some systems don't provide libupsclient lib/header/.pc so as to client application (such as wmnut) can't be built - the logger function is not (well) used, same goes for the syslog (triple redundancy in Mandriva) - the solution is partial in every system: lost of tests case / feedback could be shared ...
The following packagers are working on this subject:
the people below should be contacted to (re)launch discussions!
The following packagers should be interested in working on this subject:
TO BE COMPLETED…
The below proposed packages split is subject to discussion.
The aim of this is to:
This standard was created by:
FIXME: make a dependency graph
Network UPS Tools (NUT) is a client/server monitoring system that allows computers to share uninterruptible power supply (UPS) and power distribution unit (PDU) hardware. Clients access the hardware through the server, and are notified whenever the power status changes.
the "-dev" suffix is to be replaced by "-devel" on RPM based platforms.
*sandbox* nut-server ^^^^^^^^^^ Desc: Files: dummy/serial/USB drivers + upsd + upslog Size: Deps: nut-client, libusb, libc/ld B) nut-snmp Desc: Files: SNMP driver [/ manager ] Deps: nut-server, net-snmp, libc/ld C) nut-client Desc: don't force to have the server part/deps if not needed Files: upsmon, upsc, upscmd, upsrw + driver.list [+nut-dev (lib, .h, .pc, man] Deps: libc/ld E) nut-cgi Deps: Files: snmp-ups and powernet + manpages F) nut-doc: Deps: Files: dummycons + manpage G) nut-dev: Deps: Files: upsmon, upsc, upscmd, upsrw Note: "nut" can be a meta package This kind of tree obviously need modification on the conf/make files of NUT to allow build/install in a separate way. ... TO BE CONTINUED ... Configuration option ^^^^^^^^^^^^^^^^^^^^ name= "ups" or "nut" ./configure \ --prefix=/ \ --sysconfdir=/etc/$name \ --mandir=/usr/share/man \ --libdir=/usr/lib \ --includedir=/usr/include \ --datadir=/usr/share/$name \ --with-statepath=/var/run/nut \ --with-altpidpath=/var/run/nut \ --with-drvpath=/lib/nut \ --with-cgipath=/usr/lib/cgi-bin/$name \ html-path --with-pidpath=/var/run/$name \ --with-user=$name \ --with-cgi \ --without-ssl ...