#!/bin/sh -e # # The goal here is to live-migrate PCP temporary files from places # they may have been stashed away in previous versions. This is # important as they may be in-use by instrumented applications and # we want to avoid loss of service as a result of the switch. # # The new place ... this should match the setting in /etc/pcp.conf # _after_ the installation # PCP_TMP_DIR=/var/lib/pcp/tmp _version_configs() { # Use the supported conffile move method (no prompts) local FILE local NPMCD=/etc/pcp/pmcd local PMCD1=/etc/pmcd local PMCD2=/var/lib/pcp/config/pmcd for FILE in pmcd.conf pmcd.options rc.local; do dpkg-maintscript-helper mv_conffile $PMCD2/$FILE $NPMCD/$FILE 3.7.0~ pcp -- "$@" dpkg-maintscript-helper mv_conffile $PMCD1/$FILE $NPMCD/$FILE 3.6.1~ pcp -- "$@" done local NPMIE=/etc/pcp/pmie local PMIE1=/etc/pmie local PMIE2=/var/lib/pcp/config/pmie for FILE in control; do dpkg-maintscript-helper mv_conffile $PMIE2/$FILE $NPMIE/$FILE 3.7.0~ pcp -- "$@" dpkg-maintscript-helper mv_conffile $PMIE1/$FILE $NPMIE/$FILE 3.6.1~ pcp -- "$@" done local NPMPROXY=/etc/pcp/pmproxy local PMPROXY1=/etc/pmproxy local PMPROXY2=/var/lib/pcp/config/pmproxy for FILE in pmproxy.options; do dpkg-maintscript-helper mv_conffile $PMPROXY2/$FILE $NPMPROXY/$FILE 3.7.0~ pcp -- "$@" dpkg-maintscript-helper mv_conffile $PMPROXY1/$FILE $NPMPROXY/$FILE 3.6.1~ pcp -- "$@" done local NPMLOGGER=/etc/pcp/pmlogger local PMLOGGER1=/etc/pmlogger local PMLOGGER2=/var/lib/pcp/config/pmlogger for FILE in control; do dpkg-maintscript-helper mv_conffile $PMLOGGER2/control $NPMLOGGER/control 3.7.0~ pcp -- "$@" dpkg-maintscript-helper mv_conffile $PMLOGGER1/control $NPMLOGGER/control 3.6.1~ pcp -- "$@" done } # remove any retired conffiles # if dpkg-maintscript-helper supports rm_conffile then for conf in \ /etc/bash_completion.d/pcp \ /etc/cron.d/pcp-pmie \ /etc/cron.d/pcp-pmlogger \ /etc/cron.d/pcp-pmlogger-daily-report \ /etc/pcp.sh \ /etc/pcp/htop/columns/container \ /etc/pcp/htop/columns/delayacct \ /etc/pcp/htop/columns/fdcount \ /etc/pcp/htop/columns/guest \ /etc/pcp/htop/columns/memory \ /etc/pcp/htop/columns/sched \ /etc/pcp/htop/columns/swap \ /etc/pcp/htop/columns/tcp \ /etc/pcp/htop/columns/udp \ /etc/pcp/htop/columns/wchan \ /etc/pcp/htop/meters/entropy \ /etc/pcp/htop/meters/freespace \ /etc/pcp/htop/meters/ipc \ /etc/pcp/htop/meters/locks \ /etc/pcp/htop/meters/memcache \ /etc/pcp/htop/meters/mysql \ /etc/pcp/htop/meters/postfix \ /etc/pcp/htop/meters/redis \ /etc/pcp/htop/meters/tcp \ /etc/pcp/openmetrics/config.d/collectd.url \ /etc/pcp/openmetrics/config.d/etcd.url \ /etc/pcp/openmetrics/config.d/grafana.url \ /etc/pcp/pmlogconf/kernel/interrupts-irix \ /etc/pcp/pmlogconf/kernel/memory-irix \ /etc/pcp/pmlogconf/kernel/queues-irix \ /etc/pcp/pmlogconf/kernel/syscalls-irix \ /etc/pcp/pmlogconf/kernel/syscalls-percpu-irix \ /etc/pcp/pmlogconf/memory/tlb-irix \ /etc/pcp/pmlogconf/networking/socket-irix \ /etc/pcp/pmlogconf/networking/tcp-activity-irix \ /etc/pcp/pmlogconf/networking/udp-packets-irix \ /etc/pcp/pmlogconf/sgi/cpu-evctr \ /etc/pcp/pmlogconf/sgi/craylink \ /etc/pcp/pmlogconf/sgi/efs \ /etc/pcp/pmlogconf/sgi/hub \ /etc/pcp/pmlogconf/sgi/kaio \ /etc/pcp/pmlogconf/sgi/node-memory \ /etc/pcp/pmlogconf/sgi/numa \ /etc/pcp/pmlogconf/sgi/numa-summary \ /etc/pcp/pmlogconf/sgi/xbow \ /etc/pcp/pmlogconf/sgi/xlv-activity \ /etc/pcp/pmlogconf/sgi/xlv-stripe-io \ /etc/pcp/pmlogconf/sgi/xvm-all \ /etc/pcp/pmlogconf/sgi/xvm-ops \ /etc/pcp/pmlogconf/sgi/xvm-stats \ /etc/pcp/pmlogconf/v1.0/C2 \ /etc/pcp/pmlogconf/v1.0/C3 \ /etc/pcp/pmlogconf/v1.0/D3 \ /etc/pcp/pmlogconf/v1.0/K0 \ /etc/pcp/pmlogconf/v1.0/S0 \ /etc/pcp/pmlogconf/v1.0/S1 \ /etc/pcp/pmproxy/pmproxy.defaults \ /etc/pcp/pmrep/iostat_v12_3.conf \ /etc/pcp/pmrep/pmrep.conf \ /etc/pcp/pmrep/sar-old-kernel.conf \ # end do # these ones are from botched packaging over a long time, so # there is no "prior-version" release that is going to work ... # dpkg-maintscript-helper rm_conffile $conf -- "$@" done # newer ones where the change can be tagged to a release go here # where is the first release when was no longer # packaged, e.g. "3.4.4-1~" if we stopped packaging # in PCP 3.4.4 # # dpkg-maintscript-helper rm_conffile -- "$@" fi if dpkg-maintscript-helper supports mv_conffile then _version_configs "$@" fi touch /var/lib/pcp/pmns/.NeedRebuild chmod 644 /var/lib/pcp/pmns/.NeedRebuild touch /var/log/pcp/pmlogger/.NeedRewrite chmod 644 /var/log/pcp/pmlogger/.NeedRewrite getent group pcp >/dev/null || groupadd -r pcp getent passwd pcp >/dev/null || \ useradd -c "Performance Co-Pilot" -g pcp -d /var/lib/pcp -M -r -s /usr/sbin/nologin pcp # must match GNUmakefile chown pcp:pcp /var/lib/pcp/config/pmda chmod 775 /var/lib/pcp/config/pmda chown pcp:pcp /var/lib/pcp/tmp chmod 775 /var/lib/pcp/tmp chown pcp:pcp /var/log/pcp chmod 775 /var/log/pcp # must match src/pmcd/GNUmakefile chown pcp:pcp /var/log/pcp/pmcd chmod 775 /var/log/pcp/pmcd # must match src/pmdas/{json,bash,mmv}/GNUmakefile for PMDA in bash json mmv; do # directory may be in optionally build component, so test first # if [ -d /var/lib/pcp/tmp/$PMDA ] then chown pcp:pcp /var/lib/pcp/tmp/$PMDA chmod 775 /var/lib/pcp/tmp/$PMDA fi done # must match src/pmdas/mmv/src/GNUmakefile chown pcp:pcp /var/lib/pcp/tmp/mmv chmod 775 /var/lib/pcp/tmp/mmv # (strange but true, the "pmproxy" pmda is built in the mmv dir) chown pcp:pcp /var/lib/pcp/tmp/pmproxy chmod 775 /var/lib/pcp/tmp/pmproxy # must match src/pmie/GNUmakefile chown pcp:pcp /var/lib/pcp/config/pmie chmod 775 /var/lib/pcp/config/pmie chown pcp:pcp /var/lib/pcp/tmp/pmie chmod 775 /var/lib/pcp/tmp/pmie chown pcp:pcp /var/log/pcp/pmie chmod 775 /var/log/pcp/pmie # must match src/pmlogger/GNUmakefile chown pcp:pcp /var/lib/pcp/config/pmlogger chmod 775 /var/lib/pcp/config/pmlogger chown pcp:pcp /var/lib/pcp/tmp/pmlogger chmod 775 /var/lib/pcp/tmp/pmlogger chown pcp:pcp /var/log/pcp/pmlogger chmod 775 /var/log/pcp/pmlogger chown pcp:pcp /var/log/pcp/sa chmod 775 /var/log/pcp/sa # must match src/pmproxy/GNUmakefile chown pcp:pcp /var/log/pcp/pmproxy chmod 775 /var/log/pcp/pmproxy # must match src/pmfind/GNUmakefile chown pcp:pcp /var/log/pcp/pmfind chmod 775 /var/log/pcp/pmfind # and fixup the change in deployment plan for these ones in the case # of an upgrade, rather than an install ... they used to be pcp:pcp chown root:root /etc/pcp/pmie chmod 755 /etc/pcp/pmie chown root:root /etc/pcp/pmie/control chmod 644 /etc/pcp/pmie/control chown root:root /etc/pcp/pmlogger chmod 755 /etc/pcp/pmlogger chown root:root /etc/pcp/pmlogger/control chmod 644 /etc/pcp/pmlogger/control do_systemd=true which deb-systemd-helper >/dev/null 2>&1 || do_systemd=false # only need to check pmcd.service, if it is here they will all # be here [ -f /lib/systemd/system/pmcd.service ] || do_systemd=false if $do_systemd then deb-systemd-helper enable pmcd.service >/dev/null deb-systemd-helper enable pmlogger.service >/dev/null deb-systemd-helper enable pmie.service >/dev/null deb-systemd-helper enable pmproxy.service >/dev/null elif which update-rc.d >/dev/null 2>&1 then update-rc.d -f pmcd remove >/dev/null update-rc.d pmcd defaults >/dev/null update-rc.d -f pmlogger remove >/dev/null update-rc.d pmlogger defaults >/dev/null update-rc.d -f pmie remove >/dev/null update-rc.d pmie defaults >/dev/null update-rc.d -f pmproxy remove >/dev/null update-rc.d pmproxy defaults >/dev/null fi if which invoke-rc.d >/dev/null 2>&1 then invoke-rc.d pmcd start invoke-rc.d pmlogger start else /etc/init.d/pmcd start /etc/init.d/pmlogger start fi