Gerando pacotes do Slackware
Publicado por Perfil removido (última atualização em 14/07/2011)
[ Hits: 6.821 ]
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
Obter ip a partir de um NO-IP ou DYNDNS e atualizar o endereço do MUNIN MESTRE em um nó linux.
Antivírus no Linux para usuários de domínio
Instalação do Cacti v0.8.7g + Plugins
Backup com data no nome do arquivo
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Linux em 2025: Segurança prática para o usuário
Desktop Linux em alta: novos apps, distros e privacidade marcam o sábado
IA chega ao desktop e impulsiona produtividade no mundo Linux
Novos apps de produtividade, avanços em IA e distros em ebulição agitam o universo Linux
Como instalar o repositório do DBeaver no Ubuntu
Como instalar o Plex Media Server no Ubuntu
Digitando underscore com "shift" + "barra de espaços"
Como ativar a lixeira e recuperar aquivos deletados em um servidor Linux
Como mudar o nome de dispositivos Bluetooth via linha de comando
Programa fora de escala na tela do pc (2)
Fedora KDE plasma 42 X Módulo de segurança BB (Warsaw-2) (1)
O programa assinador digital (1)









