mirror of
ssh://git.janware.com/srv/git/janware/proj/jw-pkg
synced 2026-01-15 12:03:31 +01:00
99 lines
1.4 KiB
Bash
99 lines
1.4 KiB
Bash
#!/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
|
|
|