Skip to content

Instantly share code, notes, and snippets.

@garywill
Created October 23, 2018 05:37
Show Gist options
  • Save garywill/957054871f81a19cbbc4fa8767b222b6 to your computer and use it in GitHub Desktop.
Save garywill/957054871f81a19cbbc4fa8767b222b6 to your computer and use it in GitHub Desktop.
#! /bin/bash
# display the packages included in the installed patterns.
# You'll only have to install the patterns - not the packages!
for pat in $(zypper pt -i | awk -F "|" '/^i/ { print $2 }' | sort -u | sed 's/^ //;s/ *$//;s/ /#/g') ; do
pkg=$(zypper info -t pattern "${pat//#/ }" | awk 'BEGIN { ORS=" "} ; /^i/&&/| package |/{ print $3 }')
[ "$pkg" ] || continue
printf "* %s\n%s\n\n" "${pat//#/ }" "$pkg"
pkgs="$pkgs $pkg"
done
echo $pkgs | tr " " "\n" | sort -u > /tmp/pkg0.lst
zypper se -i -t package | awk '/^i/ { print $3}' | sort -u > /tmp/pkg1.lst
diff /tmp/pkg{0,1}.lst | awk '/^>/ { print $2 }' > /tmp/pkg2.lst
# display dependencies installed by the remaining packages.
# You'll only have to install these packages.
for pkg in $(cat /tmp/pkg2.lst) ; do
dep=$(rpm -q --requires $pkg | sed '/(/d;/^\//d;s/ .*//;/\.so.[0-9]*/d' | sort -u | tr "\n" " ")
printf "* %s\n%s\n\n" $pkg "$dep"
deps="$deps $dep"
done
echo $deps | tr " " "\n" | sort -u > /tmp/pkg3.lst
# display remaining packages to install
echo "* remaining packages: "
diff /tmp/pkg{2,3}.lst | awk '/^>/ { print $2 }' | tr "\n" " "
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment