Gerando pacotes do Slackware
Publicado por Perfil removido (última atualização em 14/07/2011)
[ Hits: 6.618 ]
Este script foi desenvolvido para gerar pacotes .txz "Slackware" diretamente do código fonte.
Para saber as opções do script use o parâmetro -h:
./dgfpacote -h
#!/bin/bash # ----------------------------------------------------------------------- # - Feito por: Douglas Giorgio Fim - # - E-mail: dgf_skt@hotmail.com - # - MSN: dgf_skt@hotmail.com - # - Programa: dgfpacote - # - Versao: 2.0 - # - - # - Este script pode ser alterado e distribuido por qualquer pessoa, - # - desde que este quadro se mantenha inalterado! - # - - # - Obs.: Este script foi desenvolvido para gerar pacotes .txz "Slackware" diretamente do codigo fonte - # ----------------------------------------------------------------------- PWD=`pwd` ARCH=`arch` DGFBASETMP=/tmp/DGF/TMP DGFBASE=/tmp/DGF/PKG PKG="" DIR="" if [ ! -z $DGFBASE ]; then mkdir -p "$DGFBASE" fi if [ ! -z $DGFBASETMP ]; then mkdir -p "$DGFBASETMP" fi if [ "$ARCH" = "x86_64" ]; then if [ -d /usr/lib64 ]; then LIB=/usr/lib64 else LIB=/usr/lib fi else LIB=/usr/lib fi ######################################### # Inicio das Funções ######################################### HELP() { echo -e " Este script foi desenvolvido para gerar pacotes .txz \"Slackware\" diretamente do codigo fonte. Ele é compativel com os seguintes pacotes: .tar.gz .tgz .tar.bz2 .tar .bz2 .rar .zip Formas de uso: dgfpacote pacote.tar.gz Caso ja tenha o pacote descompactado, você pode escolher uma <opções> para setar o diretorio e dar sequencia na criação do pacote, compilar kernel e limpar os restos. dgfpacote <opções> \"diretorio\pacote\" <opções> \e[1;01m-c\e[0m - da sequencia na criação do pacote a partir do \e[1;01m./configure\e[0m \e[1;01m-m\e[0m - da sequencia na criação do pacote a partir do \e[1;01mmake\e[0m \e[1;01m-mi\e[0m - da sequencia na criação do pacote a partir do \e[1;01mmake install\e[0m \e[1;01m-mp\e[0m - da sequencia na criação do pacote a partir do \e[1;01mmakepkg\e[0m \e[1;01m-mk\e[0m - gera um pacote do kernel a partir do fonte \e[1;01m\"USE SOMENTE PACOTES DO FONTE\"\e[0m \e[1;01m-l\e[0m - limpa/remove os arquivos temporarios \e[1;01m-lp\e[0m - limpa/remove o os pacotes criados \e[1;01m-h\e[0m - HELP! É necessário estar logado como root para o funcionamento perfeito do script Douglas Giorgio Fim " } AVISO() { echo -e "\e[1;01m############################################################\e[0m" echo -e "\e[1;01m$1\e[0m" echo -e "\e[1;01m############################################################\e[0m" } ERRO() { echo "[ERRO!] O script foi interrompido no processo: $1" exit 1 } DESCOMPACTA() { VERIFICA(){ if [ -d "$DGFBASETMP/$DIRETORIO" ]; then echo -n "O diretório já existe, deseja continuar a extração? [N/y] " ; read -n 1 RESPOSTA_VERIFICA if [ "$RESPOSTA_VERIFICA" = "" ]; then RESPOSTA_VERIFICA=n fi else RESPOSTA_VERIFICA=y fi RESPOSTA_VERIFICA=`echo $RESPOSTA_VERIFICA | tr [A-Z] [a-z]` } case $PKG in *.tar.gz) COMPACTACAO=.tar.gz ; DIRETORIO=`tar -tvf $DIR/$PKG | awk 'NR == 1{print $6}' | sed 's/\(.*\)\/\(.*\)/\1/'` ; VERIFICA ; if [ $RESPOSTA_VERIFICA = y ]; then tar -xzvf $DIR/$PKG -C $DGFBASETMP ; fi ;; *.tgz) COMPACTACAO=.tar.gz ; DIRETORIO=`tar -tvf $DIR/$PKG | awk 'NR == 1{print $6}' | sed 's/\(.*\)\/\(.*\)/\1/'` ; VERIFICA ; if [ $RESPOSTA_VERIFICA = y ]; then tar -xzvf $DIR/$PKG -C $DGFBASETMP ; fi ;; *.tar.bz2) COMPACTACAO=.tar.bz2 ; DIRETORIO=`tar -tvf $DIR/$PKG | awk 'NR == 1{print $6}' | sed 's/\(.*\)\/\(.*\)/\1/'` ; VERIFICA ; if [ "$RESPOSTA_VERIFICA" = y ]; then tar -xjvf $DIR/$PKG -C $DGFBASETMP ; fi ;; *.tar) COMPACTACAO=.tar ; DIRETORIO=`tar -tvf $DIR/$PKG | awk 'NR == 1{print $6}' | sed 's/\(.*\)\/\(.*\)/\1/'` ; VERIFICA ; if [ $RESPOSTA_VERIFICA = y ]; then tar -xvf $DIR/$PKG -C $DGFBASETMP ; fi ;; *.bz2) COMPACTACAO=.bz2 ; DIRETORIO=`echo $DIR/$PKG | sed -e 's/'$COMPACTACAO'//g'` ; VERIFICA ; if [ $RESPOSTA_VERIFICA = y ]; then bunzip $DIR/$PKG $DGFBASETMP || bunzip2 $pkg ; fi ;; *.rar) COMPACTACAO=.rar ; VERIFICA ; if [ $RESPOSTA_VERIFICA = y ]; then unrar x $DIR/$PKG $DGFBASETMP ; fi ;; *.zip) COMPACTACAO=.zip ; VERIFICA ; if [ $RESPOSTA_VERIFICA = y ]; then gunzip $DIR/$PKG $DGFBASETMP ; fi ;; esac } CONFIGURE() { CONFIGURE2() { if [ -e ./configure ]; then ./configure --help || ./configure -help COMANDO="./configure --prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --libdir=$LIB " echo -n "Acrescente os parametros que desejar: $COMANDO" ; read PARAMETROS COMANDO="./configure --prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --libdir=$LIB $PARAMETROS" && AVISO "$COMANDO" && ./configure --prefix=/usr --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc --libdir=$LIB $PARAMETROS #|| # COMANDO="./configure --prefix=/usr --libdir=$LIB $PARAMETROS" && # AVISO "$COMANDO" && # ./configure --prefix=/usr --libdir=$LIB $PARAMETROS || # COMANDO="./configure --prefix=/usr $PARAMETROS" && # AVISO "$COMANDO" && # ./configure --prefix=/usr $PARAMETROS || ERRO "$COMANDO" fi } if [ -e $DGFBASETMP/$DIRETORIO/configure ]; then cd $DGFBASETMP/$DIRETORIO CONFIGURE2 elif [ -e $DGFBASETMP/$DIRETORIO/src/configure ]; then cd $DGFBASETMP/$DIRETORIO/src CONFIGURE2 fi } MAKE() { MAKE2() { echo -n "Acrescente os parametros que desejar no make: " ; read PARAMETROS_MAKE COMANDO="make $PARAMETROS_MAKE" AVISO "$COMANDO" make $PARAMETROS_MAKE || ERRO $COMANDO } if [ -e $DIR/$DIRETORIO/Makefile ]; then MAKE2 elif [ -e $DIR/$DIRETORIO/src/Makefile ]; then cd $DIR/src MAKE2 fi } MAKEKERNEL() { MAKEKERNEL2() { COMANDO="make clean" AVISO "$COMANDO" make clean || ERRO $COMANDO COMANDO="mrproper" AVISO "$COMANDO" make mrproper || ERRO $COMANDO while [ ! -f "$DGFBASETMP/$DIRETORIO/.config" ]; do echo "[1] make menuconfig - PADRÃO!" echo "[2] make oldconfig " echo "[3] make config" echo "[4] make xconfig" echo "Escolha um modo de configuração: " ; read -n 1 ESCOLHA_CONFIG if [ "$ESCOLHA_CONFIG" = "" ]; then ESCOLHA_CONFIG=1 fi case $ESCOLHA_CONFIG in 1)COMANDO="make menuconfig" AVISO "$COMANDO" make menuconfig || ERRO $COMANDO ;; 2)COMANDO="make oldconfig" AVISO "$COMANDO" make oldconfig || ERRO $COMANDO ;; 3)COMANDO="make config" AVISO "$COMANDO" make config || ERRO $COMANDO ;; 4)COMANDO="make xconfig" AVISO "$COMANDO" make xconfig || ERRO $COMANDO ;; esac done COMANDO="make" AVISO "$COMANDO" make || ERRO $COMANDO COMANDO="make bzImage" AVISO "$COMANDO" make bzImage COMANDO="make modules" AVISO "$COMANDO" make modules || ERRO $COMANDO COMANDO="make targz-pkg" AVISO "$COMANDO" make targz-pkg cd "$DGFBASETMP/$DIRETORIO" NUM=1 NOME_PKG=$DIRETORIO-$ARCH-$NUM.tgz while [ -e ../$NOME_PKG ]; do let NUM++ NOME_PKG=$DIRETORIO-$ARCH-$NUM.tgz done mv $DIRETORIO.tar.gz $DGFBASE/$NOME_PKG DIR2=`echo $DIRETORIO`-TMP mkdir $DGFBASETMP/$DIR2 } if [ -e $DGFBASETMP/$DIRETORIO/Makefile ]; then cd $DGFBASETMP/$DIRETORIO MAKEKERNEL2 elif [ -e $DGFBASETMP/$DIRETORIO/src/Makefile ]; then cd $DGFBASETMP/$DIRETORIO/src MAKEKERNEL2 fi } MAKE_INSTALL() { MAKE_INSTALL2() { PARAMETRO_MAKE_INSTALL="INSTALL_TOP=$1 PREFIX=$1 DESTDIR=$1 INSTALL_ROOT=$1 PREFIX_ROOT=$1" COMANDO="make install $PARAMETRO_MAKE_INSTALL" AVISO "$COMANDO" make install ""$PARAMETRO_MAKE_INSTALL"" || ERRO "$COMANDO" } cd $DGFBASETMP/$DIRETORIO DIR2=`echo $DIRETORIO`-TMP mkdir $DGFBASETMP/$DIR2 MAKE_INSTALL2 "$DGFBASETMP/$DIR2" } MAKEPKG(){ cd $DGFBASETMP/$DIR2 NUM=1 NOME_PKG=$DIRETORIO-$ARCH-$NUM.txz while [ -e $DGFBASE/$NOME_PKG ]; do let NUM++ NOME_PKG=$DIRETORIO-$ARCH-$NUM.txz done COMANDO="makepkg -l y -c n $DGFBASE/$NOME_PKG" AVISO $COMANDO makepkg -l y -c n $DGFBASE/$NOME_PKG || ERRO "$COMANDO" PACOTE_INSTALADO=`for i in /var/log/packages/* ; do echo $i | sed -e 's/\(.*\)-\(.*\)-\(.*\)-\(.*\)/\1/;s/[ ]//g;s/\(.*\)\/\(.*\)/\2/;s/[ ]//g' ;done` PACOTE_INSTALAR=`echo "$DIRETORIO" | sed -e 's/\(.*\)-\(.*\)/\1/;s/[ ]//g'` VERIFICACAO_PACOTE=`echo $PACOTE_INSTALADO | grep -w "$PACOTE_INSTALAR"` if [ "$VERIFICACAO_PACOTE" = "" ]; then if [ -e $DGFBASE/$NOME_PKG ]; then RESPOSTA="errada" while [ "$RESPOSTA" = "errada" ]; do echo -n "Deseja instalar o pacote? $DGFBASE/$NOME_PKG [S/n] : " ; read -n 1 RESPOSTA RESPOSTA=`echo $RESPOSTA | tr A-Z a-z` if [ -z $RESPOSTA ]; then RESPOSTA=s fi case $RESPOSTA in [ys]) AVISO "installpkg $DGFBASE/$NOME_PKG" ; installpkg $DGFBASE/$NOME_PKG ;; n) echo ;; *) RESPOSTA="errada" ;; esac done fi else if [ -e $DGFBASE/$NOME_PKG ]; then RESPOSTA="errada" while [ "$RESPOSTA" = "errada" ]; do echo -ne "Existe outro pacote \e[1;01m\"$PACOTE_INSTALAR\"\e[0m instalado, deseja atualizar? $DGFBASE/$NOME_PKG [S/n] : " ; read -n 1 RESPOSTA RESPOSTA=`echo $RESPOSTA | tr A-Z a-z` if [ -z $RESPOSTA ]; then RESPOSTA=s fi case $RESPOSTA in [ys]) AVISO "upgradepkg $DGFBASE/$NOME_PKG" ; upgradepkg $DGFBASE/$NOME_PKG ;; n) echo ;; *) RESPOSTA="errada" ;; esac done fi fi } LIMPA() { RESPOSTA2="errada" while [ "$RESPOSTA2" = "errada" ]; do echo "Deseja excluir os restos? "\"$DGFBASETMP/$DIRETORIO\" \"$DGFBASETMP/$DIR2\"" [S/n]" ; read -n 1 RESPOSTA2 echo RESPOSTA2=`echo $RESPOSTA2 | tr A-Z a-z` if [ -z $RESPOSTA2 ]; then RESPOSTA2=s fi case $RESPOSTA2 in [ys]) rm -rv $DGFBASETMP/$DIRETORIO ; rm -rf $DGFBASETMP/$DIR2 ;; n) echo ;; *) RESPOSTA2="errada" ;; esac done } ######################################### # Fim das Funções ######################################### case $1 in -c) if [ -d $2 ]; then cd $2 VAR=$2 if [ $VAR = './' ]; then VAR=$PWD fi else echo "Diretorio invalido!" ; exit 1 fi DIR=`dirname $VAR` PKG=`basename $VAR` DIRETORIO=$PKG CONFIGURE MAKE MAKE_INSTALL MAKEPKG LIMPA AVISO "O pacote permanece em: $DGFBASE/$NOME_PKG" ;; -m) if [ -d $2 ]; then cd $2 VAR=$2 if [ $VAR = './' ]; then VAR=$PWD fi else echo "Diretorio invalido!" ; exit 1 fi DIR=`dirname $VAR` PKG=`basename $VAR` DIRETORIO=$PKG MAKE MAKE_INSTALL MAKEPKG LIMPA AVISO "O pacote permanece em: $DGFBASE/$NOME_PKG" ;; -mk) if [ -n $2 ]; then if [ -d $2 ]; then DIR=`dirname $2` PKG=`basename $2` DIRETORIO=$PKG MAKEKERNEL ; LIMPA else DIR=`dirname $2` PKG=`basename $2` DIRETORIO=$PKG DESCOMPACTA MAKEKERNEL LIMPA AVISO "O pacote permanece em: $DGFBASE/$NOME_PKG" fi fi ;; -mi)if [ -d $2 ]; then cd $2 VAR=$2 if [ $VAR = './' ]; then VAR=$PWD fi else echo "Diretorio invalido!" ; exit 1 fi DIR=`dirname $VAR` PKG=`basename $VAR` DIRETORIO=$PKG MAKE_INSTALL MAKEPKG LIMPA AVISO "O pacote permanece em: $DGFBASE/$NOME_PKG" ;; -mp)if [ -d $2 ]; then cd $2 VAR=$2 if [ $VAR = './' ]; then VAR=$PWD fi else echo "Diretorio invalido!" ; exit 1 fi DIR=`dirname $VAR` DIR2=`basename $VAR` DIRETORIO=$PKG MAKEPKG LIMPA AVISO "O pacote permanece em: $DGFBASE/$NOME_PKG" ;; -l) AVISO "rm -rf $DGFBASETMP/*" ; rm -rf $DGFBASETMP/* ;; -lp) AVISO "rm -rf $DGFBASE/*" ; rm -rf $DGFBASE/* ;; -h) HELP ;; *) DIR=`dirname $1` PKG=`basename $1` DESCOMPACTA CONFIGURE MAKE MAKE_INSTALL MAKEPKG LIMPA AVISO "O pacote permanece em: $DGFBASE/$NOME_PKG" exit 1 ;; esac exit 1
Instalando a última versão estável do Eclipse com uma única linha
Migração de Aplicações para Ambiente Web - Uma Abordagem Prática
Renomeia diretorio,subdiretorio e arquivos de maiuscula > minuscula
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
Flatpak: remover runtimes não usados e pacotes
Mudar o gerenciador de login (GDM para SDDM e vice-versa) - parte 2
Wifi não funciona no Aspire ES 15 com o Debian (8)
Como atualizar o Debian 8 para o 10 (10)
Dica sobre iptables ACCEPT e DROP (6)
NGNIX - Aplicar SNAT para evitar roteamento assimetrico (29)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta