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...