kopia lustrzana https://github.com/weetmuts/wmbusmeters
Break out install scripts.
rodzic
8b258304ee
commit
8c468a5477
2
Makefile
2
Makefile
|
@ -221,7 +221,7 @@ wmbusmeters_$(DEBVERSION)_$(DEBARCH).deb:
|
|||
@./install.sh $(BUILD)/wmbusmeters $(BUILD)/debian/wmbusmeters --no-adduser
|
||||
# Remove the conf files, they are to be installed by postinst.
|
||||
@rm $(BUILD)/debian/wmbusmeters/etc/wmbusmeters.conf
|
||||
@rmdir $(BUILD)/debian/wmbusmeters/etc/wmbusmetersd
|
||||
@rm -rf $(BUILD)/debian/wmbusmeters/etc/wmbusmetersd
|
||||
# Build the control file
|
||||
@echo "Package: wmbusmeters" >> $(BUILD)/debian/wmbusmeters/DEBIAN/control
|
||||
@echo "Version: $(DEBVERSION)" >> $(BUILD)/debian/wmbusmeters/DEBIAN/control
|
||||
|
|
74
deb/postinst
74
deb/postinst
|
@ -1,74 +1,6 @@
|
|||
#!/bin/sh
|
||||
|
||||
ADD_WMBUSMETERS_USER
|
||||
|
||||
# Start wmbusmeters service
|
||||
|
||||
if [ $(getent group wmbusmeters) ]
|
||||
then
|
||||
echo "group: wmbusmeters unmodified"
|
||||
else
|
||||
groupadd -f wmbusmeters
|
||||
echo "group: added wmbusmeters"
|
||||
fi
|
||||
|
||||
ID=$(id -u wmbusmeters 2>/dev/null)
|
||||
|
||||
if [ -f /usr/sbin/nologin ]
|
||||
then
|
||||
USERSHELL="/usr/sbin/nologin"
|
||||
elif [ -f /sbin/nologin ]
|
||||
then
|
||||
USERSHELL="/sbin/nologin"
|
||||
else
|
||||
USERSHELL="/bin/false"
|
||||
fi
|
||||
|
||||
if [ -z "$ID" ]
|
||||
then
|
||||
# Create the wmbusmeters user
|
||||
useradd --system --shell $USERSHELL -g wmbusmeters wmbusmeters
|
||||
echo "user: added wmbusmeters"
|
||||
else
|
||||
echo "user: wmbusmeters unmodified"
|
||||
fi
|
||||
|
||||
if [ $(getent group dialout) ]
|
||||
then
|
||||
if [ "$(groups wmbusmeters | grep -o dialout)" = "" ]
|
||||
then
|
||||
# Add the wmbusmeters user to dialout
|
||||
usermod -a -G dialout wmbusmeters
|
||||
echo "user: added wmbusmeters to dialout group"
|
||||
else
|
||||
echo "user: wmbusmeters already added to dialout"
|
||||
fi
|
||||
else
|
||||
echo "dialout group does not exist"
|
||||
fi
|
||||
|
||||
if [ $(getent group uucp) ]
|
||||
then
|
||||
if [ "$(groups wmbusmeters | grep -o uucp)" = "" ]
|
||||
then
|
||||
# Add the wmbusmeters user to uucp
|
||||
usermod -a -G uucp wmbusmeters
|
||||
echo "user: added wmbusmeters to uucp group"
|
||||
else
|
||||
echo "user: wmbusmeters already added to uucp"
|
||||
fi
|
||||
else
|
||||
echo "uucp group does not exist"
|
||||
fi
|
||||
|
||||
if [ $(getent group plugdev) ]
|
||||
then
|
||||
if [ "$(groups wmbusmeters | grep -o plugdev)" = "" ]
|
||||
then
|
||||
# Add the wmbusmeters user to plugdev
|
||||
usermod -a -G plugdev wmbusmeters
|
||||
echo "user: added wmbusmeters to plugdev group"
|
||||
else
|
||||
echo user: wmbusmeters already added to plugdev
|
||||
fi
|
||||
else
|
||||
echo "plugdev group does not exist"
|
||||
fi
|
||||
systemctl start wmbusmeters.service
|
||||
|
|
292
install.sh
292
install.sh
|
@ -44,297 +44,17 @@ do
|
|||
esac
|
||||
done
|
||||
|
||||
####################################################################
|
||||
##
|
||||
## Intall binaries
|
||||
##
|
||||
ROOT=$ROOT /bin/sh ./scripts/install_binaries.sh
|
||||
|
||||
rm -f "$ROOT"/usr/bin/wmbusmeters "$ROOT"/usr/sbin/wmbusmetersd
|
||||
mkdir -p "$ROOT"/usr/bin
|
||||
mkdir -p "$ROOT"/usr/sbin
|
||||
cp "$SRC" "$ROOT"/usr/bin/wmbusmeters
|
||||
ln -s /usr/bin/wmbusmeters "$ROOT"/usr/sbin/wmbusmetersd
|
||||
|
||||
echo "binaries: installed $ROOT/usr/bin/wmbusmeters and $ROOT/usr/sbin/wmbusmetersd"
|
||||
|
||||
####################################################################
|
||||
##
|
||||
## Intall wmbusmeters manual page
|
||||
##
|
||||
|
||||
rm -f "$ROOT"/usr/share/man/man1/wmbusmeters.1.gz
|
||||
mkdir -p "$ROOT"/usr/share/man/man1
|
||||
gzip -v9 -c wmbusmeters.1 > "$ROOT"/usr/share/man/man1/wmbusmeters.1.gz
|
||||
|
||||
echo "man page: installed $ROOT/usr/share/man/man1/wmbusmeters.1.gz"
|
||||
|
||||
####################################################################
|
||||
##
|
||||
## Create wmbusmeters user
|
||||
##
|
||||
|
||||
ID=$(id -u wmbusmeters 2>/dev/null)
|
||||
|
||||
if [ -f "$ROOT"/usr/sbin/nologin ]
|
||||
then
|
||||
USERSHELL="$ROOT/usr/sbin/nologin"
|
||||
elif [ -f "$ROOT"/sbin/nologin ]
|
||||
then
|
||||
USERSHELL="$ROOT/sbin/nologin"
|
||||
else
|
||||
USERSHELL="/bin/false"
|
||||
fi
|
||||
ROOT=$ROOT /bin/sh ./scripts/install_manpage.sh
|
||||
|
||||
if [ "$ADDUSER" = "true" ]
|
||||
then
|
||||
if [ $(getent group wmbusmeters) ]
|
||||
then
|
||||
echo "group: wmbusmeters unmodified"
|
||||
else
|
||||
groupadd -f wmbusmeters
|
||||
echo "group: added wmbusmeters"
|
||||
fi
|
||||
|
||||
if [ -z "$ID" ]
|
||||
then
|
||||
# Create the wmbusmeters user
|
||||
useradd --system --shell $USERSHELL -g wmbusmeters wmbusmeters
|
||||
echo "user: added wmbusmeters"
|
||||
else
|
||||
echo "user: wmbusmeters unmodified"
|
||||
fi
|
||||
|
||||
if [ $(getent group dialout) ]
|
||||
then
|
||||
if [ "$(groups wmbusmeters | grep -o dialout)" = "" ]
|
||||
then
|
||||
# Add the wmbusmeters user to dialout
|
||||
usermod -a -G dialout wmbusmeters
|
||||
echo "user: added wmbusmeters to dialout group"
|
||||
else
|
||||
echo "user: wmbusmeters already added to dialout"
|
||||
fi
|
||||
else
|
||||
echo "dialout group does not exist"
|
||||
fi
|
||||
|
||||
if [ $(getent group uucp) ]
|
||||
then
|
||||
if [ "$(groups wmbusmeters | grep -o uucp)" = "" ]
|
||||
then
|
||||
# Add the wmbusmeters user to uucp
|
||||
usermod -a -G uucp wmbusmeters
|
||||
echo "user: added wmbusmeters to uucp group"
|
||||
else
|
||||
echo "user: wmbusmeters already added to uucp"
|
||||
fi
|
||||
else
|
||||
echo "uucp group does not exist"
|
||||
fi
|
||||
|
||||
if [ $(getent group plugdev) ]
|
||||
then
|
||||
if [ "$(groups wmbusmeters | grep -o plugdev)" = "" ]
|
||||
then
|
||||
# Add the wmbusmeters user to plugdev
|
||||
usermod -a -G plugdev wmbusmeters
|
||||
echo "user: added wmbusmeters to plugdev group"
|
||||
else
|
||||
echo user: wmbusmeters already added to plugdev
|
||||
fi
|
||||
else
|
||||
echo "plugdev group does not exist"
|
||||
fi
|
||||
ROOT=$ROOT /bin/sh ./scripts/add_wmbusmeters_user.sh
|
||||
fi
|
||||
|
||||
####################################################################
|
||||
##
|
||||
## Prepare for /run/wmbusmeters.pid
|
||||
##
|
||||
ROOT=$ROOT /bin/sh ./scripts/prepare_logfiles.sh
|
||||
|
||||
#if [ ! -d "$ROOT"/var/run ]
|
||||
#then
|
||||
# # Create /var/run
|
||||
# mkdir -p "$ROOT"/var/run
|
||||
# echo pid store: created /var/run
|
||||
#fi
|
||||
ROOT=$ROOT /bin/sh ./scripts/install_default_configuration.sh
|
||||
|
||||
####################################################################
|
||||
##
|
||||
## Prepare for /var/log/wmbusmeters and /var/log/wmbusmeters/meter_readings
|
||||
##
|
||||
|
||||
if [ ! -d "$ROOT"/var/log/wmbusmeters/meter_readings ]
|
||||
then
|
||||
# Create the log directories
|
||||
mkdir -p "$ROOT"/var/log/wmbusmeters/meter_readings
|
||||
chown -R wmbusmeters:wmbusmeters "$ROOT"/var/log/wmbusmeters
|
||||
echo "log: created $ROOT/var/log/wmbusmeters/meter_readings"
|
||||
fi
|
||||
|
||||
####################################################################
|
||||
##
|
||||
## Install /etc/logrotate.d/wmbusmeters
|
||||
##
|
||||
|
||||
if [ ! -f "$ROOT"/etc/logrotate.d/wmbusmeters ]
|
||||
then
|
||||
mkdir -p "$ROOT"/etc/logrotate.d
|
||||
# Create logrotate file
|
||||
cat <<EOF > "$ROOT"/etc/logrotate.d/wmbusmeters
|
||||
/var/log/wmbusmeters/*.log {
|
||||
rotate 12
|
||||
weekly
|
||||
compress
|
||||
missingok
|
||||
postrotate
|
||||
/bin/kill -HUP `cat /run/wmbusmeters/wmbusmeters.pid 2> /dev/null` 2> /dev/null || true
|
||||
endscript
|
||||
EOF
|
||||
echo "logrotate: created $ROOT/etc/logrotate.d/wmbusmeters"
|
||||
else
|
||||
echo "conf file: $ROOT/etc/logrotate.d/wmbusmeters unchanged"
|
||||
fi
|
||||
|
||||
####################################################################
|
||||
##
|
||||
## Install /etc/wmbusmeters.conf
|
||||
##
|
||||
|
||||
if [ ! -f "$ROOT"/etc/wmbusmeters.conf ]
|
||||
then
|
||||
# Create default configuration
|
||||
mkdir -p "$ROOT"/etc/
|
||||
cat <<EOF > "$ROOT"/etc/wmbusmeters.conf
|
||||
loglevel=normal
|
||||
device=auto:t1
|
||||
logtelegrams=false
|
||||
format=json
|
||||
meterfiles=/var/log/wmbusmeters/meter_readings
|
||||
meterfilesaction=overwrite
|
||||
logfile=/var/log/wmbusmeters/wmbusmeters.log
|
||||
EOF
|
||||
chmod 644 "$ROOT"/etc/wmbusmeters.conf
|
||||
echo "conf file: created $ROOT/etc/wmbusmeters.conf"
|
||||
else
|
||||
echo "conf file: $ROOT/etc/wmbusmeters.conf unchanged"
|
||||
fi
|
||||
|
||||
####################################################################
|
||||
##
|
||||
## Create /etc/wmbusmeters.d
|
||||
##
|
||||
|
||||
if [ ! -d "$ROOT"/etc/wmbusmeters.d ]
|
||||
then
|
||||
# Create the configuration directory
|
||||
mkdir -p "$ROOT"/etc/wmbusmeters.d
|
||||
chmod -R 755 "$ROOT"/etc/wmbusmeters.d
|
||||
echo "conf dir: created $ROOT/etc/wmbusmeters.d"
|
||||
else
|
||||
echo "conf dir: $ROOT/etc/wmbusmeters.d unchanged"
|
||||
fi
|
||||
|
||||
####################################################################
|
||||
##
|
||||
## Create /lib/systemd/system/wmbusmeters.service
|
||||
##
|
||||
|
||||
SYSTEMD_NEEDS_RELOAD=false
|
||||
mkdir -p "$ROOT"/lib/systemd/system/
|
||||
|
||||
OLD_WMBS=~/old.wmbusmeters.service.backup
|
||||
CURR_WMBS="$ROOT"/lib/systemd/system/wmbusmeters.service
|
||||
if [ -f $CURR_WMBS ]
|
||||
then
|
||||
echo "systemd: backing up $CURR_WMBS to here: $OLD_WMBS"
|
||||
cp $CURR_WMBS $OLD_WMBS 2>/dev/null
|
||||
fi
|
||||
|
||||
# Create service file for starting daemon without explicit device.
|
||||
# This means that wmbusmeters will rely on the conf file device setting.
|
||||
cat <<'EOF' > $CURR_WMBS
|
||||
[Unit]
|
||||
Description="wmbusmeters service"
|
||||
Documentation=https://github.com/weetmuts/wmbusmeters
|
||||
Documentation=man:wmbusmeters(1)
|
||||
After=network.target
|
||||
StopWhenUnneeded=false
|
||||
StartLimitIntervalSec=10
|
||||
StartLimitInterval=10
|
||||
StartLimitBurst=3
|
||||
|
||||
[Service]
|
||||
Type=forking
|
||||
PrivateTmp=yes
|
||||
User=wmbusmeters
|
||||
Group=wmbusmeters
|
||||
Restart=always
|
||||
RestartSec=1
|
||||
|
||||
# Run ExecStartPre with root-permissions
|
||||
|
||||
PermissionsStartOnly=true
|
||||
ExecStartPre=-/bin/mkdir -p /var/log/wmbusmeters/meter_readings
|
||||
ExecStartPre=/bin/chown -R wmbusmeters:wmbusmeters /var/log/wmbusmeters
|
||||
ExecStartPre=-/bin/mkdir -p /run/wmbusmeters
|
||||
ExecStartPre=/bin/chown -R wmbusmeters:wmbusmeters /run/wmbusmeters
|
||||
|
||||
ExecStart=/usr/sbin/wmbusmetersd /run/wmbusmeters/wmbusmeters.pid
|
||||
ExecReload=/bin/kill -HUP $MAINPID
|
||||
PIDFile=/run/wmbusmeters/wmbusmeters.pid
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
|
||||
if diff $OLD_WMBS $CURR_WMBS 1>/dev/null
|
||||
then
|
||||
echo "systemd: no changes to $CURR_WMBS"
|
||||
else
|
||||
echo "systemd: updated $CURR_WMBS"
|
||||
SYSTEMD_NEEDS_RELOAD=true
|
||||
fi
|
||||
|
||||
OLD_WMBAS=~/old.wmbusmeters@.service.backup
|
||||
CURR_WMBAS="$ROOT"/lib/systemd/system/wmbusmeters@.service
|
||||
if [ -f $CURR_WMBAS ]
|
||||
then
|
||||
echo "systemd: removing $CURR_WMBAS"
|
||||
echo "systemd: backing up $CURR_WMBAS to here: $OLD_WMBAS"
|
||||
cp $CURR_WMBAS $OLD_WMBAS 2>/dev/null
|
||||
rm $CURR_WMBAS
|
||||
SYSTEMD_NEEDS_RELOAD=true
|
||||
fi
|
||||
|
||||
####################################################################
|
||||
##
|
||||
## Remove any existing /etc/udev/rules.d/99-wmbus-usb-serial.rules
|
||||
## The new wmbuseters daemon is not going to use these.
|
||||
##
|
||||
|
||||
if [ -f "$ROOT"/etc/udev/rules.d/99-wmbus-usb-serial.rules ]
|
||||
then
|
||||
echo "udev: removing "$ROOT"/etc/udev/rules.d/99-wmbus-usb-serial.rules"
|
||||
echo "udev: backup stored here: ~/old.wmbusmeters-wmbus-usb-serial.rules.backup"
|
||||
cp "$ROOT"/etc/udev/rules.d/99-wmbus-usb-serial.rules ~/old.wmbusmeters-wmbus-usb-serial.rules.backup
|
||||
rm "$ROOT"/etc/udev/rules.d/99-wmbus-usb-serial.rules
|
||||
UDEV_NEEDS_RELOAD=true
|
||||
fi
|
||||
|
||||
if [ "$SYSTEMD_NEEDS_RELOAD" = "true" ]
|
||||
then
|
||||
echo
|
||||
echo
|
||||
echo "You need to reload systemd configuration! Please do:"
|
||||
echo "sudo systemctl daemon-reload"
|
||||
fi
|
||||
|
||||
if [ "$UDEV_NEEDS_RELOAD" = "true" ]
|
||||
then
|
||||
echo
|
||||
echo
|
||||
echo "You need to reload udev configuration! Please do:"
|
||||
echo "sudo udevadm control --reload-rules"
|
||||
echo "sudo udevadm trigger"
|
||||
fi
|
||||
ROOT=$ROOT /bin/sh ./scripts/install_systemd_service.sh
|
||||
|
|
Ładowanie…
Reference in New Issue