Recommended ways of installing configuration files in SNAP_USER_DATA?

Stuart Bishop stuart.bishop at canonical.com
Tue Dec 13 09:42:25 UTC 2016


On 13 December 2016 at 02:27, Ivan Lezhnjov IV <iliv at commandprompt.com>
wrote:

> Hi,
>
> I’m working on pgbouncer snap package and as I’m new to snaps I wanted to
> ask the community what is the current preferred way to install a program’s
> configuration files that are meant to be edited by users?
>
> For example, pgbouncer has a couple of files: pgbouncer.ini and
> userlist.txt. Both normally located under /etc/pgbouncer.
>
> As users need to be able to modify various settings in pgbouncer.ini it
> has to be under $SNAP_USER_DATA/etc/pgbouncer/.
>
> I use a standalone wrapper script that initializes some filesystem paths,
> creates empty log files, etc. which is all required by pgbouncer and is
> never created by the program itself, where I essentially do this:
>
> [ -e "$CNF_DIR/pgbouncer.ini" ] || cp $SNAP/etc/pgbouncer/pgbouncer.ini
> $CNF_DIR/pgbouncer.ini
>
> As you can see I first dump pgbouncer.ini to $SNAP/etc/pgbouncer/ and then
> attempt to copy it to $CNF_DIR, which expands to
> $SNAP_USER_DATA/etc/pgbouncer.
>
> However, this doesn’t work as $SNAP/etc/pgbouncer/pgbouncer.ini is owned
> by root and when the wrapper script is run as a normal user it cannot read
> the $SNAP/etc/pgbouncer/pgbouncer.ini file (permission denied).
>

I think the only problem here is that $SNAP/etc/pgbouncer/pgbouncer.ini was
not world readable when snapped. Maybe a umask issue, or you need to
explicitly set the permissions on this template file.




> I might be one step close to getting this to work but I was wondering what
> is the common/recommended practice to do what I’m trying to achieve here?


I used the same approach you did, and got it building locally and working (
https://code.launchpad.net/~stub/+git/pgbouncer-snap/+ref/master , please
steal freely if there is anything useful there ). I haven't published it
anywhere because I thought there was a reasonable chance you would be
looking at it :) Also, I'm holding out hope that we can run non-root
daemons sooner rather than later since pgbouncer is another app that
refuses to run as root. I wasn't looking forward to documenting how to
manually install systemd service definitions :)



-- 
Stuart Bishop <stuart.bishop at canonical.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.ubuntu.com/archives/snapcraft/attachments/20161213/c95c7332/attachment.html>


More information about the Snapcraft mailing list