From e7301f68284231df7362c0983cdfaa1e758bf5f3 Mon Sep 17 00:00:00 2001 From: Vitaly Chikunov Date: Mon, 4 Apr 2022 10:04:28 +0300 Subject: [PATCH] update-kernel: Use policy to detect available packages (list) It's much slower but works even if `apt-scripts' is not installed. Signed-off-by: Vitaly Chikunov --- update-kernel | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/update-kernel b/update-kernel index e539c88..748fe92 100755 --- a/update-kernel +++ b/update-kernel @@ -166,16 +166,13 @@ if [ -n "$list" ]; then echo "List of available kernels${kernel_flavour:+ for $kernel_flavour flavour}:" list_files=$(mktemp) rpm -qa --queryformat '[%{=NAME}\t%{FILENAMES}\n]' 'kernel-*' > "$list_files" - list_extras=$(mktemp) set -o pipefail - apt-cache list-extras 2>/dev/null | sort > "$list_extras" && extras=1 || extras= apt-cache pkgnames "kernel-image-${kernel_flavour}" | sort \ - | join -a1 -o1.1,2.1 - "$list_extras" \ | sort -V \ | grep '#' \ | grep -v -e '-debuginfo#' -e '^kernel-image-domU-' \ | ( - while read -r k j; do + while read -r k; do pkg=${k%#*} flv=${pkg#kernel-image-} ev=${k#*#} @@ -186,7 +183,8 @@ if [ -n "$list" ]; then ver=${ver%-*} ev=$epo$ver - [ -z "$extras" ] || [ -n "$j" ] && echo -n " " || echo -n " *" + pkglist=$(apt-cache policy "$k" | grep -w 'pkglist$') + [ -z "$pkglist" ] && echo -n " " || echo -n " *" echo -n " $pkg-$ver-$rel" if rpm -q "$pkg-$ver-$rel" >/dev/null 2>&1; then if [ "$def" = "$ver-$flv-$rel" ]; then @@ -194,7 +192,7 @@ if [ -n "$list" ]; then else echo -n ' [installed]' fi - elif [ -n "$extras" ] && [ -z "$j" ] && [ "$rflv" = "$flv" ]; then + elif [ -n "$pkglist" ] && [ "$rflv" = "$flv" ]; then echo -n " <--- upgrade" fi [ "$rrel" = "$ver-$flv-$rel" ] && echo -n ' RUNNING' @@ -224,10 +222,9 @@ if [ -n "$list" ]; then if [ $count -eq 0 ]; then echo "Nothing found." else - [ -n "$extras" ] && echo "[*] Latest available in repo." + echo "[*] Latest available in repo." fi ) - rm -f -- "$list_extras" exit 0 fi