Instalador de Código Fonte - Linha de Comando
Publicado por Mac (última atualização em 28/08/2020)
[ Hits: 2.120 ]
Homepage: sem
Instalador de código fonte, baseado no primeiro script que postei no Viva o Linux.
Foco: para distribuições source base.
NOTA: Qualquer distribuição pode usar, porém pode ser necessário fazer algum ajuste no script.
Versão: 1.0
Alterações:
Novo nome: installsrc
1) Opções para linha de comando.
2) Redução do código.
3) Processo mais claro e objetivo.
4) Comentários mais descritivos.
Instalação:
NOTA: o diretório de instalação pode ser qualquer um desde que seja um executável, da variável PATH.
$ cd /home/$USER/Downloads
$ chmod +x installsrc
$ sudo cp install /usr/bin
Distribuições testadas:
1) Debian 10
2) Slackware 14.2
Qualquer bug, reporte nos comentários e claro, diga sua opinião também!
Agradeço a ajuda de todos do Viva o Linux!!!
#!/bin/bash
#
# NOTA: !!!!!! EXECUTAR O CÓDIGO LOGADO COMO ROOT !!!!!!!
#
# Baseado no programa source_code_installer_gamma.2.0
#
# Nome: installsrc
#
# Informação:
#
# AUTOR: Mac Brener
# NICK: Skaylen Viva-o-linux
# LOCAL: /home/mac/script
#
# Descrição do programa:
#
# O programa installsrc é um instalador de código fonte.
# O programa tem os processos de instalação e desinstalação.
#
# Arquivos de registros:
#
# 1) programas.log:
# ==> Arquivo para o registro dos nomes dos programas instalados.
#
# 2) caminho.log:
# ==> Arquivo que armazena o caminho do diretório do programa instalado.
# Este documento é usado para a desinstalação.
#
# Versão 1.0:
#
# Sistemas testados:
#
# Debian 10
# Slackware 14.2
#
# <Modificações>
#
# >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
# Modificação 01: Copiei as principais funções do programa source_code_installer_gamma.2.0.
# Modificação 02: Redução de comandos.
# Modificação 03: Redução de variáveis.
# Modificação 04: Renomeação dos arquivos de registros.
# Modificação 05: Colando case para as opções na linha de comando.
# Modificação 06: Criação de novas variáveis.
# Modificação 07: Aperfeiçoações nos arquivos de registros, com mais detalhes.
# Modificação 08: Simplificação da função extrair.
# Modificação 09: Criação de pastas para o programa.
# Modificação 10: Melhorando as opções em caso de erro.
# Modificação 11: Comentários: Detalhes, erros e possíveis soluções.
# Modificação 12: Original: 821 linhas |\| Atual: 496 linhas
#
# DECLARAÇÃO: Variáveis Locais.
local="$3"
arquivo="$2"
PFONTE="/home/.programasrc/fontes"
MENSAGEM_USO="
Uso: $(basename "$0") [OPÇÕES]
DESCRIÇÃO:
Instala e gerência os programas instalado pelo código fonte.
Argumentos:
-i <nome.ext> <caminho> Instala o programa.
-h Mostra esta tela de ajuda e sai.
-l Lista todos os programas instalados.
-s <nome> Pesquisa os programa instalado.
-u <nome> Desinstala o programa.
-w Exibe os caminhos dos programas instalados.
-v Mostra a versão do programa e sai.
OBSERVAÇÕES:
Os argumentos -i necessitam que sejam expresso o
nome do arquivo junto com a extensão do arquivo, além
do caminho onde está localizado o arquivo.
USO:
installsrc -i leafpad-0.8.17.tar.gz /home/mac/Downloads/
Os argumentos -u necessitam que sejam expresso o
nome do arquivo.
USO:
installsrc -u leafpad
"
arq_caminho=" ###################
#
# Autor: Mac Brener - Skylen
# Local: /home/.programasrc/logs
# Data: `date`
#
# DESCRIÇÃO:
# Arquivo para registro dos caminhos dos programas
# instalados. Utilizado para a desinstalação e outros
# funcionalidades do installsrc.
#
#
###################
#
# <CAMINHO>
#
"
arq_programas=" ###################
#
# Autor: Mac Brener - Skylen
# Local: /home/.programasrc/logs
# Data: `date`
#
# DESCRIÇÃO:
# Arquivo para registro dos nomes dos programas
# instalados. Utilizado para a desinstalação e outros
# funcionalidades do installsrc.
#
#
###################
#
# <NOME>
#
"
if [ -e /home/.programasrc/logs/programas.log ]; then
linha=$(cat /home/.programasrc/logs/programas.log | sed -n '18, 18p')
fi
# Variáveis para a verificação.
Configure=configure
makefl=Mekefile
# DECLARAÇÃO: Funções.
# Desinstala o programa, (prefixo: -u <nome_do_programa>).
desinstalar(){
# Variáveis para a desinstalação.
#Pega o nome do programa no arquivo caminho.log.
programa=$(grep "${arquivo}" /home/.programasrc/logs/caminho.log | cut -d"/" -f5)
# Caso tenha algum caminho duplicado, é selecionado somente um.
caminho_duplicado=$(grep "${arquivo}" /home/.programasrc/logs/caminho.log | uniq -d | cut -d"/" -f5)
# Testa se a variável caminho arquivo está vazio.
if test -z "${caminho_duplicado}"; then
# É executado a desinstalação.
if [ -d "/home/.programasrc/programas/${programa}" ]; then
cd /home/.programasrc/programas/"${programa}"
make uninstall && make clean
echo
echo -e "Programa desinstalado com sucesso!!"
sleep 1.3
clear
exit 0
else
# Erro 001: Programa não encontrado.
# Solução: Verificar a variável programa.
echo -e "Programa não encontrado."
exit 1
fi
else
# Erro 002: Desinstalação impossível.
# Solução: Variável caminho_duplicado vazia.
# Verificar o arquivo caminho.log.
echo
echo "Não foi possível desinstalar o programa."
sleep 0.8
exit 0
fi
}
# Instala o programa, (prefixo: -i <nome_do_programa> <caminho>).
instalar() {
# Verifica se o arquivo configure existe.
if [ -e "/home/.programasrc/programas/${nome_arquivo}/${Configure}" ]; then
./configure && make && make clean && make install
echo
echo "Trabalho Concluído!!!!!"
sleep 1.7
clear
exit 0
# Verifica se o arquivo Makefile existe.
elif [ -e "/home/.programasrc/programas/${nome_arquivo}/${makefl}" ]; then
make && make clean && make install
echo
echo "Trabalho Concluído!!!!!"
sleep 1.7
exit 0
else
# Erro 003: Arquivos para instalação inexistentes.
# Solução: Abra a pasta do programa e verifique as orientações
# no arquivo INSTALL ou REDME. Em seguida faça a instalação manualmente.
echo "Arquivos Makefile e configure inexistentes."
echo "Operação cancelada."
exit 1
fi
}
# Verifica a existência dos arquivos Makefile e configure.
verificar_arquivos(){
# Variável para a identificação do programa instalado.
nome="#####################################################
PROGRAMA: ${nome_arquivo}
DATA: `date`
"
# Registros.
cd /home/.programasrc/programas/"${nome_arquivo}"
echo "${nome}" >> /home/.programasrc/logs/programas.log
echo "${PFONTE}/${nome_arquivo}" >> /home/.programasrc/logs/caminho.log
clear
# Verifica se o arquivo configure existe.
if [ -e "configure" ]; then
sleep 0.8
instalar
# Verifica se o arquivo Makefile existe.
elif [ -e "Makefile" ]; then
sleep 0.8
instalar
else
# Erro 003: Arquivos para instalação inexistentes.
# Solução: Abra a pasta do programa e verifique as orientações
# no arquivo INSTALL ou REDME. Em seguida faça a instalação manualmente.
echo "Arquivos Makefile e configure inexistentes."
echo "Operação cancelada."
exit 1
fi
}
# Extrai o programa comprimido.
extrair(){
#
# TODO: Descompactação de .tar e .zip apresentou conflito com os
# comandos tar e zip.
#
# Distribuição testada: Debian 10.
#
cd /home/.programasrc/fontes
# Variáveis para a extração.
extencao=$(echo ${arquivo}|rev|cut -d'.' -f1,2|rev)
nome_arquivo=$(echo ${arquivo}|rev|cut -d'.' -f1,2 --complement|rev)
# Verifica qual extenção é o arquivo.
if [ "${extencao}" == "tar.gz" ]; then
tar -xzvf ${arquivo} -C /home/.programasrc/programas
rm ${arquivo}
echo
echo "Extração concluída!!!"
sleep 1
verificar_arquivos
elif [ "${extencao}" == "tgz" ]; then
tar -xzvf ${arquivo} -C /home/.programasrc/programas
rm ${arquivo}
echo
echo "Extração concluída!!!"
sleep 1
verificar_arquivos
elif [ "${extencao}" == "tar.bz" ]; then
tar -xjvf ${arquivo} -C /home/.programasrc/programas
rm ${arquivo}
echo
echo "Extração concluida!!!"
sleep 1
verificar_arquivos
elif [ "${extencao}" == "tar.bz2" ]; then
tar -jxvf ${arquivo} -C /home/.programasrc/programas
rm ${arquivo}
echo
echo "Extração concluída!!!"
sleep 1
verificar_arquivos
elif [ "${extencao}" == "tar.xz" ]; then
tar -xJvf ${arquivo} -C /home/.programasrc/programas
rm ${arquivo}
echo
echo "Extração concluída!!!"
sleep 1
verificar_arquivos
else
# Erro 004: Não foi identificado a extensão do arquivo.
# Solução: Caso o arquivo seja .tar, .zip ou .rar.
# Faça a descompactação manualmente, assim como a instalação.
echo "Não foi possível extrair o programa."
echo
exit 1
fi
}
# Copia o arquivo para a extração.
copiar_arquivo(){
if ! [ -e ${PFONTE}/${arquivo} ]; then
cp -r ${local}/${arquivo} /home/.programasrc/fontes
extrair
fi
}
# Função verifica a inexistência das pastas e arquivos.
verificar_dados(){
# As três próximas condições verifica as pastas.
if [ ! -d "/home/.programasrc" ]; then
echo "Criando a pasta: programasrc"
sleep 0.7
mkdir -m 775 /home/.programasrc
fi
if [ ! -d "/home/.programasrc/programas" ]; then
echo "Criando a pasta: programas"
sleep 0.6
mkdir -m 775 /home/.programasrc/programas
fi
if [ ! -d "/home/.programasrc/fontes" ]; then
echo "Criando a pasta: fontes"
sleep 0.6
mkdir -m 775 /home/.programasrc/fontes
fi
# As três próximas condições verifica os arquivos.
if [ ! -d "/home/.programasrc/logs" ]; then
echo "Criando a pasta: logs"
sleep 0.6
mkdir -m 775 /home/.programasrc/logs
fi
if [ ! -e "/home/.programasrc/logs/programas.log" ]; then
echo "Criando a arquivo: programas.log"
sleep 0.7
echo "${arq_programas}" >> /home/.programasrc/logs/programas.log
fi
if [ ! -e "/home/.programasrc/logs/caminho.log" ]; then
echo "Criando a arquivo: caminho.log"
echo "${arq_caminho}" >> /home/.programasrc/logs/caminho.log
sleep 0.7
fi
copiar_arquivo
}
###################
# Verifica se o root está logado no sistema.
if [ $(whoami) != 'root' ]; then
echo "Usuário root não está logado."
echo "Saindo..."
exit 1
fi
# Chama a ajuda.
if test -z "$1"; then
echo "${MENSAGEM_USO}"
exit 0
else
while ! test -z "$1"
do
# Verifica os argumentos.
case "$1" in
-i)
if test -z "$2"; then
echo "Faltam argumentos."
echo
exit 1
fi
if test -z "$3"; then
echo "Faltam argumentos."
echo
exit 1
else
verificar_dados
fi
;;
-h)
echo "${MENSAGEM_USO}"
exit 0
;;
-l)
if [ -z ${linha} ]; then
# Erro 005: Nenhum programa instalado.
# Solução: Verificar linha 18 do arquivo programa.log
echo "Nenhum programa instalado."
echo
exit 1
else
clear
cat /home/.programasrc/logs/programas.log
echo
exit 0
fi
;;
-s)
if test -z "$2"; then
echo "Faltam argumentos."
echo
exit 1
fi
if [ -z ${linha} ]; then
# Erro 005: Nenhum programa instalado.
# Solução: Verificar linha 18 do arquivo programa.log.
echo "Nenhum programa instalado."
echo
exit 0
else
if ! grep "$2" /home/.programasrc/logs/programas.log; then
# Erro 006: Programa não encontrado.
# Solução: Verifique a digitação do nome do programa.
echo "Programa não encontrado."
echo
exit 1
else
clear
grep "$2" /home/.programasrc/logs/programas.log
echo
exit 0
fi
fi
;;
-u)
if test -z "$2"; then
echo "Faltam argumentos."
echo
exit 1
else
desinstalar
fi
;;
-w)
# Erro 005: Nenhum programa instalado.
# Solução: Verificar linha 18 do arquivo programa.log.
if [ -z ${linha} ]; then
echo "Nenhum programa instalado."
echo
exit 1
else
clear
cat /home/.programasrc/logs/caminho.log | uniq
echo
exit 0
fi
;;
-v)
echo "Versão 1.0"
exit 0
;;
*)
echo Opção inválida: "$1"
exit 1
;;
esac
done
fi
Verificação e otimização do banco de dados MySQL
Script para criar certificados de forma automatizada no OpenVpn
Baixe arquivos em pedaços com o DCDownloader
Tradução de endereços de uma rede interna
Monitorando o Preço do Bitcoin ou sua Cripto Favorita em Tempo Real com um Widget Flutuante
IA Turbina o Desktop Linux enquanto distros renovam forças
Como extrair chaves TOTP 2FA a partir de QRCODE (Google Authenticator)
Como realizar um ataque de força bruta para desobrir senhas?
Como usar Gpaste no ambiente Cinnamon
Atualizando o Fedora 42 para 43
ERRO: LAZARUS 4.2 64 no Linux MINT não entra mais apos ajustar desktop... (0)
Pergunta: Meu teclado não está respondendo direito como e consertar? (2)
Secure boot, artigo interessante, nada técnico. (6)
SQLITE não quer funcionar no LINUX LMDE6 64 com Lazaruz 4.2 64bit (n... (0)









