Gerando pacotes do Slackware
Publicado por Perfil removido (última atualização em 14/07/2011)
[ Hits: 6.873 ]
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
Testa a conexão com a internet e se não tem reinicia o pc.
Gerência do tempo de inicialização das MFs de uma nuvem privada com o OpenNebula
Cirurgia para acelerar o openSUSE em HD externo via USB
Void Server como Domain Control
Modo Simples de Baixar e Usar o bash-completion
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
Atualizar Linux Mint 22.2 para 22.3 beta
Jogar games da Battle.net no Linux com Faugus Launcher
Como fazer a Instalação de aplicativos para acesso remoto ao Linux
Conky, alerta de temperatura alta (10)
Assisti Avatar 3: Fogo e Cinzas (3)
Duas Pasta Pessoal Aparecendo no Ubuntu 24.04.3 LTS (42)









