diff --git a/build/packages/deb/control b/build/packages/deb/control index c2f910ce6f..ce9884286c 100644 --- a/build/packages/deb/control +++ b/build/packages/deb/control @@ -9,6 +9,8 @@ Build-Depends: debhelper Package: pmm-client Architecture: any Breaks: pmm-client +Conflicts: pmm2-client +Replaces: pmm2-client Description: Percona Monitoring and Management Client Percona Monitoring and Management (PMM) is an open-source platform for managing and monitoring MySQL and MongoDB performance. It is developed by Percona in collaboration with experts in the field of managed database services, diff --git a/build/packages/deb/postinst b/build/packages/deb/postinst index 24d4aae642..7a791d3239 100644 --- a/build/packages/deb/postinst +++ b/build/packages/deb/postinst @@ -9,11 +9,28 @@ fi case "$1" in configure) - chown -R pmm-agent:pmm-agent /usr/local/percona/pmm - if [ ! -f /usr/local/percona/pmm/config/pmm-agent.yaml ]; then - install -d -m 0755 /usr/local/percona/pmm/config - install -m 0660 -o pmm-agent -g pmm-agent /dev/null /usr/local/percona/pmm/config/pmm-agent.yaml - fi + chown -R pmm-agent:pmm-agent /usr/local/percona/pmm + if [ ! -f /usr/local/percona/pmm/config/pmm-agent.yaml ]; then + install -d -m 0755 /usr/local/percona/pmm/config + install -m 0660 -o pmm-agent -g pmm-agent /dev/null /usr/local/percona/pmm/config/pmm-agent.yaml + fi + + # Backup the new pmm-agent.yaml if it exists + if [ -f /usr/local/percona/pmm2/config/pmm-agent.yaml.bak ]; then + echo "Backing up the new pmm-agent.yaml as pmm-agent.yaml.new..." + mv /usr/local/percona/pmm/config/pmm-agent.yaml /usr/local/percona/pmm/config/pmm-agent.yaml.new + + echo "Restoring pmm-agent.yaml from backup..." + mv /usr/local/percona/pmm2/config/pmm-agent.yaml.bak /usr/local/percona/pmm/config/pmm-agent.yaml + + # Clean up old directories if empty + if [ -d /usr/local/percona/pmm2/config ] && [ -z "$(ls -A /usr/local/percona/pmm2/config)" ]; then + rmdir /usr/local/percona/pmm2/config + fi + if [ -d /usr/local/percona/pmm2 ] && [ -z "$(ls -A /usr/local/percona/pmm2)" ]; then + rmdir /usr/local/percona/pmm2 + fi + fi ;; abort-upgrade|abort-remove|abort-deconfigure) diff --git a/build/packages/deb/postrm b/build/packages/deb/postrm index 0eff8112d7..ffb5933c8b 100644 --- a/build/packages/deb/postrm +++ b/build/packages/deb/postrm @@ -25,6 +25,16 @@ if [ "$1" = "purge" ]; then if [ -f /usr/local/percona/pmm/config/pmm-agent.yaml ]; then rm -f /usr/local/percona/pmm/config/pmm-agent.yaml fi + if [ -f /usr/local/percona/pmm/config/pmm-agent.yaml.new ]; then + rm -f /usr/local/percona/pmm/config/pmm-agent.yaml.new + fi + + if [ -d /usr/local/percona/pmm/config ] && [ -z "$(ls -A /usr/local/percona/pmm/config)" ]; then + rmdir /usr/local/percona/pmm/config + fi + if [ -d /usr/local/percona/pmm ] && [ -z "$(ls -A /usr/local/percona/pmm)" ]; then + rmdir /usr/local/percona/pmm + fi fi #DEBHELPER# diff --git a/build/packages/deb/preinst b/build/packages/deb/preinst index 4a64a00fe3..d1658b731d 100644 --- a/build/packages/deb/preinst +++ b/build/packages/deb/preinst @@ -9,6 +9,11 @@ if ! getent passwd pmm-agent >/dev/null 2>&1; then adduser --system --home /usr/local/percona --group pmm-agent fi +if [ -f /usr/local/percona/pmm2/config/pmm-agent.yaml ]; then + echo "Backing up pmm-agent.yaml before removing pmm2-client..." + mv /usr/local/percona/pmm2/config/pmm-agent.yaml /usr/local/percona/pmm2/config/pmm-agent.yaml.bak +fi + #DEBHELPER# exit 0 diff --git a/build/packages/rpm/client/pmm-client.spec b/build/packages/rpm/client/pmm-client.spec index 39aaffb480..1dac576090 100644 --- a/build/packages/rpm/client/pmm-client.spec +++ b/build/packages/rpm/client/pmm-client.spec @@ -22,6 +22,7 @@ Requires(postun): systemd AutoReq: no Conflicts: pmm-client +Obsoletes: pmm2-client < 3.0.0 %description Percona Monitoring and Management (PMM) is an open-source platform for managing and monitoring MySQL and MongoDB @@ -35,6 +36,24 @@ as possible. %prep %setup -q +%pretrans +if [ -f /usr/local/percona/pmm2/config/pmm-agent.yaml ]; then + cp -a /usr/local/percona/pmm2/config/pmm-agent.yaml /usr/local/percona/pmm2/config/pmm-agent.yaml.bak +fi + +%posttrans +if [ -f /usr/local/percona/pmm2/config/pmm-agent.yaml.bak ]; then + mv /usr/local/percona/pmm/config/pmm-agent.yaml /usr/local/percona/pmm/config/pmm-agent.yaml.new + mv /usr/local/percona/pmm2/config/pmm-agent.yaml.bak /usr/local/percona/pmm/config/pmm-agent.yaml + + if [ -d /usr/local/percona/pmm2/config ] && [ ! "$(ls -A /usr/local/percona/pmm2/config)" ]; then + rmdir /usr/local/percona/pmm2/config + fi + + if [ -d /usr/local/percona/pmm2 ] && [ ! "$(ls -A /usr/local/percona/pmm2)" ]; then + rmdir /usr/local/percona/pmm2 + fi +fi %build @@ -132,6 +151,10 @@ fi %preun %systemd_preun pmm-agent.service +if [ -f /usr/local/percona/pmm/config/pmm-agent.yaml.new ]; then + rm -f /usr/local/percona/pmm/config/pmm-agent.yaml.new +fi + %postun case "$1" in 0) # This is a yum remove.