TL;DR - I want to install FB without being the root or firebird user.
Tried some stuff - explained below - didn't work. Anybody got any
ideas?
Hi all,
I'm a big fan of Firebird and wish to benchmark it for a College
project - doing a part-time Masters! Someone pointed me at this:
https://dbfiddle.uk/?rdbms=firebird_3.0&fiddle=a45671e00eb4b29ab98e3778dd743ba9
and it blew my mind. SQL in check constraints - how simply brilliant
and brilliantly simple! The SQL appears to be implemented as triggers
in the background from the error messages, but hey, I think being able
to do this in DDL is way cool!
I wish to install and run FB (possibly embedded) on College machines -
but I have very few privileges on these machines.
I have been able to get PostgreSQL (piece of cake) and MySQL (tricky)
up and running without being root or a special user.
I think it would be an advantage for the project if this were feasible
with Firebird!
I ran
../configure --prefix=/home/pol/Downloads/db/fb/3fb/inst
and then "make" and "make install" - after "make install", I get the
following error:
(cd ../gen/Firebird-3.0.5.33220-0.amd64; FIREBIRD= FIREBIRD_LOCK= ./install.sh)
--- Stop --
You need to be 'root' user to do this change
make[2]: *** [Makefile.install:122: install] Error 1
make[2]: Leaving directory '/home/pol/Downloads/db/fb/3fb/fb3_bis/gen'
make[1]: *** [Makefile:676: install] Error 2
make[1]: Leaving directory '/home/pol/Downloads/db/fb/3fb/fb3_bis/gen'
make: *** [Makefile:6: install] Error 2
[pol@UNKNOWN fb3_bis]$
Note the line
You need to be 'root' user to do this change
I also noticed that there is a reference to ./install.sh
So, I issued the "find" command:
[pol@UNKNOWN fb3_bis]$ find . -name install.sh
and obtain:
../gen/install/install.sh
../gen/Firebird-3.0.5.33220-0.amd64/install.sh
../gen/Release/firebird/bin/install.sh
I did ls -lista on these files and found that
../gen/Firebird-3.0.5.33220-0.amd64/install.sh was the only executable
one.
So, I went into this file and replaced all occurrences of root (where
it made sense (at least to me!) to "pol" - my user name.
I didn't change it in the string "for rootDir in" for example or
"extractBuildroot()"
[pol@UNKNOWN install]$ grep pol install.sh
fb_install_prefix=/home/pol/Downloads/db/fb/3fb/inst
default_prefix=/home/pol/Downloads/db/fb/3fb/inst
fb_startup_name=pol
fb_startup_name=pol
if [ "`whoami`" != "pol" ];
if [ "$RunUser" = "pol" ]
chown pol:pol $f
chown pol:pol $initScript
[pol@UNKNOWN install]$
I noticed on doing the ls -lista that ./gen/install/install.sh was the
exact same size as ./gen/Firebird-3.0.5.33220-0.amd64/install.sh so I
copied my edited file over it also.
In the final file ./gen/Release/firebird/bin/install.sh, I didn't
notice anything that I could change.
So, I tried to run "make install" again, but it gives the same error as above.
I ran the "ls -lista" on the install.sh files and the timestamp on
them was the time I ran the "make install", so they are obviously
regenerated in some way. I suspect that this might have something to
do with the "extractBuildroot()" function that I see in the scripts,
but fixing this is beyond my meagre bash skills.
I have therefore exhausted my bash scripting abilities and would
appreciate either being told what it is I need to do in order to
install these files *_without_* being root - or better still, if (and
I'm only respectfully suggesting this) the system could be set up in
some way so that the user could choose a user-name under which to
install - root, firebird or other?
Slightly different approach?
=
Finally, as I was editing install.sh, I found this:
# have to be root to modify (x)inetd
if [ "$1" != "install-embedded" ]
then
removeInetdServiceEntry
fi
}
So, I tried this:
[pol@UNKNOWN fb3_bis]$ make install-embedded
make -C gen install-embedded
make[1]: Entering directory '/home/pol/Downloads/db/fb/3fb/fb3_bis/gen'
make -f Makefile.install install-embedded
make[2]: Entering directory '/home/pol/Downloads/db/fb/3fb/fb3_bis/gen'
make[2]: *** No rule to make target 'install-embedded'. Stop.
make[2]: Leaving directory '/home/pol/Downloads/db/fb/3fb/fb3_bis/gen'
make[1]: *** [Makefile:676: install-embedded] Error 2
make[1]: Leaving directory '/home/pol/Downloads/db/fb/3fb/fb3_bis/gen'
make: *** [Makefile:6: install-embedded] Error 2
[pol@UNKNOWN fb3_bis]$
Is there some "install-embedded" option of which I am unaware? Did the
fact that I tried to run "make install" prior to trying to run "make
install-embedded" mean that "make install-embedded" failed?
If ever there should be a version that *_shouldn't_* require a special
user to install, it should be the embedded version - IMHO!
Thanks for having read so far - if you are interested in
tackling/solving/dealing-with this issue, I would be very happy to
tes