AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / ubuntu / Perguntas / 1485518
Accepted
Snappawapa
Snappawapa
Asked: 2023-09-12 11:52:08 +0800 CST2023-09-12 11:52:08 +0800 CST 2023-09-12 11:52:08 +0800 CST

Ao instalar, o comando em `postinst` sempre resulta em `$?` = `0`

  • 772

Eu tenho um postinstscript no meu pacote debian:

#!/bin/bash

oqm-config -g system.hostname
RESULT="$?"
if [ "$RESULT" -eq 1 ]; then
  oqm-config -s system.hostname $(hostname).local "."
fi

O objetivo é preencher uma variável de configuração (se ela não existir). Estes comandos funcionam fora do processo de instalação:

$ sudo ./test.sh 
+ oqm-config -g system.hostname
ERROR: Config key not found: system.hostname
+ RESULT=1
+ [ 1 -eq 1 ]
+ hostname
+ oqm-config -s system.hostname oqm-demo.local .
{
    "system": {
        "hostname": "oqm-demo.local"
    },
    "captain": {},
    "snapshots": {
        "location": "/data/oqm-snapshots/",
        "numToKeep": 5,
        "frequency": "weekly"
    }
}

No entanto, quando executado durante a instalação, o código de retorno da inicial oqm-config -g system.hostnameé sempre 0(ou, mais precisamente, uma string vazia? Não tenho certeza por que esse erro específico de uma string vazia deveria ser 0?):

Setting up open+quarter+master-manager-station+captain (1.0.18) ...
+ oqm-config -g system.hostname
ERROR: Config key not found: system.hostname
+ RESULT=0
+ '[' '' -eq 1 ']'
/var/lib/dpkg/info/open+quarter+master-manager-station+captain.postinst: line 5: [: : integer exp
ression expected

Estou esquecendo de algo?

Construindo o arquivo debian no Ubuntu 20.04, tentando instalar em22.04

Arquivo Debian: https://github.com/Epic-Breakfast-Productions/OpenQuarterMaster/releases/tag/manager-station%2Bcaptain-1.0.18

Arquivo que faz o debian (eu sei que é bagunçado, mas funciona [normalmente]): https://github.com/Epic-Breakfast-Productions/OpenQuarterMaster/blob/dev.388-fr-finish-keycloak-infra-component/ software/Capitão da estação/makeInstallers.sh#L107-L117

scripts
  • 1 1 respostas
  • 176 Views

1 respostas

  • Voted
  1. Best Answer
    muru
    2023-09-12T12:29:36+08:002023-09-12T12:29:36+08:00

    O problema é este:

    cat <<EOT >> "$buildDir/$debDir/DEBIAN/postinst"
    #!/bin/bash
    
    oqm-config -g system.hostname
    RESULT=$?
    if [ $RESULT -eq 1 ]; then
      oqm-config -s system.hostname $(hostname).local "."
    fi
    
    EOT
    

    Bash realiza expansão de parâmetros, entre outras coisas, em heredocs :

    Se wordnão estiver entre aspas, todas as linhas do documento aqui serão submetidas à expansão de parâmetros, substituição de comandos e expansão aritmética, a sequência de caracteres \newlineserá ignorada e ' \' deverá ser usado para citar os caracteres ' \', ' $' e ' `'.

    (Aqui wordestá o delimitador para o heredoc, EOTneste caso.) Isso significa que $?e $RESULTsão expandidos, e o heredoc grava o resultado da expansão na entrada final. Você está confiando nesse comportamento mais adiante no script .

    Você pode ver isso no postinstarquivo final:

    $ curl -sL https://github.com/Epic-Breakfast-Productions/OpenQuarterMaster/releases/download/manager-station%2Bcaptain-1.0.18/open+quarter+master-manager-station+captain_1.0.18_all.deb | dpkg-deb --ctrl-tarfile - | tar -xO ./postinst
    #!/bin/bash
    set -x
    oqm-config -g system.hostname
    RESULT="0"
    if [ "" -eq 1 ]; then
      oqm-config -s system.hostname oqm-dev.local "."
    fi
    
    # /usr/share/update-notifier/notify-reboot-required
    

    Cite o delimitador para evitar que isso aconteça:

    cat <<'EOT' > "$buildDir/$debDir/DEBIAN/postinst"
    #!/bin/bash
    
    oqm-config -g system.hostname
    RESULT=$?
    if [ $RESULT -eq 1 ]; then
      oqm-config -s system.hostname $(hostname).local "."
    fi
    EOT
    
    • 4

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Existe um comando para listar todos os usuários? Também para adicionar, excluir, modificar usuários, no terminal?

    • 9 respostas
  • Marko Smith

    Como excluir um diretório não vazio no Terminal?

    • 4 respostas
  • Marko Smith

    Como descompactar um arquivo zip do Terminal?

    • 9 respostas
  • Marko Smith

    Como instalo um arquivo .deb por meio da linha de comando?

    • 11 respostas
  • Marko Smith

    Como instalo um arquivo .tar.gz (ou .tar.bz2)?

    • 14 respostas
  • Marko Smith

    Como listar todos os pacotes instalados

    • 24 respostas
  • Martin Hope
    Flimm Como posso usar o docker sem sudo? 2014-06-07 00:17:43 +0800 CST
  • Martin Hope
    led-Zepp Como faço para salvar a saída do terminal em um arquivo? 2014-02-15 11:49:07 +0800 CST
  • Martin Hope
    ubuntu-nerd Como descompactar um arquivo zip do Terminal? 2011-12-11 20:37:54 +0800 CST
  • Martin Hope
    TheXed Como instalo um arquivo .deb por meio da linha de comando? 2011-05-07 09:40:28 +0800 CST
  • Martin Hope
    Ivan Como listar todos os pacotes instalados 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    David Barry Como determino o tamanho total de um diretório (pasta) na linha de comando? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher "Os seguintes pacotes foram retidos:" Por que e como resolvo isso? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford Como os PPAs podem ser removidos? 2010-07-30 01:09:42 +0800 CST

Hot tag

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve