deb_lzma_repack.sh /полный/путь/до/пакета/пакет.debКод:
#!/bin/bash
PACKAGE=$1
PACKAGENAME=`basename ${PACKAGE}`
TMPDIR=/tmp
BUILDDIR=`echo ${PACKAGENAME} | sed s/".deb"/""/g`
mkdir ${TMPDIR}/${BUILDDIR}
cp ${PACKAGE} ${TMPDIR}/${BUILDDIR}
mv ${PACKAGE} `echo ${PACKAGE} | sed s/".deb"/"_old.deb"/g`
cd ${TMPDIR}/${BUILDDIR}
ar x ${PACKAGENAME}
mkdir DEBIAN
if [ -f control.tar.gz ]
then
tar zxf control.tar.gz -C DEBIAN
rm control.tar.gz
fi
if [ -f data.tar.gz ]
then
tar zxf data.tar.gz
rm data.tar.gz
fi
if [ -f control.tar.bz2 ]
then
tar jxf control.tar.bz2 -C DEBIAN
rm control.tar.bz2
fi
if [ -f data.tar.bz2 ]
then
tar jxf data.tar.bz2
rm data.tar.bz2
fi
rm debian-binary ${PACKAGENAME}
cd ${TMPDIR}
dpkg-deb -b -z9 -Zlzma ${BUILDDIR} `echo ${PACKAGE} | sed s/".deb"/"_lzma.deb"/g`
rm -rf ${TMPDIR}/${BUILDDIR}
Всё очень красиво и интересно,но,не затруднит ли расписать комментарии?
ОтветитьУдалитьВ скрипте есть потенциальная ошибка в строчке (и ей подобных):
ОтветитьУдалитьsed s/".deb"/"_old.deb"/g
если путь к файлу будет "/.../...deb.../package.deb" то в результате получим "/.../..._old.deb.../package_old.deb"
Что-бы этого избежать нужно изменить на: sed s/"[.]deb$"/"_old.deb"/g