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

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: