[GNC] systemd / sqlite 3 file not found error

Colin Arndt colinfarndt at gmail.com
Sun Dec 13 19:39:19 EST 2020


Hi John and Will,

Thanks for the responses and help troubleshooting!
It was super simple to specify this to be run as my user account in the service file. The technique is to add a "User=" line. In case anyone else is interested, here's what worked. Change the path and username to suit.
/etc/systemd/system/priceget.service has the contents:
[Unit]
Description=Get price quotes in GnuCash

[Service]
Type=simple
ExecStart=/usr/bin/flatpak run --command=gnucash-cli org.gnucash.GnuCash --quotes get /path/to/books.gnucash
User=yourusername

[Install]
WantedBy=multi-user.target

/etc/systemd/system/priceget.timer has the contents:
[Unit]
Description=Get price quotes in GnuCash

[Timer]
OnCalendar=Mon 09:00:00
Persistent=true

[Install]
WantedBy=timers.target

Best,
Colin

On Dec 13 2020, at 12:59 pm, John Ralls <jralls at ceridwen.us> wrote:
> No, but using flatpak (or any other container system) adds constraints on what you can do because of the sandbox. Surely you can get systemd to run the job as you instead of as root.
>
> Regards,
> John Ralls
>
> > On Dec 13, 2020, at 10:28 AM, Colin Arndt <colinfarndt at gmail.com> wrote:
> >
> > Hi John,
> >
> > Flatpak access makes sense as the culprit.
> >
> > The .gnucash file is in my home folder.
> >
> > The command completes when I run it as my user. Run as root, it fails.
> >
> > Perhaps I'm trying to do something in a way it's not designed to be used?
> >
> > Thanks again,
> > Colin
> >
> >
> > On Dec 13 2020, at 10:10 am, John Ralls <jralls at ceridwen.us> wrote:
> >
> >
> > > On Dec 13, 2020, at 9:57 AM, Colin Arndt <colinfarndt at gmail.com> wrote:
> > >
> > > Hi all,
> > >
> > > On Fedora Linux here, and I am trying to set up a systemd timer to pull price quotes once a week using gnucash-cli. Previously I was using cron to accomplish this, but would like to migrate to a systemd timer because this is on a laptop and I never know when it will be on or off. Systemd timers can handle missed execution times gracefully by simply running the command the next time the system is up.
> > > I've set it up to execute this command:
> > > /usr/bin/flatpak run --command=gnucash-cli org.gnucash.GnuCash --quotes get /path/to/Books-sql.gnucash
> > >
> > > Strangely, this produces a file not found error even though I've verified the path is correct.
> > > * 09:50:20 WARN <gnc.backend.dbi> [GncDbiBackend<Type>::session_begin()] Sqlite3 file Books-sql.gnucash not found
> > > * 09:50:20 ERROR <gnc.gui> [scm_cleanup_and_exit_with_failure()] Session Error: Sqlite3 file Books-sql.gnucash not found
> > > This isn't an issue with how I've set up the systemd timer or service, because when I run it as root from the command line, I get the same result.
> > > Thanks for any insight!
> >
> > Is /path/to somewhere accessible by the flatpak's sandbox?
> >
> > Regards,
> > John Ralls
>



More information about the gnucash-user mailing list