Subject Re: [SOLVED][firebird-support] linux, firebird embedded and $FIREBIRD_TMP
Author Daniel Weuthen
>> [..]
>> Setting the FIREBIRD_LOCK variable to "$HOME/appname/fbtmp" solves my
>> problem. No /tmp/firebird is created anymore, but $HOME/appname/fbtmp
>> instead.
> And it will be different for every user, correct ?

Of course, as it uses $HOME in the path, which points to the users home

> If different instances of the engine will use different lock tables (because of
> different values of FIREBIRD_LOCK variable) to acces to the same database
> you'll corrupt data.

As I can see you did not recognize my ansers wo Alan's response. I
explained a little bit more how the software works:

I have one directory /opt/appname/fbembed with the folowing content:


The firebird.conf contains only:

RootDirectory = /opt/appname/fbembed

The application itself uses the embedded firebird to create a new
subdirectory in the users home directory which contains a firebird
database and some more files. So it is always one user accessing the
database in his own home directory.

The problem is, that the first time a users runs the app, firebird
creates a /tmp/firebird folder which is only writeable by the user. So
the second user gets a permission denied error.

To get around that, I tried to export the env variable FIREBIRD_TMP with
$HOME/.appname/fbtmp as value. But that seems to be ignored becaus I
can see from a strace output that /tmp/firebird still beeing tried to
open, which obviously fails.

I know that firebird-classic or -superserver makes everything easier.
But it makes one important thing not easier: shipping our app to Linux
end users in the desktop market.


Daniel Weuthen