Como mover arquivos de configuração durante a instalação rápida

1

Estou tentando empacotar meu aplicativo para poder instalá-lo usando o snap. App já é compilado como executável e tem um arquivo de configuração e um arquivo de certificado que eu empacoto dentro do snap.

Quando a instalação estiver completa, posso ver tudo em /snap/myapp/x1 , mas como a parte x1 será alterada após as atualizações, gostaria de remover os arquivos de recursos e colocá-los em um local mais conveniente.

Para fins de teste, ativei os arquivos de recursos para serem extraídos da mesma pasta em que meu aplicativo está em execução e descobri que precisava colocá-los na pasta /var/lib/snapd/void para que o aplicativo funcionasse. Isso não parece ser um bom local para começar.

Como o usuário poderá alterar os arquivos de configuração que eu gostaria de mantê-los em $SNAP_COMMON , então seria ótimo se eu conseguisse fazer com que esses arquivos fossem movidos para aquele local durante a instalação. Alguma idéia?

    
por Jasko 27.01.2017 / 00:43

1 resposta

2

Para o propósito desta resposta, vou assumir que a aplicação contida no seu snap tem command: my-binary .

Você realmente tem duas opções:

  1. Quebra seu aplicativo em um script que garanta que o arquivo de configuração tenha sido migrado antes de ser executado. Por exemplo, se você escreveu um script chamado run-my-binary que se parece com isso:

    #!/bin/sh
    
    # Migrate config if necessary
    if [ ! -d $SNAP_COMMON/my.config ]; then
        cp $SNAP/conf/default.conf $SNAP_COMMON/my.config
    fi
    
    my-binary
    

    Altere seu snapcraft.yaml para instalar este script e altere seu aplicativo para command: run-my-binary .

  2. Use o configure hook , que é executado na instalação inicial (entre outras vezes). Isso pode ser um shell script muito parecido com o wrapper.

Observe que, embora eu quisesse responder à pergunta que você fez, não recomendo realmente colocar os arquivos de configuração em $SNAP_COMMON , já que é especificamente não-versionado. Não será feito backup quando você fizer upgrade / reversão. Eu recomendo usar $SNAP_DATA . Para mais informações veja esta resposta .

    
por Kyle 27.01.2017 / 01:10