Как переместить файлы конфигурации во время поспешной установки

Я пытаюсь упаковать свое приложение, чтобы смочь установить его с помощью снимка. Приложение уже компилируется как исполняемый файл и имеет один файл конфигурации и один файл сертификата, который я упаковываю в снимке.

После того как установка полна, я вижу все в /snap/myapp/x1 но как x1 часть будет изменяться после обновлений я хотел бы вынуть файлы ресурсов и поместить их в более удобное местоположение.

Для тестирования я связал файлы ресурсов, которые вытянут от той же папки, куда мое приложение работает, и я узнал, что должен был поместить их в /var/lib/snapd/void папка для приложения для работы. Это, кажется, как хорошее местоположение не запускается с.

Поскольку пользователь сможет изменить файлы конфигурации, в которых я хотел бы сохранить их, говорят $SNAP_COMMON таким образом, было бы замечательно, если я мог бы так или иначе заставить эти файлы быть отодвинутыми к тому местоположению во время установки. Какие-либо мысли?

1
задан 27 January 2017 в 04:46

1 ответ

В целях этого ответа я собираюсь предположить, что приложение, содержавшее в рамках Вашего снимка, имеет command: my-binary.

у Вас действительно есть две опции:

  1. Переносят Ваше приложение в сценарий, который гарантирует, что файл конфигурации был перемещен перед выполнением. Например, если Вы записали сценарий, названный run-my-binary, который похож на это:

    #!/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
    

    Изменение Ваш snapcraft.yaml, чтобы установить этот сценарий и изменить Ваше приложение на command: run-my-binary.

  2. Использование configure рычаг , который работает после начальной установки (среди других времен). Это может быть сценарием оболочки, который выглядит очень похожим на обертку.

Примечание, что, в то время как я хотел ответить на вопрос, Вы спросили, я действительно не рекомендую поместить файлы конфигурации в $SNAP_COMMON, так как это конкретно не присвоило версию - это не будет сохранено, когда Вы будете обновлять/откатывать. Я рекомендую использовать $SNAP_DATA вместо этого. Для получения дополнительной информации см. этот ответ .

3
ответ дан 7 December 2019 в 12:36

Другие вопросы по тегам:

Похожие вопросы: