Я пытаюсь упаковать свое приложение, чтобы смочь установить его с помощью снимка. Приложение уже компилируется как исполняемый файл и имеет один файл конфигурации и один файл сертификата, который я упаковываю в снимке.
После того как установка полна, я вижу все в /snap/myapp/x1
но как x1 часть будет изменяться после обновлений я хотел бы вынуть файлы ресурсов и поместить их в более удобное местоположение.
Для тестирования я связал файлы ресурсов, которые вытянут от той же папки, куда мое приложение работает, и я узнал, что должен был поместить их в /var/lib/snapd/void
папка для приложения для работы. Это, кажется, как хорошее местоположение не запускается с.
Поскольку пользователь сможет изменить файлы конфигурации, в которых я хотел бы сохранить их, говорят $SNAP_COMMON
таким образом, было бы замечательно, если я мог бы так или иначе заставить эти файлы быть отодвинутыми к тому местоположению во время установки. Какие-либо мысли?
В целях этого ответа я собираюсь предположить, что приложение, содержавшее в рамках Вашего снимка, имеет command: my-binary
.
у Вас действительно есть две опции:
Переносят Ваше приложение в сценарий, который гарантирует, что файл конфигурации был перемещен перед выполнением. Например, если Вы записали сценарий, названный 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
.
configure
рычаг , который работает после начальной установки (среди других времен). Это может быть сценарием оболочки, который выглядит очень похожим на обертку. Примечание, что, в то время как я хотел ответить на вопрос, Вы спросили, я действительно не рекомендую поместить файлы конфигурации в $SNAP_COMMON
, так как это конкретно не присвоило версию - это не будет сохранено, когда Вы будете обновлять/откатывать. Я рекомендую использовать $SNAP_DATA
вместо этого. Для получения дополнительной информации см. этот ответ .