Gerador de Pacotes de Instalação
Publicado por Pedro Robson Leão 30/06/2004
[ Hits: 7.529 ]
Download InstallGeraPack.pkg.sh.gz
Este script gera um arquivo tipo auto-extract com opções de inclusão de nota de instalação e script de pós instalação. Para quem não estiver afim de usar rpm pode ser uma boa solução.
Uma outra caracteristica importante deste instalador é criar um backup dos arquivos ja existentes na maquina para casos de arrependimento após a instalação de seus arquivos.
script : geraPack.sh e initPack.sh
Junto com o pacote de instalação, segue o manual de uso dos scripts.
:::::::::::::: geraPack.sh :::::::::::::: #! /usr/bin/bash # gerador de arquivo auto instalador. # /*** Informacoes do cvs *** # $Author: pleao $ # $Revision: 1.3 $ # $Date: 2004/06/30 16:45:52 $ # $State: Exp $ # $Id: geraPack.sh,v 1.3 2004/06/30 16:45:52 pleao Exp $ # $Source: /Development/Develop/Batches/Common/Scripts/geraPack/geraPack.sh,v $ # *** Change Log *** # $Log: geraPack.sh,v $ # Revision 1.3 2004/06/30 16:45:52 pleao # 1) Remove arquivos temporarios mesmo quando o gerador ou instalador eh interrompido por <CTRL+C>. # 2) Seta o ${EDITOR} como "vi" quando não existir nenhum definido ou quando ${DISPLAY} nao esta definida. # # Seria interesante atualizar a versao de todos, inclusive maquinas remotas. # # Revision 1.2 2004/06/07 15:48:14 pleao # Compatibilidade tar e gtar (GNU TAR) # # Revision 1.1 2004/06/03 13:43:59 pleao # Mudanca de repositorio. # # Revision 1.5 2004/05/21 21:33:01 pleao # Ajustes na impressao da versao # # Revision 1.4 2004/05/21 21:30:27 pleao # Ajustes na impressao da versao # # Revision 1.3 2004/05/21 21:27:35 pleao # Inclusao de novos recurso para maior controle dos pacotes. # # Revision 1.2 2003/12/10 16:11:36 pleao # return 0; para funcionar com o makefile. # # Revision 1.1 2003/07/31 15:06:01 pleao # Gerador de pacotes de instalacao. # Versao inicial. # VERSION="\$Id: geraPack.sh,v 1.3 2004/06/30 16:45:52 pleao Exp $"; trap 'cleanTmp && exit 0' 1 2 3 6 9 13 14 15 16 17 23 24 26 function cleanTmp() { [ ! -z "${debug}" ] && echo "#-- Apaga arquivos temporarios."; rm -f /tmp/intDate.$$ ${tmpfile} /tmp/script.sh /tmp/note.txt /tmp/intDate.$$ ; } function isGnuTar() { tar --version 2>/dev/null | grep GNU return $? } function usage() { printf "Usage: %s [-p (package name)] [-s (post install script)] [-n (note file)] [-l (list files)] [-v version] [-d debug] files ...\n" $0 cleanTmp; exit 2; } [ $# == 0 ] && usage $0 [ isGnuTar ] && TARPARM="-P"; pflg= nflg= lflg= sflg= debug= while getopts p:n:l:s:dv name ; do case $name in p) pflg=1 pkgname="$OPTARG";; n) nflg=1 notefile="$OPTARG";; l) lflg=1 listfile="$OPTARG";; s) sflg=1 pInstScript="$OPTARG";; v) echo ${VERSION}; echo ""; usage $0;; d) debug=1;; *) usage $0;; esac done if [ ! -z "${lflg}" ] ; then [ ! -z "${debug}" ] && echo "#-- Le do arquivo fornecido como lista de entrada."; FILES=$( cat ${listfile} ); else [ ! -z "${debug}" ] && echo "#-- Le lista da entrada padrao separada por :"; shift $(($OPTIND - 1)); FILES=$( echo "$*" ); FILES=$( echo ${FILES} | sed s/":"/" "/g ); if [ "${FILES}" == "" ] ; then [ ! -z "${debug}" ] && echo "#-- Le da entrada padrao."; while read linha; do FILES="${FILES} ${linha}"; done fi fi tmpfile=/tmp/tmpfile.$$.tar; [ ! -z "${debug}" ] && echo "#-- Empacota os arquivos a serem intalados."; outputfile=/tmp/install.`date +%Y%m%d`.$$.sh; date >/tmp/intDate.$$; tar ${TARPARM}cvf ${tmpfile} /tmp/intDate.$$ >/dev/null; for file in ${FILES} ; do if [ -a ${file} ] ; then [ ! -z "${debug}" ] && echo "#-- Append file ${file}"; tar ${TARPARM}uvf ${tmpfile} ${file} ; else echo "can't open file ${file}"; fi done if [ ! -z ${nflg} ] ; then [ ! -z "${debug}" ] && echo "#-- Copy note file "; cp ${notefile} /tmp/note.txt else [ ! -z "${debug}" ] && echo "#-- Edit note file "; echo "Descreva informacoes sobre a instalacao aqui :" >/tmp/note.txt; [ -z "${EDITOR}" ] && EDITOR=vi; [ -z "${DISPLAY}" ] && EDITOR=vi; ${EDITOR} /tmp/note.txt; fi if [ -a /tmp/note.txt ] ; then [ ! -z "${debug}" ] && echo "#-- Acrescenta nota ao pacote"; echo "" >>/tmp/note.txt finger ${USER} | head -3 >>/tmp/note.txt uname -a >>/tmp/note.txt date >>/tmp/note.txt echo "" >>/tmp/note.txt echo "" >>/tmp/note.txt echo "" >>/tmp/note.txt tar ${TARPARM}uvf ${tmpfile} /tmp/note.txt fi if [ ! -z ${sflg} ] ; then [ ! -z "${debug}" ] && echo "#-- Copia o script para o tmp"; cp ${pInstScript} /tmp/script.sh; fi if [ -a /tmp/script.sh ] ; then [ ! -z "${debug}" ] && echo "#-- Acrescenta o script de pos instalacao"; tar ${TARPARM}uvf ${tmpfile} /tmp/script.sh fi [ ! -z "${debug}" ] && echo "#-- Encapsula com o instalador e gera permissoes."; cat `which initPack.sh` ${tmpfile} >>${outputfile} chmod 755 ${outputfile} #Limpa arquivos temporarios cleanTmp; if [ ! -z ${pflg} ] ; then [ ! -z "${debug}" ] && echo "#-- Move tmp file to name info"; mv ${outputfile} `date +%Y%m%d`.${pkgname}.pkg.sh else [ ! -z "${debug}" ] && echo "#-- Informa o arquivo instalador gerado."; echo "Use the file ${outputfile}"; fi cleanTmp; exit 0; :::::::::::::: initPack.sh :::::::::::::: #! /usr/bin/bash # cabecalho para o arquivo auto instalador. # /*** Informacoes do cvs *** # $Author: pleao $ # $Revision: 1.5 $ # $Date: 2004/06/30 16:45:52 $ # $State: Exp $ # $Id: initPack.sh,v 1.5 2004/06/30 16:45:52 pleao Exp $ # $Source: /Development/Develop/Batches/Common/Scripts/geraPack/initPack.sh,v $ # *** Change Log *** # Este arquivo nao pode apresentar o changeLog, devido uso da variavel SCRIPTLASTLINE # que deve conter a ultima linha do arquivo para desatachar o arquivo tarado. VERSION="\$Id: initPack.sh,v 1.5 2004/06/30 16:45:52 pleao Exp $"; trap 'cleanTmp && exit 0' 1 2 3 6 9 13 14 15 16 17 23 24 26 function cleanTmp() { [ ! -z "${debug}" ] && echo "#-- Apaga os arquivos temporarios."; rm -f /tmp/script.sh /tmp/note.txt /tmp/intDate.* /tmp/bkpDate.* ${outname} ${tmpfile}; } function isGnuTar() { tar --version 2>/dev/null | grep GNU return $? } SCRIPTLASTLINE=143; iam=$( basename ${0} .sh ); outname=/tmp/install.sfx.$$; tmpfile=/tmp/tmpfile.$$.tar; [ isGnuTar ] && TARPARM="-P"; lflg= Lflg= debug= while getopts Lldv name ; do case $name in l) lflg=1;; L) Lflg=1;; d) debug=1;; v) echo ${VERSION}; echo ""; cleanTmp; exit 0;; *) exit 0; esac done [ ${iam} == "initPack" ] && exit 0; [ ! -z "${debug}" ] && echo "#-- Separa o arquivo tar anexado."; tail +${SCRIPTLASTLINE} $0 >${outname} if [ -z "${Lflg}" ] ; then [ ! -z "${debug}" ] && echo "#-- Mostra notas"; [ -a /tmp/note.txt ] && rm -f /tmp/note.txt; tar ${TARPARM}xvf ${outname} /tmp/note.txt [ -a /tmp/note.txt ] && more /tmp/note.txt echo "Relacao de arquivos para instalacao"; else [ ! -z "${debug}" ] && echo "#-- Não mostra o arquivo de notas"; lflg=1; fi [ ! -z "${debug}" ] && echo "#-- Mostra arquivos a serem instalados."; tar ${TARPARM}tvf ${outname} | awk '{ print $NF; }' | grep -v "intDate\." | grep -v /tmp/note.txt | grep -v /tmp/script.sh; [ ! -z "${lflg}" ] && cleanTmp && exit 0 echo -n "Confirma a instalacao dos arquivos (s/n) : " read conf; if [ ${conf} != 's' ] ; then [ ! -z "${debug}" ] && echo "#-- Apaga os arquivos temporarios."; cleanTmp; exit 2; fi echo "Realizando backup dos arquivos ..."; date >/tmp/bkpDate.$$; [ ! -z "${debug}" ] && echo "#-- Empacota o backup."; tar ${TARPARM}cvf ${tmpfile} /tmp/bkpDate.$$ >/dev/null; for file in $( tar ${TARPARM}tvf ${outname} | awk '{print $NF;}' | grep -v "intDate\." | grep -v /tmp/note.txt | grep -v /tmp/script.sh ); do if [ -a ${file} ] ; then tar ${TARPARM}uvf ${tmpfile} ${file} else echo "can't open file ${file}"; fi done [ ! -z "${debug}" ] && echo "#-- Verifica se o diretorio de backup existe"; if [ -d ./pkg_backup ] ; then true; else mkdir ./pkg_backup; fi [ ! -z "${debug}" ] && echo "#-- Move e compacta o backup"; pkg_out=`date +%Y%m%d%H%M%S`; mv ${tmpfile} ./pkg_backup/${pkg_out}.bkp.${iam}.tar [ ! -z "${debug}" ] && echo "#-- Efetua a atualizacao dos arquivos."; echo "Atualiza com os novos arquivos..."; tar ${TARPARM}xvf ${outname} | grep -v "intDate\." | grep -v /tmp/note.txt | grep -v /tmp/script.sh; for file in $( tar ${TARPARM}tvf ${outname} | awk '{ print $NF; }' | grep -v "intDate\." | grep -v /tmp/note.txt | grep -v /tmp/script.sh ) ; do [ ! -z "${debug}" ] && echo "#-- Atualiza a data de cada arquivo atualizado para a data do log."; touch ${file} logger -p user.alert "ATUALIZACAO DE SISTEMA ${file}"; echo "\"$( date +%d%m%Y )\",\"$( date +%H%M%S )\",\"${iam}\",\"${file}\",\"$( tail -8 /tmp/note.txt | head -1 )\",\"$( tail -5 /tmp/note.txt | head -1 )\",\"$( tail -4 /tmp/note.txt | head -1)\",\"${LOGNAME}\"" >> ./pkg_backup/installReport.$( date +%Y%m ).csv; done [ ! -z "${debug}" ] && echo "#-- Verifica script de pos instalacao"; if [ -a /tmp/script.sh ] ; then echo -n "Deseja executar um script de pos instalacao ? (s/n) : " read conf; if [ ${conf} == 's' ] ; then bash /tmp/script.sh fi fi cleanTmp; exit 0; #------------------------------
Monitorar o funcionamento do FTP
Papel de parede mundial ( para quem usa GUI )
Nenhum comentário foi encontrado.
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Encontre seus arquivos facilmente com o Drill
Mouse Logitech MX Ergo Advanced Wireless Trackball no Linux
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
Remoção de propaganda com o programa Comskip[AJUDA] (3)
Instalação do drive do adaptador wiffi (5)
Linux Lite Demorando Muito Para Ligar (1)