#!/bin/sh cmd_install() { local n=`basename $1` n=`echo $n | sed "s/_[0-9.-]\+_amd64.deb//"` /bin/bash $0 -q $n >/dev/null 2>&1 && { fatal "$n is already installed (`/bin/bash $0 -q $n`)" } cmd_update $1 } cmd_update() { $dpkg --dry-run -i $1 || fatal "Test-installation failed." $dpkg -i $1 || fatal "Installation failed." } cmd_erase() { #$dpkg -r $1 $dpkg --purge $1 } cmd_query() { [ "$query_cmd" ] && { eval cmd_query_\$query_cmd $1 return $? } local p=`echo $1 | sed 's/-[0-9.-]\+$//'` local v=`echo $1 | sed "s/^$p-*//"` local ip=`dpkg-query -W -f '${Package}' $p >/dev/null 2>&1` [ $? != 0 -o -z "$ip" ] && exit 1 local iv=`dpkg-query -W -f '${Version}' $p >/dev/null 2>&1` [ "$v" ] && { [ "$v" != "$iv" ] && { echo "tried $1, installed version is $iv" >&2 exit 1 } } echo $ip-$iv return 0 } usage() { echo "usage: $myname [-h] [... misc rpm options]" [ "$1" ] && exit $1 } fatal() { echo $@ >&2 exit 1 } # -- here we go myname=`basename $0` dpkg=/usr/bin/dpkg cmd="" set -- `getopt hqiUe "$@"` while [ "$1" != -- ]; do case $1 in -h) usage 0 ;; -q) [ "$cmd" ] && usage 1 cmd=query ;; -i) [ "$cmd" ] && usage 1 cmd=install ;; -U) [ "$cmd" ] && usage 1 cmd=update ;; -e) [ "$cmd" ] && usage 1 cmd=erase ;; *) usage 1 ;; esac shift done shift [ $# != 1 ] && usage 1 [ "$cmd" ] || usage 1 eval cmd_\$cmd $1