Hey,
I really didn't expect this to be that hard:
Just installing cx_Oracle on a fresh Solaris 11 box.
root@zion11:~# python
Python 2.6.8 (unknown, Feb 26 2014, 19:21:08) [C] on sunos5
Type "help", "copyright", "credits" or "license" for more information.
>>>
root@zion11:~# echo $ORACLE_HOME
/opt/oracle/instantclient_11_2
root@zion11:~# echo $LD_LIBRARY_PATH
/opt/oracle/instantclient_11_2
Okay, fine. Let's go to work:
# which pip
no pip in /usr/bin /usr/sbin /opt/csw/bin /bin /sbin
# which easy_install
no easy_install in /usr/bin /usr/sbin /opt/csw/bin /bin /bin
Great. I am on Oracle hardware, using an Oracle OS and pre-installed python, and just want to connect to my Oracle database. Why isn't cx_Oracle pre-installed in the first place? Or am I just missing some pkg package I could use?
But wait, luckily, there is OpenCSW.
# pkgutil -i python26 py_setuptools py_pip
root@zion11:~# pip install cx_Oracle
Downloading/unpacking cx-Oracle
Downloading cx_Oracle-5.1.3.tar.gz (104kB): 104kB downloaded
Running setup.py egg_info for package cx-Oracle
Installing collected packages: cx-Oracle
Running setup.py install for cx-Oracle
building 'cx_Oracle' extension
/opt/csw/bin/gcc-4.8 -O2 -pipe -m32 -march=pentiumpro -fno-strict-aliasing -O2 -pipe -m32 -march=pentiumpro -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/opt/oracle/instantclient_11_2/sdk/include -I/opt/csw/include/python2.7 -c cx_Oracle.c -o build/temp.solaris-2.11-i86pc.32bit-2.7-11g/cx_Oracle.o -DBUILD_VERSION=5.1.3
unable to execute /opt/csw/bin/gcc-4.8: No such file or directory
error: command '/opt/csw/bin/gcc-4.8' failed with exit status 1
Complete output from command /opt/csw/bin/python2.7 -c "import setuptools;__file__='/tmp/pip_build_root/cx-Oracle/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-Cqt1z4-record/install-record.txt --single-version-externally-managed:
running install
running build
running build_ext
building 'cx_Oracle' extension
creating build
creating build/temp.solaris-2.11-i86pc.32bit-2.7-11g
/opt/csw/bin/gcc-4.8 -O2 -pipe -m32 -march=pentiumpro -fno-strict-aliasing -O2 -pipe -m32 -march=pentiumpro -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -I/opt/oracle/instantclient_11_2/sdk/include -I/opt/csw/include/python2.7 -c cx_Oracle.c -o build/temp.solaris-2.11-i86pc.32bit-2.7-11g/cx_Oracle.o -DBUILD_VERSION=5.1.3
unable to execute /opt/csw/bin/gcc-4.8: No such file or directory
error: command '/opt/csw/bin/gcc-4.8' failed with exit status 1
----------------------------------------
Cleaning up...
Command /opt/csw/bin/python2.7 -c "import setuptools;__file__='/tmp/pip_build_root/cx-Oracle/setup.py';exec(compile(open(__file__).read().replace('\r\n', '\n'), __file__, 'exec'))" install --record /tmp/pip-Cqt1z4-record/install-record.txt --single-version-externally-managed failed with error code 1 in /tmp/pip_build_root/cx-Oracle
Storing complete log in /root/.pip/pip.log
Well, okay, this is not at all the installed GCC version.
root@zion11:~# which gcc
/usr/bin/gcc
root@zion11:~# gcc -v
Lesen der Spezifikationen von /opt/csw/lib/gcc/i386-pc-solaris2.10/4.9.0/specs
COLLECT_GCC=/opt/csw/bin/gcc
COLLECT_LTO_WRAPPER=/opt/csw/libexec/gcc/i386-pc-solaris2.10/4.9.0/lto-wrapper
Ziel: i386-pc-solaris2.10
Konfiguriert mit: /home/maciej/src/opencsw/pkg/gcc4/trunk/work/solaris10-i386/build-isa-pentium_pro/gcc-4.9.0/configure --prefix=/opt/csw --exec_prefix=/opt/csw --bindir=/opt/csw/bin --sbindir=/opt/csw/sbin --libexecdir=/opt/csw/libexec --datadir=/opt/csw/share --sysconfdir=/etc/opt/csw --sharedstatedir=/opt/csw/share --localstatedir=/var/opt/csw --libdir=/opt/csw/lib --infodir=/opt/csw/share/info --includedir=/opt/csw/include --mandir=/opt/csw/share/man --enable-cloog-backend=isl --enable-java-awt=xlib --enable-languages=ada,c,c++,fortran,go,java,objc --enable-libada --enable-libssp --enable-nls --enable-objc-gc --enable-threads=posix --program-suffix=-4.9 --with-cloog=/opt/csw --with-gmp=/opt/csw --with-included-gettext --with-ld=/usr/ccs/bin/ld --without-gnu-ld --with-libiconv-prefix=/opt/csw --with-mpfr=/opt/csw --with-ppl=/opt/csw --with-system-zlib=/opt/csw --with-gnu-as --with-as=/opt/csw/bin/gas
Thread-Modell: posix
gcc-Version 4.9.0 (GCC)
Can I configure this anywhere?
Or, maybe something else:
root@zion11:~# easy_install cx_Oracle
Searching for cx-Oracle
Reading https://pypi.python.org/simple/cx_Oracle/
Reading http://cx-oracle.sourceforge.net
Reading http://starship.python.net/crew/atuining
Best match: cx-Oracle 5.1.3
Downloading https://pypi.python.org/packages/source/c/cx_Oracle/cx_Oracle-5.1.3.tar.gz#md5=cd6ff16559cbc9c20087ec812c7092ab
Processing cx_Oracle-5.1.3.tar.gz
Writing /tmp/easy_install-9a7QmG/cx_Oracle-5.1.3/setup.cfg
Running cx_Oracle-5.1.3/setup.py -q bdist_egg --dist-dir /tmp/easy_install-9a7QmG/cx_Oracle-5.1.3/egg-dist-tmp-agKYF3
unable to execute /opt/csw/bin/gcc-4.8: No such file or directory
error: Setup script exited with error: command '/opt/csw/bin/gcc-4.8' failed with exit status 1
Okay, so let's try it DIY.
root@zion11:~# cd /usr/src/cx_Oracle-5.1.2/
root@zion11:/usr/src/cx_Oracle-5.1.2# python setup.py build
running build
running build_ext
building 'cx_Oracle' extension
/usr/lib/python2.6/pycc -DNDEBUG -KPIC -I/opt/oracle/instantclient_11_2/sdk/include -I/usr/include/python2.6 -c cx_Oracle.c -o build/temp.solaris-2.11-i86pc-2.6-11g/cx_Oracle.o -DBUILD_VERSION=5.1.2
gcc: unrecognized option '-KPIC'
/usr/lib/python2.6/pycc -G build/temp.solaris-2.11-i86pc-2.6-11g/cx_Oracle.o -L/opt/oracle/instantclient_11_2 -L/usr/lib -lclntsh -lpython2.6 -o build/lib.solaris-2.11-i86pc-2.6-11g/cx_Oracle.so
ld: fatal: library -lclntsh: not found
ld: fatal: file processing errors. No output written to build/lib.solaris-2.11-i86pc-2.6-11g/cx_Oracle.so
collect2: ld returned 1 exit status
error: command '/usr/lib/python2.6/pycc' failed with exit status 1
root@zion11:/usr/src/cx_Oracle-5.1.2# ls -lhrt /opt/oracle/instantclient_11_2/libclntsh.so.11.1
-rwxr-xr-x 1 root root 50M Aug 2 17:40 /opt/oracle/instantclient_11_2/libclntsh.so.11.1
Any ideas?