Instalador de Código Fonte - Linha de Comando
Publicado por Mac (última atualização em 28/08/2020)
[ Hits: 1.801 ]
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
Barra de Progresso com Shell Script
Geração de gráfico em shell script
diMail - envia e-mail com um front do dialog
Compartilhando a tela do Computador no Celular via Deskreen
Como Configurar um Túnel SSH Reverso para Acessar Sua Máquina Local a Partir de uma Máquina Remota
Configuração para desligamento automatizado de Computadores em um Ambiente Comercial
Como renomear arquivos de letras maiúsculas para minúsculas
Imprimindo no formato livreto no Linux
Vim - incrementando números em substituição
Efeito "livro" em arquivos PDF
Como resolver o erro no CUPS: Unable to get list of printer drivers
SysAdmin ou DevOps: Qual curso inicial pra essa área? (0)
Melhores Práticas de Nomenclatura: Pastas, Arquivos e Código (3)
[Python] Automação de scan de vulnerabilidades
[Python] Script para analise de superficie de ataque
[Shell Script] Novo script para redimensionar, rotacionar, converter e espelhar arquivos de imagem
[Shell Script] Iniciador de DOOM (DSDA-DOOM, Doom Retro ou Woof!)
[Shell Script] Script para adicionar bordas às imagens de uma pasta