Hello,

I am a bit stupid today. You _need_ dpkg_hurd v0.3.1 for the hurd_install
script, and it is useful anyway, so here it is.

In future,  I will upload those to master.debian.org/~brinkmd/hurd/.

Marcus

-- 
"Rhubarb is no Egyptian god."        Debian GNU/Linux        finger brinkmd@ 
Marcus Brinkmann                   http://www.debian.org    master.debian.org
[EMAIL PROTECTED]                        for public  PGP Key
http://homepage.ruhr-uni-bochum.de/Marcus.Brinkmann/       PGP Key ID 36E7CD09
#!/bin/sh
#
# Copyright (c) 1998 - This script is hereby placed in the public domain
#                      by Marcus Brinkmann.
#
# dpkg_hurd - poor man's dpkg.
#
# Usage - dpkg_hurd -i|--install package_*.deb [options]
#    or - dpkg_hurd -r|--remove package [options]
#    or - dpkg_hurd --purge package [options]
#    or - dpkg_hurd -s|-L package
#    or - dpkg_hurd -l|-S  [pattern]
#
#    [options] are passed through to dpkp. A good example is
#              "--force-depends"
#
# Warning: This script is for bootstrapping a Debian/Gnu Hurd system
#          onto an empty ext2 partition.  The {pre,post}{inst,rem}
#          scripts are not run.
#
# Change history:
#    19 Dec 1998 - v0.0 <[EMAIL PROTECTED]>
#        Original created by Marcus Brinkmann.
#    22 Dec 1998 - v0.1 Jeff Sheinberg <[EMAIL PROTECTED]>
#        Error checking, automatic update of status file.
#    24 Dec 1998 - v0.2 Jeff Sheinberg <[EMAIL PROTECTED]>
#        Remove by package name, fix bugs in name.list file creation.
#    TODO - add lockfile and trap exit & int, merge with deb_remove.
#    28 Dec 1998 - v0.3 Marcus Brinkmann <[EMAIL PROTECTED]>
#        Extract package name from deb file, not from file name.
#        Rebuild package w/o install scripts and use dpkg directly.
#        Added -r and -p as well as -s,-S,-l,-L options.
#     1 Jan 1999 - v0.3.1 Marcus Brinkmann <[EMAIL PROTECTED]>
#    TODO - fix all those race conditions and use proper tmp dir!

set -u -e

PS4='+$LINENO: '

err ()
{
    echo "$0: $1" 1>&2
    exit 1
}

vld="var/lib/dpkg"
vldi="${vld}/info"
[ -d ./${vld} ] || \
  err "cd is \`$PWD', must be run from a dpkg root directory"
[ -d ./lost+found ] || \
  err "cd is \`$PWD', must be run from a partition root filesystem directory"
[ -L ./usr -a ./ -ef usr/ ] \
  || err "cd is \`$PWD', must be run from a hurd root filesystem directory"

# [ "$#" == 2 ] || err "exactly two arguments, an action and a *.deb file or 
package name is required"

if [ "${1}" == "-i" -o "${1}" == "--install" ] ; then

        file="${2}"
        name=`dpkg --info ${file} | grep Package - | sed -e "s/ Package: //"`

        [ -f ${file} ] || err "file \`${file}' does not exist"

        # Construct directory hierarchie
        ctrl=temp_build/${name}/DEBIAN
        mkdir -m 0755 -p ${ctrl}

        # Extract the files from the .deb archive.
        dpkg-deb --extract ${file} ${ctrl}/..

        # Extract control info and create control files.
        dpkg-deb --control ${file} ${ctrl}

        # Move the package scripts out of the build dir.
        for f in preinst postinst prerm postrm
        do
          if [ -e ${ctrl}/${f} ] ; then
             mv ${ctrl}/${f} temp_build/
          fi 
        done

        # Now repack the file.
        dpkg --build temp_build/${name}

        # Move old prerm and postrm scripts out of the way.
        for f in prerm postrm
        do
          if [ -e ${vldi}/${name}.${f} ] ; then
             mv ${vldi}/${name}.${f} ${vldi}/${name}.${f}.backup
          fi
        done

        shift
        shift
        dpkg --root=. --force-architecture --install [EMAIL PROTECTED] 
temp_build/${name}.deb

        # Move new package scripts into dpkg's repository
        for f in preinst postinst prerm postrm
        do
          if [ -e temp_build/${f} ] ; then
             mv temp_build/${f} ${vldi}/${name}.${f}
          fi
          if [ -e ${vldi}/${name}.${f}.backup ] ; then
             rm ${vldi}/${name}.${f}.backup
          fi
        done

        # Clean temp directory.
        rm -fR temp_build
        exit 0

fi

if [ "${1}" == "-r" -o "${1}" == "--remove" -o "${1}" == "--purge" ] ; then

        action="${1}"
        name="${2}"

        # Move old prerm and postrm scripts out of the way.
        for f in prerm postrm
        do
          if [ -e ${vldi}/${name}.${f} ] ; then
             mv ${vldi}/${name}.${f} ${vldi}/${name}.${f}.backup
          fi
        done

        shift
        shift

        dpkg --root=. --force-architecture ${action} [EMAIL PROTECTED] ${name}

        for f in prerm postrm
        do
          if [ -e ${vldi}/${name}.${f}.backup ] ; then
             rm ${vldi}/${name}.${f}.backup
          fi
        done
        exit 0
        
fi
        
if [ "${1}" == "-s" -o "${1}" == "-S" -o "${1}" == "-l" -o "${1}" == "-L" ] ; 
then
        dpkg --root=. "[EMAIL PROTECTED]"
        exit 0
fi


# deb_hurd - end of file.

Reply via email to