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
test any and all proposed solutions.

TIA and rgs,


Pól...
  • [firebird-support... Pól Ua Laoínecháin lineh...@tcd.ie [firebird-support]

Reply via email to