Recommended ways of installing configuration files in SNAP_USER_DATA?

Michael Hall mhall119 at ubuntu.com
Mon Dec 12 19:54:12 UTC 2016


I've used the same wrapper script configuration[1] as you're doing. If
you make pgbouncer a daemon it will be run as root, so the wrapper will
be able to create the config files without a problem. You should use
$SNAP_DATA rather than $SNAP_USER_DATA for this.

Coming soon (in snapd 2.18 I think) you will also be able to use the
'configure' hook, which will be called on install and update of a snap.
But for now the wrapper you have, plus making it a daemon, should do the
trick.

[1] https://github.com/apache/couchdb/blob/master/configure#L199

Michael Hall
mhall119 at ubuntu.com

On 12/12/2016 02:27 PM, Ivan Lezhnjov IV 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 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?
> 
> Ivan
> 




More information about the Snapcraft mailing list