[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

mass-auto-installing-testing Debian packages using pbuilder



Hi,

I've finally gotten around to trying out using pbuilder to
install packages, and see if packages actually install or not.

Basically, pbuilder did this test for some portion of packages
before; namely the build-depended packages, but not all packages
were tried. It's possibly the first time in years since anybody 
bothered to install all packages in a batch.

Latest version of pbuilder has an example script.
I'm attaching an example script to invoke pbuilder-user-mode-linux
for mass-package-install testing. On my athlon XP 1800+ system
with 512MB of RAM, it installs approx 1000 packages per day.




Anyway, the progress so far; 
I've tried 3000 packages in 4 days.
300 packages failed to install.

About 20 are kernel packages, which refuse to be installed 
unless you type 'Y'

About 50 are emacs related packages, which fail to install 
because emacs20 doesn't install when stdin is /dev/null

Many packages tried to interactively configure packages with 
user input from stdin, and not using debconf.


Several packages died with similar error to:

Setting up bincimap (1.2.3-3) ...
/etc/ssl/certs/imapd.pem doesn't exists.
Creating self-signed certificate... chmod: failed to get attributes of `imapd.pem': No such file or directory
dpkg: error processing bincimap (--configure):
 subprocess post-installation script returned error exit status 1





enjoy,
	junichi




===File install-test.sh=========================
#!/bin/bash
# all-rebuilder script.

set -e

MIRROR=ftp.jp.debian.org
ROOTCOMMAND=sudo

# kill routine
( while sleep 1h; do killall linux; done ) & 


SUCCESS=install-success
FAIL=install-fail
WORKING=install-work
mkdir $SUCCESS || true
mkdir $FAIL || true
mkdir $WORKING || true

function buildone() {
    local PROGNAME="$1"
    local LOGFILE=${WORKING}/"$PROGNAME.log"

    case $1 in
    	kernel-module* )
	  return ;;
    esac

    echo "Trying $1"
    if pbuilder-user-mode-linux execute --logfile "$LOGFILE" /usr/share/doc/pbuilder/examples/execute_installtest.sh "$1"; then
	mv "$LOGFILE" "$SUCCESS"
	echo "  Install successful"
    else
	mv "$LOGFILE" "$FAIL"
	echo "  Install fail"
    fi
}

$ROOTCOMMAND dselect update
#$ROOTCOMMAND pbuilder update 
pbuilder-user-mode-linux update 

tmpfile=$(tempfile)
wget "${MIRROR}"/debian/dists/unstable/main/binary-i386/Packages.gz -O${tmpfile}

for A in $( zcat ${tmpfile} | sed -n 's/^Package: //p' | bogosort -n ); do 
    #waitingroutine
    buildone $A
done

rm -f ${tmpfile}

============================================================



Reply to: