Skip to content

Commit e3202dc

Browse files
committed
apt: skip 'apt-get update' when running from apt already
Do not call 'apt-get update' in post-invoke hook, as APT database is locked at this time. Since this happens after packages install/update, it should be already up to date at that point. Fixes QubesOS/qubes-issues#9673
1 parent b8b485f commit e3202dc

File tree

3 files changed

+19
-4
lines changed

3 files changed

+19
-4
lines changed
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
DPkg::Post-Invoke {"/usr/lib/qubes/upgrades-status-notify || true";};
1+
DPkg::Post-Invoke {"/usr/lib/qubes/upgrades-status-notify skip-refresh || true";};

package-managers/upgrades-installed-check

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,16 @@
55
## * 'false' - if there are pending upgrades
66
## * nothing - if apt-get is currently locked
77
##
8+
## optional argument "skip-refresh" can be used to not refresh metadata (useful
9+
## when it's already up to date, like after installing updates)
10+
##
811
## Forwards the exit code of the package manager.
912

13+
skip_refresh=false
14+
if [ "$1" = "skip-refresh" ]; then
15+
skip_refresh=true
16+
fi
17+
1018
if [ -e /etc/system-release ]; then
1119
## Fedora
1220
if command -v dnf >/dev/null; then
@@ -23,8 +31,10 @@ elif [ -e /etc/debian_version ]; then
2331
## Debian
2432
set -e
2533
set -o pipefail
26-
# shellcheck disable=SC2034
27-
apt_get_update_output="$(apt-get -q update 2>&1 | tee /proc/self/fd/2)"
34+
if ! $skip_refresh; then
35+
# shellcheck disable=SC2034
36+
apt_get_update_output="$(apt-get -q update 2>&1 | tee /proc/self/fd/2)"
37+
fi
2838
apt_get_upgrade_output="$(LANG="C" apt-get -s upgrade 2>&1)"
2939
exit_code="$?"
3040
# shellcheck disable=SC2266

package-managers/upgrades-status-notify

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,12 @@ else
1414
fi
1515
fi
1616

17-
upgrades_installed="$(/usr/lib/qubes/upgrades-installed-check)"
17+
script_arg=
18+
if [ "$1" = "skip-refresh" ]; then
19+
script_arg=skip-refresh
20+
fi
21+
22+
upgrades_installed="$(/usr/lib/qubes/upgrades-installed-check $script_arg)"
1823

1924
if [ "$upgrades_installed" = "true" ]; then
2025
/usr/lib/qubes/qrexec-client-vm dom0 qubes.NotifyUpdates /bin/sh -c 'echo 0'

0 commit comments

Comments
 (0)