# rpm -ivh oracle-xe-11.2.0-1.0.x86_64.rpm
Preparing... ################################# [100%]
Updating / installing...
1:oracle-xe-11.2.0-1.0 ################################# [100%]
Executing post-install steps...
sh: -c: line 0: syntax error near unexpected token `('
sh: -c: line 0: `echo ~(unknown)'
You must run '/etc/init.d/oracle-xe configure' as the root user to configure the database.
So, we couldn't finish the installation process properly. I did what anybody would do these days: GOOGLE "oracle rpm syntax error near unexpected token" (maybe now you'll get a link to this post?).
Nothing useful came up (it was March 21st 2015).
So we had to do some fixing ourselves. We extracted the installation scripts from the RPM file like this:
# rpm -qp --scripts oracle-xe-11.2.0-1.0.x86_64.rpmAnd we tracked down the culprit to these two lines:
loginuser=`who | cut -d' ' -f1 | uniq | sed -n '1p'`
homedir=`sh -c "echo ~$loginuser"`
It turned out that when you issue a who command in this version of Linux, you will get something like this:
# who
(unknown) :0 2015-03-20 17:04 (:0)
root pts/0 2015-03-21 08:33 (192.168.16.225)
And that explained the "echo ~(unknown)" error we were getting before.
So, what causes the (unknown) user to appear on the who list? It's the graphical interface that's brought up upon boot. So, in order to be able to install Oracle properly all we needed to do was:
# systemctl set-default multi-user.targetWhich is equivalent to the good old runlevel 3 we used to set on /etc/inittab.
After that, reboot the system and you will be able to install Oracle XE without further issues.
When you're done, you can go back to get GUI for login on your server by issuing:
# systemctl set-default graphical.targetAnd rebooting your linux again.
A little bonus track to this post. Create a file called /etc/profile.d/oracle.sh and put this content on it:
# /etc/profile.d/oracle.sh - set oracle stuff
ORACLE_BASE=/u01/app/oracle
ORACLE_HOME=$ORACLE_BASE/product/11.2.0/xe
ORACLE_SID=xe
PATH=$PATH:$ORACLE_HOME/bin
export ORACLE_HOME ORACLE_BASE ORACLE_SID PATH