Gerando pacotes do Slackware
Publicado por Perfil removido (última atualização em 14/07/2011)
[ Hits: 6.737 ]
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
Barra de Progresso com Shell Script
Cadastro Regras de Controle de Banda - CBQ
Script para automatizar OpenVpn
Calculadora de host de uma rede
Fazendo backup de uma pasta em arquivos separados
Aprenda a Gerenciar Permissões de Arquivos no Linux
Como transformar um áudio em vídeo com efeito de forma de onda (wave form)
Como aprovar Pull Requests em seu repositório Github via linha de comando
Aplicativo simples para gravar tela
Quebra de linha na data e hora no Linux Mint
UBUNTU com problemas no áudio (1)
Firefox não abre em usuário não administradores (1)
Sempre que vou baixar algum pacote acontece o erro dpkg (8)
tentando instalar em um notebook antigo o Linux LegacyOS_2023... [RESO... (8)