#!/bin/bash #-------------------------------------------------------------- PKG=repack-deb VER=0.92 REL=20090303 #check for needed command existence for c in /bin/mktemp /usr/bin/dpkg-deb /usr/bin/awk /bin/sed /usr/bin/fakeroot do if [ ! -x $c ]; then exit 1 fi done #-------------------------------------------------------------- #init destination directory DEST=./ NOKEEP=1 OPTAPP=1 #-------------------------------------------------------------- # define helper functions function display_version { echo >&2 "$PKG Version $VER Release $REL" echo >&2 "Copyright 2009, Hiroshi Miura " } function display_usage { echo >&2 "usage: $0 [-d][-v][-t target directory] " echo >&2 echo >&2 " -t target: set a directory stored converted packages" echo >&2 " if not set, default is current directory." echo >&2 " -d: verbose messages" echo >&2 " -n: disable specific process for some application." echo >&2 " eg. VitualBox, Skype, etc." echo >&2 " -k: keep working directory" echo >&2 " -v: display version" } #--------------------------------------------------------------- #check and extract parameters while getopts "dhknt:v" op; do case $op in \?) display_usage; exit 1;; d) DEBUG=1;; t) DEST="$OPTARG";; k) unset NOKEEP;DEBUG=1;; n) unset OPTAPP;; h) display_version; echo display_usage; exit 1;; v) display_version; exit 1;; esac done shift $(( $OPTIND - 1 )) if [ $# -lt 1 ]; then echo >&2 "no argument." display_usage exit 1 fi #------------------------------------------------------------ # define main routine # function cdeb { SRC=$1 #make work directory WORKDIR=`mktemp -d /tmp/debrepack.XXXXXXXXXX` || exit 1 mkdir $WORKDIR/DEBIAN #unpack debian package if [ $DEBUG ]; then echo >&2 "extract package in working directory $WORKDIR" fi fakeroot dpkg-deb --extract $SRC $WORKDIR fakeroot dpkg-deb --control $SRC $WORKDIR/DEBIAN #modify control file to fit architecture and get package name mv $WORKDIR/DEBIAN/control $WORKDIR/DEBIAN/control.orig sed -e 's/^Architecture: i386/Architecture: lpia/g' \ $WORKDIR/DEBIAN/control.orig > $WORKDIR/DEBIAN/control rm $WORKDIR/DEBIAN/control.orig if [ $OPTAPP ]; then PKGNAME=`awk '/Package:/{pkg=$2};/Version:/{ver=$2};END{printf("%s",pkg);}' \ $WORKDIR/DEBIAN/control` case $PKGNAME in virtualbox-2.1) rm -rf $WORKDIR/lib/modules/2.6.24-23-386 rm -rf $WORKDIR/lib/modules/2.6.24-23-generic rm -rf $WORKDIR/lib/modules/2.6.24-23-rt rm -rf $WORKDIR/lib/modules/2.6.24-23-server ;; skype) ;; esac fi #repackage it fakeroot dpkg-deb --build $WORKDIR $DEST #cleanup work directory if [ $NOKEEP ]; then rm -r $WORKDIR fi } #------------------------------------------------------------ #main for d in $* do if [ -f $d ]; then cdeb $d fi done exit 0