diff --git a/package-managers/apt-conf-00notify-hook b/package-managers/apt-conf-00notify-hook index adc34af8a..b4ef13215 100644 --- a/package-managers/apt-conf-00notify-hook +++ b/package-managers/apt-conf-00notify-hook @@ -1 +1 @@ -DPkg::Post-Invoke {"/usr/lib/qubes/upgrades-status-notify || true";}; +DPkg::Post-Invoke {"/usr/lib/qubes/upgrades-status-notify skip-refresh || true";}; diff --git a/package-managers/upgrades-installed-check b/package-managers/upgrades-installed-check index aaf18ccc4..b9b80a576 100755 --- a/package-managers/upgrades-installed-check +++ b/package-managers/upgrades-installed-check @@ -5,8 +5,16 @@ ## * 'false' - if there are pending upgrades ## * nothing - if apt-get is currently locked ## +## optional argument "skip-refresh" can be used to not refresh metadata (useful +## when it's already up to date, like after installing updates) +## ## Forwards the exit code of the package manager. +skip_refresh=false +if [ "$1" = "skip-refresh" ]; then + skip_refresh=true +fi + if [ -e /etc/system-release ]; then ## Fedora if command -v dnf >/dev/null; then @@ -23,12 +31,15 @@ elif [ -e /etc/debian_version ]; then ## Debian set -e set -o pipefail - # shellcheck disable=SC2034 - apt_get_update_output="$(apt-get -q update 2>&1)" + if ! $skip_refresh; then + # shellcheck disable=SC2034 + apt_get_update_output="$(apt-get -q update 2>&1 | tee /proc/self/fd/2)" + fi apt_get_upgrade_output="$(LANG="C" apt-get -s upgrade 2>&1)" exit_code="$?" # shellcheck disable=SC2266 echo "$apt_get_upgrade_output" | awk "/^Inst/{ print $2 }" | [ "$(wc -L)" -eq 0 ] && echo "true" || echo "false" + echo "$apt_get_upgrade_output" >&2 elif [ -e /etc/arch-release ]; then ## Archlinux checkupdates >/dev/null 2>&1 diff --git a/package-managers/upgrades-status-notify b/package-managers/upgrades-status-notify index 791ae2706..7a6e848bf 100755 --- a/package-managers/upgrades-status-notify +++ b/package-managers/upgrades-status-notify @@ -14,7 +14,12 @@ else fi fi -upgrades_installed="$(/usr/lib/qubes/upgrades-installed-check)" +script_arg= +if [ "$1" = "skip-refresh" ]; then + script_arg=skip-refresh +fi + +upgrades_installed="$(/usr/lib/qubes/upgrades-installed-check $script_arg)" if [ "$upgrades_installed" = "true" ]; then /usr/lib/qubes/qrexec-client-vm dom0 qubes.NotifyUpdates /bin/sh -c 'echo 0'