#!/bin/sh
#210512 sfs+su
d=/var/lib/dpkg/status
[ -d `dirname $d` ] || exit 
cat /mnt/live/memory/images/*.pfs/var/lib/dpkg/statoverride \
    /mnt/.*.pfs/var/lib/dpkg/statoverride \
    |sort -u >/var/lib/dpkg/statoverride 
#mv  $d $d.bak
s=/run/dpkg-fix
rm $s* 2>/dev/null
cp /mnt/live/memory/images/001-*.pfs$d $s || 
    cp /mnt/live/memory/images/apt-*.pfs$d $s || 
    cp /mnt/.apt-*.pfs$d $s || 
    exit 
cp $s $d

for i in  `ls -1d /mnt/live/memory/images/*.pfs |egrep -v '^/mnt/live/memory/images/001-'` `ls -1d /mnt/.*.pfs |egrep -v '^/mnt/.apt-' 2>/dev/null` ;do
    #echo $i
    [ -f "$i$d" ] || continue
    cat $i$d >>$s
    pfsdeb $i >>$s-p
#    ls -1 "$i"/var/lib/dpkg/info/*.md5sums  | sed -n 's,^.*/var/lib/dpkg/info/\([^:]*\)\(:.\+\)\?\.md5sums$,\1,p' >>$s-p
done

p1="`ls -1d /mnt/live/memory/images/001-*.pfs`"
pfsdeb "$p1" |sort -u >>$s-p1u
sort -u $s-p >$s-pu
#comm -1 -3 <(sort -u $s-p1  ) <(sort -u $s-p ) >$s-pu
comm -1 -3 $s-p1u $s-pu  >$s-p

for j in `sort -u "$s-p"| sed 's/+/\\\+/g'` ;do
#	echo $j
#	dpkgg $j $s >>$d
    awk '/^Package: '$j'$/ {p=1} p==1 {print} /^$/ {if (p==1) exit}' "$s" >>$d
done

rm $s*
exit
##########################
d1=/run/dpkg-status
mv $s $d1
#cat "$s" | sed -n 's/^Package: //p' | sort | uniq -c | sort -n | egrep -v '^[[:blank:]]*1 '
cat "$d1" | sed -n 's/^Package: //p' | sort | uniq -c | sort -n | egrep -v '^[[:blank:]]*1 ' | while read count package;do 
#grep '^Pack' $d | sort | uniq -c |sort -n |egrep -v '1 Pac' |while read j ;do
#    echo $j
#      count="`echo $j | awk '{print $1}'`"
#    package="`echo $j | awk '{print $3}'`"
    awk 'BEGIN {n=0;f=1;c='"$count"'} /^Package: '"$package"'$/ {n+=1;if (n<c) {f=0;next}} /^[[:blank:]]*$/ && f==0 {f=1;next} f' $d1 > $s
    mv $s $d1
done
mv "$d1" "$d"
