Purgar o pacote .deb personalizado através do script sai repentinamente

-1

Eu sou um desenvolvedor, que em algum momento trabalha com coisas relacionadas à implantação. Estou usando Jenkins para implantar automaticamente meu aplicativo em uma máquina ubuntu 14.04 . Meu aplicativo é empacotado como .deb e alguns aplicativos de suporte como jar . Eu escrevi um pequeno script de shell para fazer a instalação do debian / jar. Estou tentando limpar meu aplicativo existente e instalar o novo. Mas às vezes, o script é encerrado durante a limpeza e as etapas restantes não são executadas. Isso está criando alguns problemas para mim, pois muitas vezes preciso fazer o login no servidor, reinstalar e reiniciar o aplicativo. Eu não estou recebendo nenhum erro no console durante a execução, por isso não é capaz de fornecer mais informações.

Colando meu script aqui, alguém pode apontar qual é o possível problema no meu script.

mod=$1
defaultType="true"
isJar=${2:-$defaultType}
echo "before killing process mod: $1"
sudo pkill -f "${mod}-api"
echo "module ${mod}"
echo "after process kill"
cd /home/administrator/apps/

if [ ${isJar} = "false" ]
then
#       echo "Purging debian package"
#       sudo dpkg --purge ${mod}-api
        echo "Installing debian package"        
        sudo dpkg --install ${mod}-api*.deb
        sudo service ${mod}mod start
else
        jarfile=${mod}-api*.jar
        echo "$jarfile"
        nohup java -Dlogback.configurationFile="$mod-logback.xml" -jar ${jarfile} &>/dev/null &
fi
exit

Eu tentei a solução fornecida por Thomas, mas obtive o erro abaixo:

dpkg: error: dpkg status database is locked by another process
Starting Common Module: Commonstart-stop-daemon: unable to stat /usr/bin/common-api (No such file or directory)
.
Selecting previously unselected package common-api.
(Reading database ... 177687 files and directories currently installed.)
Preparing to unpack common-api_0.8.9.55-DEV-SNAPSHOT_all.deb ...
Unpacking common-api (0.8.9.55-DEV-SNAPSHOT) ...
dpkg: error processing archive 2 (--install):
 cannot access archive: No such file or directory
Setting up common-api (0.8.9.55-DEV-SNAPSHOT) ...
Creating system group: common-api
Creating system user: common-api in common-api with common-api daemon-user and shell /bin/false
Errors were encountered while processing:
 2
    
por Yadu Krishnan 06.04.2016 / 15:33

1 resposta

0

Eu fiz alterações no seu script para criar alguns arquivos de log. E, alguns erros de manipulação, então você acabou de sair em uma das etapas de execução, se falhar. E algumas coisas de estilo menores, desde que eu sou dolorosamente mal com a necessidade de certas coisas de estilo adicionadas.

Observe que faço um diretório em /tmp/ chamado custominstall-logs para armazenar os logs aqui. Você pode fazer isso onde quiser, mas eu sugiro deixá-lo em /tmp/ (para que, se nenhum erro acontecer, você tenha logs de erros).

Eu sou um pouco exigente sobre estilo e outras coisas, então eu mudei um pouco do seu script e adicionei comentários. (Eu não adicionei verificações de erros para onde seu comentário comentou 'limpar o pacote' é)

#!/bin/bash
mod=$1
defaultType="true"
isJar=${2:-$defaultType}
echo "before killing process mod: $1"
sudo pkill -f "${mod}-api"
echo "module ${mod}"
echo "after process kill"
cd /home/administrator/apps/

# Using an error checking folder in /tmp/... make it.
mkdir /tmp/custominstall-logs/

if [ ${isJar} = "false" ]
then
#       echo "Purging debian package"
#       sudo dpkg --purge ${mod}-api 2&>1 > /tmp/custominstall-logs/apt-log-purge
#       if [ $? -ne 0 ]; then
#           echo "Error removing package; please refer to the log file "
#           echo "in /tmp/custominstall-logs/apt-log-purge for details."
#           exit 1   # Exit with an error code, instead of 0
#       fi 
        echo "Installing debian package"        
        sudo dpkg --install ${mod}-api*.deb 2&>1 > /tmp/custominstall-logs/apt-log-install
        if [ $? -ne 0 ]; then
            echo "Error installing package; please refer to the log file "
            echo "in /tmp/custominstall-logs/apt-log-install for details."
            exit 2   # Exit with an error code, instead of 0
        fi 
        sudo service ${mod}mod start 2&>1 > /tmp/custominstall-logs/service-start-log
        if [ $? -ne 0 ]; then
            echo "Error starting the service; please refer to the log file "
            echo "in /tmp/custominstall-logs/service-start-log for details."
            exit 3   # Exit with an error code, instead of 0
        fi 
else
        jarfile=${mod}-api*.jar
        echo "$jarfile"
        nohup java -Dlogback.configurationFile="$mod-logback.xml" -jar \
            ${jarfile} &>/dev/null &
fi

# If we didn't exit earlier with an error code, then we exit with
# Code 0 for "Success".
exit 0  
    
por Thomas Ward 06.04.2016 / 15:47