Blog biasa dari orang biasa

1.16.2010

Kadang-kadang saya tidak bisa menemukan paket zenwalk (.tgz, .txz, atau .tlz) untuk aplikasi yang saya mau. Kalau lagi kaya gini (dan males download sourcenya dan compile sendiri) saya biasanya nyari paket *.rpm. Paket .rpm memang cukup melimpah dan gampang dicari. Dan di Zenwalk sudah disediakan tools untuk convert *.rpm menjadi *.tgz, rpm2tgz namanya.

Nah, baru-baru ini saya menemukan sesuatu yang menarik dari artikel di sini, Hei.. hei.., deb2tgz..!! Yup, convert paket debian (*.deb) ke *.tgz.

Paket debian juga banyak tersedia di internet. Mungkin popularitas ubuntu jadi salah satu faktornya. Dan pengguna zenwalk (atau keluarga slackware lain) bisa memanfaatkan paket *.deb ini dengan mengkonversinya menjadi paket *.tgz. Tidak perlu menginstall macem-macem (kaya alien), cukup dengan meng-copy paste script berikut ini ke text editor dan disimpan dengan nama deb2tgz.

#!/bin/bash

#Perform some checks
if [ $UID != 0 ]; then
echo "You need to be root"
exit 1
fi

case $1 in
'-h'|'--help'|'')
echo \ "Usage: $0 [deb package]"
exit
;;
*)
;;
esac

if [ ! $(echo $1 | grep \.deb$) ]; then
echo "incorrect filetype"
exit 1
fi

#Set variables
DEB=$1
DIR=$(echo $1 | sed -e 's/\.deb//' -e 's/_/-/g')

#Remove directory if it already exists
if [ -e $DIR ]; then
rm -rf $DIR
fi

#make dir and copy deb into it
mkdir $DIR
cp $DEB $DIR

#change into dir, extract deb and remove garbage
cd $DIR
ar x $DEB
rm $DEB
rm debian-binary

#extract data
tar xf data.tar.gz
rm data.tar.gz

#extract control files, find NAME and DEPS and then remove them
mkdir DEBIAN
tar xf control.tar.gz -C DEBIAN/
rm control.tar.gz
NAME=$(cat DEBIAN/control | awk '/Package:/ {print $2}')
DEPS=$(cat DEBIAN/control | grep ^Depends | sed 's/, /\n/g' | awk '!/Depends/{print $1}' | sed 's/$/,/g')
rm -rf DEBIAN

#Create slack-desc
mkdir install
cat <<"EOF" Write the slack-desc file following all the normal conventions. On the first line put the name of the software and a short description. Skip the second line and put a longer description on lines 3-11. Don't type beyond the ruler, simply press enter to go to the next line. When you are done simply put EOF and press enter, that line will not be included

|-----handy-ruler------------------------------------------------------|
EOF

CTR=0 while [ "$DESCRIPTION" != "EOF" ]; do let "CTR += 1" echo -n "> "
if [ "$CTR" == "2" ]; then
echo "$NAME:" >> install/slack-desc
echo ""
continue
fi
read DESCRIPTION
echo "$NAME: $DESCRIPTION" >> install/slack-desc
done
sed '/EOF/d' -i install/slack-desc

while [ "$CTR" -le "11" ]; do
echo "$NAME:" >> install/slack-desc
let "CTR += 1"
done

#Remove target package if it already exists
if [ -e ../$DIR.tgz]; then
rm -rf ../$DIR.tgz
fi

#Make package
makepkg -l y -c n ../$DIR.tgz
cd ..

#Create .dep files
echo "Finding Dependencies..."
requiredbuilder -z $DIR.tgz > $NAME-requiredbuilder.dep
echo $DEPS | sed -e 's/,$//' -e 's/ //g' > $NAME-debcontrol.dep


Setelah itu, file deb2tgz tadi dibuat executable

# chmod +x deb2tgz


Warning!! Hasil konversinya masih dipertanyakan (bisa dipakai atau tidak). Tapi sepertinya tidak ada jeleknya kita coba install. Toh kita bisa dengan mudah membuang paket hasil convert yang kita install itu dengan command removepkg.

Sekarang tinggal test aja. Cara makenya
# deb2tgz nama_paket.deb

Ketika berjalan, kita akan diminta memasukkan nama output (terserah), deskripsi paket (terserah juga) ditutup dengan EOF, lalu tekan enter. Tunggu beberapa saat. Outputnya berupa 1 file *.tgz, 2 file .dep, dan 1 direktori yang isinya sama dengan isi *.tgz



Saya sudah mencobanya. Bisa dilihat di screenshot. Sebagai bahan percobaan, saya gunakan paket xulrunner dari CD instalasi Xubuntu 8.10 alternate. Xulrunner ini saya butuhkan agar aplikasi Zekr (Quran Digital) bisa berjalan. Dan hasilnya sama baik ketika saya memakai source xulrunner dari mozilla (dengan terlebih dulu me-removepkg xulrunner hasil convert ini)

Semoga bermanfaat

Referensi: http://wiki.zenwalk.org/index.php?title=Deb2tgz

2 komentar: