Prev |  |

## 4. Optimized packaging proposal

### Note

The below proposed packages split is subject to discussion.

The aim of this is to:

- rationalize split according to the above use cases,
- share resources (descriptions, i18n, …)
- find the best compromise between available features and dependencies,
- standardize nut packages name,
- create the foundation for the upcoming and underway improvements,
- improve nut integration,
- ease and improve user experience.

This standard was created by:

- capitalizing on the experience of existing packages,
- using and improving the use of all nut features,
- considering upcoming nut changes and improvements,
- working closely with packagers.

### 4.1. Overview of the package tree

FIXME: make a dependency graph

- nut
- nut-common
- libupsclient1
- libupsclient1-dev
- nut-cgi
- nut-scanner
- nut-powerman-pdu
- nut-snmp
- nut-xml
- nut-ipmi
- nut-modbus
- nut-gpio (currently platform-dependent)
- nut-linux-i2c (platform-dependent)
- nut-macosx-ups (platform-dependent)
- nut-clients
- python-pynut
- python-nut-gui (or nut-control-center or Ultimate NUT Tool…)
- nut-doc

### 4.2. Detailed view of the package tree

### Note

- The Desc field represent the package’s description, as exposed by the packaging system. Each package’s description is composed of a paragraph common to all NUT packages, and a part that is specific to the package. The common part (further referenced by COMMON DESC) is:

>     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 Files field lists the content of the package.
- The mentioned Size is a rough estimation of packaged and installed size. This may varies across the systems and architecture, and is based upon the Debian x86 packages.
- The Deps field lists the dependencies of the packages. The exact name may vary across the various systems.
- The Comment field is used to place comment for points subject to discussion.

#### nut

- Desc:
- Files: install scripts to register user/group accounts in the OS; shared data and configuration files (e.g. systemd-tmpfiles, maybe systemd-presets, in case of Linux packaging)
- Size:
- Deps:

#### nut

- Desc:
- Files: dummy/serial/USB drivers + upsd + upslog
- Size:
- Deps:

#### libupsclient1

- Desc:
- Files:
- Size:
- Deps:

#### libupsclient1-dev

- Desc:
- Files:
- Size:
- Deps:

### Note

The "-dev" suffix is to be replaced by "-devel" on RPM based platforms.

#### nut-cgi

- Desc:
- Files:
- Size:
- Deps:

#### nut-scanner

- Desc:
- Files:
- Size:
- Deps:

### Note

Hard third-party dependency on `libltdl`; recommends `libsnmp`, `libneon`, and the `libusb` variant (0.1 or 1.0) it was built against.

#### nut-powerman-pdu

- Desc:
- Files:
- Size:
- Deps:

#### nut-snmp

- Desc:
- Files:
- Size:
- Deps:

#### nut-xml

- Desc:
- Files:
- Size:
- Deps:

#### nut-ipmi

- Desc:
- Files:
- Size:
- Deps:

#### nut-modbus

- Desc:
- Files:
- Size:
- Deps:

#### nut-gpio

- Desc: (currently platform-dependent)
- Files:
- Size:
- Deps:

#### nut-upower

- Desc: (may be platform-dependent); maybe better `nut-dbus`?
- Files:
- Size:
- Deps:

#### nut-linux-i2c

- Desc: (platform-dependent)
- Files:
- Size:
- Deps:

#### nut-macosx-ups

- Desc: (platform-dependent)
- Files:
- Size:
- Deps:

#### nut-clients

- Desc:
- Files:
- Size:
- Deps:

#### python-pynut

- Desc:
- Files:
- Size:
- Deps:

#### python-nut-gui

(or nut-control-center or Ultimate NUT Tool…)

- Desc:
- Files:
- Size:
- Deps:

#### nut-doc

- Desc:
- Files:
- Size:
- Deps:

    *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 + man pages

                    F) nut-doc:

                            Deps:
                            Files: dummycons + man page

                    G) nut-dev:

                            Deps:
                            Files: upsmon, upsc, upscmd, upsrw

                    H) nut-scanner:

                            Deps: hard dependency on `libltdl`; recommends `libsnmp`, `libneon`, and the `libusb` variant (0.1 or 1.0) it was built against.
                            Files: nut-scanner tool and libnutscan + man pages

    Note: "nut" can be a meta package

    This kind of tree obviously needs modification on the conf/make
    files of NUT to allow build/install in a separate way.

    ...
    TO BE CONTINUED
    ...

    Configuration option
    ^^^^^^^^^^^^^^^^^^^^

    Example:

    name= "ups" or "nut"
    ./configure \
                --prefix=/ \
                --with-confdir=/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
    ...

    NOTE: For packaging (OS distribution or in-house) it is recommended to
    primarily `./configure --with-all` and then excise `--without-something`
    explicitly for items not supported on your platform, so you do not miss
    out on new NUT features as they come with new releases. Some may require
    that you update your build environment with new third-party dependencies,
    so a broken build of a new NUT release would let you know how to act.

    NOTE: For eons, the way to specify the directory for NUT configuration
    files was to use `--sysconfdir=/etc/$name`. Since NUT v2.8.5 new options
    are available to customize this location and keep the default `sysconfdir`
    value intact (maybe unused).

Prev |  |
| Home |