#! /bin/sh # # redeb.sh - Command line utility for rewrapping installed Debian-packages # Copyright (C) 2003 Tommi Saviranta # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. # # # Version: redeb.sh v0.1.1 7-May-2003 tsaviran@cs.helsinki.fi if [ $# -ne 1 ]; then echo "Usage: $0 PACKAGE" exit 0 fi # See if such package is installed. if [ ! -f /var/lib/dpkg/info/$1.list ]; then echo "No such package installed." exit 1 fi # Create temporary directory. mkdir "_${1}_" cd "_${1}_" # Get file list for this package. for FILE in `cat "/var/lib/dpkg/info/${1}.list"`; do test -f "$FILE" && echo "$FILE" >>filelist done # Copy files here. tar -cf - `cat filelist` | tar -xf - # Create package-info. mkdir DEBIAN cp /var/lib/dpkg/info/${1}.* DEBIAN for FILE in `ls -1 DEBIAN`; do REAL=`echo "$FILE" | cut -d '.' -f 2` mv "DEBIAN/$FILE" "DEBIAN/$REAL" done test -f DEBIAN/list && rm -f DEBIAN/list BEGPOS=`grep -nx "Package: $1" /var/lib/dpkg/available | cut -d ':' -f 1` TOTLENGTH=`wc -l /var/lib/dpkg/available | cut -d ' ' -f 2` tail -n `expr $TOTLENGTH - $BEGPOS + 1` /var/lib/dpkg/available >_control_ LENGTH=`grep -nx "" _control_ | cut -d ':' -f 1 | head -n 1` head -n $LENGTH _control_ >DEBIAN/control # Get package info VERSION=`grep -E "^Version:" DEBIAN/control | cut -d ' ' -f 2 | cut -d ':' -f 2` ARCH=`grep -E "^Architecture:" DEBIAN/control | cut -d ' ' -f 2` # Clean up. rm -f _control_ filelist # Create package. cd .. dpkg-deb -b "_${1}_" "${1}_${VERSION}_${ARCH}.deb" # Clean up the rest. rm -rf "_${1}_"