#!/bin/bash # Escrito por : Hamacker (sirhamacker@gmail.com) 2006-10-30 # Função : # Este script cria um .deb para um pacote já précompilado e nas # definicoes desse script o destino desse aplicativo será sempre # em /opt/nomedoprograma # se quiser '/usr/local' basta mudar 'PACKAGE_FOLDER' para : # PACKAGE_FOLDER=usr/local # apenas nao coloque barra no inicio do path # # se uma pasta for informada como parametro entao essa pasta será o # nosso pacote a ser criado. Essa pasta deverá ter a conotação : # nomedoprograma-versao # # Obs: Este script foi escrito com a ajuda deste link : # http://synthesize.us/HOWTO_make_a_deb_archive_without_dpkg # CURRENT=`pwd` # Informacoes peculiares sobre o pacote PACKAGE_NAME="googleearth" PACKAGE_VERSION="4.0.2413" PACKAGE_SECTION="X11/Internet" PACKAGE_MAINTAINER="hamacker " SHORTCUT_CATEGORIES="Application;Network;" # pasta onde sera instalado PAGKAGE_FOLDER="opt" # nome da aplicacao APPLICATION_NAME="Google Earth beta4" # nome do executavel (nao colocar barra no inicio) APLICATION_BIN="googleearth" # nome do icone que sera utilizado (nao colocar barra no inicio) APPLICATION_ICON=$PAGKAGE_FOLDER/$PACKAGE_NAME/googleearth-icon.png # descricao curta PACKAGE_DESCRIPTION="Com o Google Earth você pode encontrar qualquer localidade na Terra" # destino do pacote : BUILD_DESTINY=$CURRENT/build/$PAGKAGE_FOLDER/$PACKAGE_NAME/ ######################################### # leia-me que será criado para o pacote # ######################################### PACKAGE_README[1]="Com o Google Earth você pode encontrar qualquer localidade na Terra," PACKAGE_README[2]=" algumas com tanta precisão que é possível ver ruas, cruzamentos," PACKAGE_README[3]=" até hospitais e os restaurantes mais famosos em mapas 3D." PACKAGE_README[4]="http://tribaltrouble.com/" #################################################################### # dentro de build/ recrio a estrutura que desejo ser instalada... # #################################################################### if [ -d "$CURRENT/build" ] ; then rm -fR $CURRENT/build fi mkdir -p $BUILD_DESTINY #################################################################### # ... e depois copio os arquivos para lá # #################################################################### cp -vR $CURRENT/* $BUILD_DESTINY/ # apagar eventuais .deb que tenham sido gerados antes rm -f $BUILD_DESTINY/*.deb # remover backups destes scripts rm -f $BUILD_DESTINY/*.sh~ ################################################# # Construção do pacote tambem deve ser removido # ################################################# rm -fR $BUILD_DESTINY/build #################################################################### # remover arquivos desnecessarios no pacote # #################################################################### rm -fR $BUILD_DESTINY/src rm -fR $BUILD_DESTINY/obj rm -f $BUILD_DESTINY/makefile* # entro dentro do diretorio de construcao, e crio uma pasta doc mkdir -p $CURRENT/build/etc mkdir -p $CURRENT/build/opt mkdir -p $CURRENT/build/usr/share/doc/$PACKAGE_NAME ############################## # Escrever um arquivo README # ############################## rm -f $CURRENT/build/usr/share/doc/$PACKAGE_NAME/README touch $CURRENT/build/usr/share/doc/$PACKAGE_NAME/README for linha_readme in "${PACKAGE_README[@]}"; do echo $linha_readme >>$CURRENT/build/usr/share/doc/$PACKAGE_NAME/README done ##################### # criando um atalho # ##################### mkdir -p $CURRENT/build/usr/share/applications cat > $CURRENT/build/usr/share/applications/$PACKAGE_NAME.desktop < $CURRENT/build/usr/bin/$PACKAGE_NAME.sh <$CURRENT/build/control echo "Version: $PACKAGE_VERSION">>$CURRENT/build/control echo "Section: $PACKAGE_SECTION">>$CURRENT/build/control echo "Priority: optional">>$CURRENT/build/control echo "Architecture: all">>$CURRENT/build/control echo "Installed-Size: `du -ks usr|cut -f 1`">>$CURRENT/build/control echo "Replaces: $PACKAGE_NAME">>$CURRENT/build/control echo "Provides: $PACKAGE_NAME">>$CURRENT/build/control echo "Maintainer: $PACKAGE_MAINTAINER">>$CURRENT/build/control echo "Description: $PACKAGE_DESCRIPTION">>$CURRENT/build/control for linha_long_desc in "${PACKAGE_README[@]}"; do echo " $linha_long_desc" >>$CURRENT/build/control done ############################################################################ # Setting this environment variable fixes Apple's modified GNU tar so that # # it won't make dot-underscore AppleDouble files. Google it for details... # ############################################################################ #export COPY_EXTENDED_ATTRIBUTES_DISABLE=1 ######################## # Acertando permissoes # ######################## find $CURRENT/build -type d -exec chmod 777 {} \; chown nobody.users -R $CURRENT/build #################################################### # Posicionando-se sob o diretorio a ser empacotado # #################################################### cd $CURRENT/build ############################################### # criar arquivo de dados em formato tarball # # neste exemplo, apenas pastas usr, opt e etc # # podem ser instaladas # ############################################### tar czvf data.tar.gz usr/ opt/ etc/ # criar arquivo de controle em formato tarball tar czvf control.tar.gz control # criar o arquivo debian-binary echo "2.0" >$CURRENT/build/debian-binary # create the ar (deb) archive cd $CURRENT ar -r ../$PACKAGE_NAME-$PACKAGE_VERSION.deb \ $CURRENT/build/debian-binary \ $CURRENT/build/control.tar.gz \ $CURRENT/build/data.tar.gz if [ $? -ne 0 ] ; then echo "ops! falhou a criação do pacote $CURRENT/$PACKAGE_NAME-$PACKAGE_VERSION.deb !" exit; else echo "[sucesso] Pacote criado com sucesso." echo "Para instalar :" echo " sudo dpkg -i ../$PACKAGE_NAME-$PACKAGE_VERSION.deb" echo "Para remover :" echo " sudo apt-get -y --purge remove $PACKAGE_NAME" fi echo "fim." # remover os tarballs temporarios rm $CURRENT/build/data.tar.gz $CURRENT/build/control.tar.gz # retornar ao diretorio inicial cd $CURRENT