Snapcraft Размещение файлов конфигурации по умолчанию

Я пытаюсь создать выпуск приложения с помощью Snapcraft.io, и у меня почти все работает.
Snapcraft уже компилирует исходный код, создает файл .snap, включает все зависимости и т. д.
Однако я не понимаю, как инициализировать некоторые файлы конфигурации в папке SNAP_USER_DATA после первой установки приложения.
Я не хочу помещать файлы в путь только для чтения по умолчанию SNAP, так как параметры по умолчанию должны быть изменены пользователем, также мне нужно сгенерировать некоторые дополнительные файлы, такие как сертификаты сервера.
Поэтому мне нужно скопировать некоторые файлы , а также запустить скрипт после первой установки.

Возможно ли это?

Спасибо.


person Alvaro Luis Bustamante    schedule 08.10.2016    source источник


Ответы (1)


Поскольку моментальные снимки устанавливаются с правами root, невозможно сделать именно то, что вы просите во время установки, поскольку $SNAP_USER_DATA зависит от пользователя, поэтому он всегда будет root. Однако вы можете сделать это во время установки, используя общесистемный каталог, например $SNAP_DATA, используя хук install:

$ snapcraft init
Created snap/snapcraft.yaml.
Edit the file to your liking or run `snapcraft` to get started

Создайте крючок. В нашем случае мы просто создадим новый файл в $SNAP_DATA, но вы можете делать все, что хотите.

$ mkdir -p snap/hooks
$ echo "touch \$SNAP_DATA/foo" >> snap/hooks/install
$ chmod a+x snap/hooks/install

Постройте оснастку.

$ snapcraft
Preparing to pull my-part 
Pulling my-part 
Preparing to build my-part 
Building my-part 
Staging my-part 
Priming my-part 
Snapping 'my-snap-name' |                                        
Snapped my-snap-name_0.1_amd64.snap

Установите снап. Это запустит хук install.

$ sudo snap install my-snap-name_0.1_amd64.snap --devmode --dangerous
my-snap-name 0.1 installed

Обратите внимание, что файл был создан в $SNAP_DATA.

$ ls /var/snap/my-snap-name/current
foo

Единственный способ получить аналогичную функциональность для $SNAP_USER_DATA — это обернуть вашу реальную команду в скрипт, который создает конфигурацию. Затем эта команда запускается пользователем, что означает, что вы получаете $SNAP_USER_DATA, которое вы намеревались. Конечно, это не во время установки.

person kyrofa    schedule 06.09.2017