Gerando pacotes do Slackware
Publicado por Perfil removido (última atualização em 14/07/2011)
[ Hits: 6.651 ]
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
Criação de Usuarios , Grupo e instalação do servidor de arquivos samba
Monitore vários servidores ao mesmo tempo com Apache + shellscript
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Meu Fork do Plugin de Integração do CVS para o KDevelop
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
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Cups: Mapear/listar todas as impressoras de outro Servidor CUPS de forma rápida e fácil
Criando uma VPC na AWS via CLI
Falta pacotes de suporte ao sistema de arquivos (Gerenciador de discos... (2)
Enzo quer programar mas não faz código pra não bugar (12)
Erro de Montagem SSD Nvme (12)
WebScrapping através de screenshot devido a bloqueios de Shadow DOM (1)