From 17eb03bb2800437e324b730614f5df4cd03e943a Mon Sep 17 00:00:00 2001 From: Jan Lindemann Date: Sat, 14 Feb 2026 18:35:43 +0100 Subject: [PATCH] dpm.sh: Add it back for building Debian distros make pkg-install pkg-rebuild-reinstall needs it, so put it back into service. Signed-off-by: Jan Lindemann --- scripts/dpm.sh | 189 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 189 insertions(+) create mode 100644 scripts/dpm.sh diff --git a/scripts/dpm.sh b/scripts/dpm.sh new file mode 100644 index 00000000..ed25104c --- /dev/null +++ b/scripts/dpm.sh @@ -0,0 +1,189 @@ +#!/bin/bash + +log_dpkg() +{ + echo dpkg $@ + /usr/bin/dpkg $@ +} + +run() +{ + echo $@ + eval $@ +} + +# to be used on debian prior to jessie +dpkg_verify() +{ + local exitcode file pkg hashfile rfile phash hash + exitcode=0 + for file in $*; do + pkg=`dpkg -S "$file" | cut -d: -f 1` + hashfile="/var/lib/dpkg/info/$pkg.md5sums" + if [ -s "$hashfile" ]; then + rfile=`echo "$file" | cut -d/ -f 2-` + phash=`grep -E "$rfile\$" "$hashfile" | cut -d\ -f 1` + hash=`md5sum "$file" | cut -d\ -f 1` + if [ "$hash" = "$phash" ]; then + echo "$file: ok" + else + echo "$file: CHANGED" + exitcode=1 + fi + else + echo "$file: UNKNOWN" + exitcode=1 + fi + done + return $exitcode +} + +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 $* +} + +cmd_query() +{ + [ "$query_cmds" ] && { + local cmd installed + local id=name + if echo $query_cmds | grep -q p; then + id=pkg + query_cmds=`echo $query_cmds | sed 's/p//'` + elif echo $query_cmds | grep -q f; then + id=file + query_cmds=`echo $query_cmds | sed 's/f//'` + fi + for cmd in $query_cmds; do + case $cmd in + V) + $dpkg --verify $1 + ;; + i) + case $id in + file) + $dpkg -I $1;; + name) + $dpkg -s $1;; + #run apt-cache show $1;; + pkg) + $dpkg -S $1;; + esac + ;; + l) + case $id in + file) + echo blah + #$dpkg -p $1;; + ;; + name) + $dpkg -L $1;; + pkg) + $dpkg -c $1;; + esac + ;; + a) + $dpkg -l $1 + ;; + esac + done + 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=log_dpkg +cmd="" + +set -- `getopt hqiUeVfapl "$@"` +while [ "$1" != -- ]; do +case $1 in + -h) + usage 0 + ;; + -q) + [ "$cmd" ] && usage 1 + cmd=query + ;; + -V|-f|-a|-p|-l) + [ "$cmd" ] && { + [ "$cmd" = query ] || usage 1 + query_cmds="$query_cmds ${1:1:1}" + } + ;; + -i) + [ "$cmd" ] && { + [ "$cmd" = query ] || usage 1 + query_cmds="$query_cmds ${1:1:1}" + shift + continue + } + 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 $* +