## tidy loose ends set -e; # fix mark auto-installed essential packages + dependencies (bug#742977) _pkgdeps(){ set -e; chroot /target dpkg-query -Wf=',${Pre-Depends},${Depends},${Recommends}\n' $* 2>/dev/null | sed -r -e 's/[,|] *([a-z0-9.+-]+)?(:\s+)?( *[^|,]*)?/\1\n/g' | sed '/^$/d'|sort -u; }; _pkg2re(){ set -e; echo $* | sed -r -e 's/\s+/\|/g;' -e 's/^\|//;' -e 's/([.+-])/\\\1/g;' -e 's/\|$//'; }; _pkgreal(){ set -e; chroot /target dpkg-query -Wf='${Package},${Provides},\n' | sed -r -e '/,,/d;' -e 's/^([a-z0-9.+-]+).*[,|] *('"$(_pkg2re $*)"')[ :,]/\1/;' -e '/,/d'; }; _pkganddeepdeps(){ set -e; rest=$*; all=$rest; for i in 1 2 3 4 5; do deps=$(_pkgdeps $rest); rest="$deps $(_pkgreal $deps)"; all="$all $rest"; done; echo $all | sed -r -e 's/\s+/\n/g' | sort -u; }; _pkgessentials(){ set -e; chroot /target dpkg-query -Wf='${Package}%${Essential}\n' | sed -r -e 's/(.*)%yes/\1/;' -e '/%/d'; }; chroot /target apt-mark auto $(_pkganddeepdeps $(_pkgessentials) apt linux-image-*); # fix mark auto-installed misc. packages relevant only as dependencies chroot /target apt-mark auto apt-utils aptitude-common grub-common isc-dhcp-common tasksel-data vim-common; # keep backup of any tweaked (i.e. edited or created) config file _backup(){ set -e; if [ -e "$1.orig" ]; then :; elif [ -e "$1" ]; then cp -a "$1" "$1.orig"; else touch "$1.orig"; fi; }; _clone(){ set -e; _backup "$2"; cp -a "$1" "$2"; }; _setvar(){ set -e; _backup "$1"; sed -i -r -e "s,^#?($2)=.*,\\1=$3," "$1"; }; ## improve autonomy # auto-repair inconsistent filesystems during boot _setvar /target/etc/default/rcS FSCKFIX yes;