Bug#46520: dpkg has no way to rebuild a package from installed software
"A month of sundays ago Alexander Koch wrote:"
>
> On Sun, 3 October 1999 13:44:32 +0200, Peter T. Breuer wrote:
> > As far as I can see, there is no option to dpkg to tell it to
> > rebuild a package from the installed files and control data.
>
> You do not probably mean dpkg-repack?
> You have tested that package?
You wonder correctly. dpkg-repack is not referenced in any of
the man pages for dpkg or dpkg-deb. (grep repack).
> just wondering,
> Alexander
>
> --
> Alexander Koch - <>< - WWJD - aka Efraim - PGP 0xE7694969 - ARGH-RIPE
Thanks for the info! Meanwhile I hacked my own.
Peter
#! /bin/sh
package=$1
BUILD=/tmp
case `arch` in
i?86) ARCH=i386 ;;
*) ARCH=`arch` ;;
esac
usage(){
echo usage: $0 PACKAGE '(no version or .deb wanted)'
}
[ -z "$package" ] && { usage; exit 1 ; }
cd $BUILD && mkdir -p $package || exit 2
cd $package || exit 2
mkdir -p DEBIAN || exit 3
set nullglob
for i in /var/lib/dpkg/info/$package.*; do
cp -p $i DEBIAN/
done
cd DEBIAN
for i in $package.*; do
j=${i#$package.}
mv $i $j
done
cd ..
# now in $BUILD/$package again
[ -s DEBIAN/list ] || exit 4
cat DEBIAN/list | \
while read name ; do [ ! -d $name ] && echo -n "$name"'\000'; done | \
xargs -0 tar cvpfC - / | \
tar xvpf -
cat /var/lib/dpkg/status | \
awk "/^Package: $package\$/,/^\$/ { print \$0 }" | \
sed -e "s/^Status:.*/Architecture: $ARCH/" > DEBIAN/control
VERSION="`grep '^Version:' DEBIAN/control | cut -d' ' -f 2`"
# go to $BUILD
cd ..
dpkg -b $package ${package}_${VERSION}_$ARCH.deb
Reply to: