Instalador de Código Fonte - Linha de Comando
Publicado por Mac (última atualização em 28/08/2020)
[ Hits: 2.186 ]
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
Gerando HTML de status de HD e coneccao de internet
Exemplos de scripts com dialog
Script para rodar software Mr Bayes em paralelo
Player de música em Shell com Yad
Monitorando seus daemon de impressão...
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
Jogar games da Battle.net no Linux com Faugus Launcher
Como fazer a Instalação de aplicativos para acesso remoto ao Linux
Como fazer a instalação do Samba
Como fazer a conversão binária e aplicar as restrições no Linux
Duas Pasta Pessoal Aparecendo no Ubuntu 24.04.3 LTS (19)
Formas seguras de instalar Debian Sid (13)
Malware encontrado em extensões do Firefox. (0)
Fiz uma pergunta no fórum mas não consigo localizar [RESOLVIDO] (21)









