InstallDPKG - Instalando pacotes DEB no Slackware
Publicado por Mauricio Ferrari (última atualização em 26/04/2020)
[ Hits: 3.190 ]
Homepage: https://www.youtube.com/@LinuxDicasPro
Ao invés de converter um pacote do Debian para depois instalar no Slackware, porque já não instalar diretamente sem Slackbuilds, sem alien, sem deb2tgz, sem nada? Você baixa o pacote no formato .deb e já instala usando o script installdpkg.
O nome é uma homenagem ao dpkg do Debian. Inseri alguns parâmetros adicionais para aumentar a eficiência. Ele basicamente converte o pacote em um diretório temporário e depois já instala excluindo o pacote gerado temporariamente. Mas, eu deixei o parâmetro -c para quem quiser apenas converter o pacote.
#!/bin/bash
#
# InstallDPKG - Versão 1.2
#
# Script criado para instalar pacotes do Debian diretamente no Slackware, sem a necessidade de converter os pacotes.
#
# Foi utilizado como base o script "deb2tgz" criado por Vitor Borrego, Corroios, Portugal, 2016.
# Foi incrementado o parâmetro -c com base no script "deb2targz" criado por
# John Barrett <john@jbrt.org>, 2014. (03/10/2018).
#
# Construção do Script: 26/07/2018
# Ultima alteração: 26/04/2020
#
# Criado por Mauricio Ferrari. Nova Trento, Santa Catarina.
#############################################################################################################################
### Primeira etapa. Informação sobre o uso do Script. O ($0) copia a localização do Script.
if [ "$1" = "" ]; then
echo
echo "$0"
echo "InstallDPKG - Versão 1.2"
echo
echo " Script criado para instalar pacotes do Debian"
echo " diretamente no Slackware, sem a"
echo " necessidade de converter os pacotes."
echo
echo " Uso: installdpkg <-cu> <pacote.deb>"
echo
echo "Parâmetros:"
echo
echo " -c, Converte os pacotes mas não instala,"
echo " salvando no diretório onde o <pacote.deb>"
echo " se encontra."
echo
echo " -u, Usa um método que irá instalar o pacote"
echo " usando um método de Atualização, desinstalando"
echo " o pacote obsoleto."
echo
exit 1;
fi
#############################################################################################################################
### Criando o diretório temporário, que será usado no processo de conversão do pacote deb para a instalação.
tempfolder () {
if [ -x "$(which mcookie)" ]; then
tempd=/tmp/tmp.$(mcookie)
mkdir -p -m 0755 $tempd
elif [ -x "$(which openssl)" ]; then
tempd=/tmp/tmp.$(dd if=/dev/urandom bs=1k count=1 2> /dev/null | openssl dgst -md5)
mkdir -p -m 0755 $tempd
elif [ -x "$(which md5)" ]; then
tempd=/tmp/tmp.$(dd if=/dev/urandom bs=1k count=1 2> /dev/null | md5)
mkdir -p -m 0755 $tempd
elif [ -x "$(which mktemp)" ]; then
tempd=$(mktemp -d)
chmod 755 $tempd
fi
### Aqui o comando a seguir (echo $tempd) deve retornar com o nome do diretório criado para não acusar erro.
if [ -d $tempd ]; then
echo $tempd
else
echo
echo "ERRO: Não foi possível encontrar o mcookie,"
echo " o openssl, ou o md5."
echo
exit 1;
fi
}
#############################################################################################################################
### Função criada para o parâmetro -c que é a parte que faz a conversão, copiando o pacote gerado na pasta home.
convertion () {
if [ -f "$tempdir/data.tar.gz" ]; then ### Conversão do (data.tar.gz).
mv $tempdir/data.tar.gz $savedir/$(basename $debfile .deb).tgz
fi
if [ -f "$tempdir/data.tar.xz" ]; then ### Conversão do (data.tar.xz).
mv $tempdir/data.tar.xz $savedir/$(basename $debfile .deb).txz
fi
if [ -f "$tempdir/data.tar.bz2" ]; then ### Conversão do (data.tar.bz2).
mv $tempdir/data.tar.bz2 $savedir/$(basename $debfile .deb).tbz
fi
if [ -f "$tempdir/data.tar.lzma" ]; then ### Conversão do (data.tar.lzma).
mv $tempdir/data.tar.lzma $savedir/$(basename $debfile .deb).tlz
fi
rm -rf $tempdir ### O diretório temporário será excluído.
}
#############################################################################################################################
### Aqui é a parte onde é configurado os parâmetros do script.
ARGS=$(getopt "cu" $* ) ### identificação dos parâmetros inseridos.
set -- ${ARGS}
for i; do
case "$1" in
-u)
UPGRADE_PKG="true" ### Parâmetro -u.
shift
;;
-c)
CONVERT_PKG="true" ### Parâmetro -c.
shift
;;
--)
shift
break
;;
esac
done
#############################################################################################################################
### Parte do script que detecta o pacote debian e realiza a conversão e/ou a instalação do pacote gerado.
for debfile in $* ; do ### O debfile são os arquivos *.deb a serem instalados.
INST=installpkg ### Definindo o comando de instalação.
tempdir=$(tempfolder) ### Criando o diretório temporário.
savedir=$(pwd $debfile) ### Diretório onde o pacote convertido será salvo usando o parâmetro -c.
cp $debfile $tempdir 2>/dev/null ### Copiando o pacote *.deb para o diretório temporário.
cd $tempdir ### Acessando o diretório temporário.
ar x $debfile 2> /dev/null ### Extração do pacote *.deb usando o comando 'ar'.
if [ ! $? = 0 ]; then ### Mensagem exibida em caso de falha na extração.
echo
echo "ERRO: Ocorreu uma falha ao tentar fazer a extração"
echo " do pacote $debfile."
echo
echo " O pacote $debfile é invalido ou está"
echo " corrompido."
echo
rm -rf $tempdir ### O diretório temporário será excluído.
exit 1;
fi
if [ "$UPGRADE_PKG" = "true" ]; then ### Parâmetro -u.
INST="upgradepkg --install-new"
#exit 1;
fi
if [ "$CONVERT_PKG" = "true" ]; then ### Parâmetro -c.
convertion
exit 1;
fi
if [ "`basename $0`" = "installdpkg" ]; then ### Identificação do nome do Pacote.
echo -e -n "\033[1;36m"
if [ -f "$tempdir/data.tar.gz" ]; then ### Instalação do (data.tar.gz).
mv $tempdir/data.tar.gz $tempdir/$(basename $debfile .deb).tgz && $INST *.tgz
fi
if [ -f "$tempdir/data.tar.xz" ]; then ### Instalação do (data.tar.xz).
mv $tempdir/data.tar.xz $tempdir/$(basename $debfile .deb).txz && $INST *.txz
fi
if [ -f "$tempdir/data.tar.bz2" ]; then ### Instalação do (data.tar.bz2).
mv $tempdir/data.tar.bz2 $tempdir/$(basename $debfile .deb).tbz && $INST *.tbz
fi
if [ -f "$tempdir/data.tar.lzma" ]; then ### Instalação do (data.tar.lzma).
mv $tempdir/data.tar.lzma $tempdir/$(basename $debfile .deb).tlz && $INST *.tlz
fi
echo -e -n "\033[0m"
fi
rm -rf $tempdir ### O diretório temporário será excluído.
done
Adiciono linhas ao sources.list
Administração básica de usuários no MySQL
Cria usuario no linux e no samba
Para quem esquece facil das coisas
Nenhum comentário foi encontrado.
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
[Resolvido] VirtualBox can't enable the AMD-V extension
Como verificar a saúde dos discos no Linux
Como instalar , particionar, formatar e montar um HD adicional no Linux?
Como automatizar sua instalação do Ubuntu para desenvolvimento de software.
Não consigo instalar distro antiga no virtualbox nem direto no hd (14)
Quais os códigos mais dificeis que vcs sabem fazer? (12)
systemd-resol... precisa ser reiniciado periodicamente [RESOLVIDO] (7)









