# # Transcript of my attempts to get Oracle 10gR2 (10.2.0.1) to install # on Ubuntu AMD64: # $ cat /etc/lsb-release DISTRIB_ID=Ubuntu DISTRIB_RELEASE=5.10 DISTRIB_CODENAME=breezy DISTRIB_DESCRIPTION="Ubuntu (The Breezy Badger Release)" $ uname -a Linux oneu 2.6.12-9-amd64-xeon #1 SMP Mon Oct 10 13:22:55 BST 2005 x86_64 GNU/Linux # You can turn it off with -ignoreSysPrereqs, but Oracle's installer # checks for this, so might as well put it here: $ sudo sh -c "echo 'Red Hat Enterprise Linux release 4 (Nahant)' > /etc/redhat-release" # My very first try running the installer, failed: $ /db/cdroms/oracle/database/runInstaller -ignoreSysPrereqs Exception java.lang.UnsatisfiedLinkError: /tmp/OraInstall2005-11-10_11-48-45AM/jre/1.4.2/lib/i386/libawt.so: libXp.so.6: cannot open shared object file: No such file or directory occurred.. java.lang.UnsatisfiedLinkError: /tmp/OraInstall2005-11-10_11-48-45AM/jre/1.4.2/lib/i386/libawt.so: libXp.so.6: cannot open shared object file: No such file or directory at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary0(Unknown Source) at java.lang.ClassLoader.loadLibrary(Unknown Source) at java.lang.Runtime.loadLibrary0(Unknown Source) at java.lang.System.loadLibrary(Unknown Source) at sun.security.action.LoadLibraryAction.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at sun.awt.NativeLibLoader.loadLibraries(Unknown Source) at sun.awt.DebugHelper.(Unknown Source) at java.awt.Component.(Unknown Source) at oracle.sysman.oii.oiif.oiifm.OiifmGraphicInterfaceManager.(OiifmGraphicInterfaceManager.java:222) at oracle.sysman.oii.oiic.OiicSessionInterfaceManager.createInterfaceManager(OiicSessionInterfaceManager.java:193) at oracle.sysman.oii.oiic.OiicSessionInterfaceManager.getInterfaceManager(OiicSessionInterfaceManager.java:202) at oracle.sysman.oii.oiic.OiicInstaller.getInterfaceManager(OiicInstaller.java:436) at oracle.sysman.oii.oiic.OiicInstaller.runInstaller(OiicInstaller.java:926) at oracle.sysman.oii.oiic.OiicInstaller.main(OiicInstaller.java:866) Exception in thread "main" java.lang.NoClassDefFoundError at oracle.sysman.oii.oiif.oiifm.OiifmGraphicInterfaceManager.(OiifmGraphicInterfaceManager.java:222) at oracle.sysman.oii.oiic.OiicSessionInterfaceManager.createInterfaceManager(OiicSessionInterfaceManager.java:193) at oracle.sysman.oii.oiic.OiicSessionInterfaceManager.getInterfaceManager(OiicSessionInterfaceManager.java:202) at oracle.sysman.oii.oiif.oiifm.OiifmAlert.(OiifmAlert.java:151) at oracle.sysman.oii.oiic.OiicInstaller.runInstaller(OiicInstaller.java:984) at oracle.sysman.oii.oiic.OiicInstaller.main(OiicInstaller.java:866) $ dpkg-query -S libXp.so.6 libxp6: /usr/lib/libXp.so.6.2.1 libxp6: /usr/lib/libXp.so.6 $ file /usr/lib/libXp.so.6.2.1 /usr/lib/libXp.so.6.2.1: ELF 64-bit LSB shared object, AMD x86-64, version 1 (SYSV), stripped # Copy files from an x86 32 bit Ubuntu distro: $ sudo cp -p ~andy/ora/libXp.so.6.2.1 /usr/lib32/ $ sudo ln -s libXp.so.6.2.1 /usr/lib32/libXp.so.6 $ ls -l /usr/lib32/libXp.so.6* lrwxrwxrwx 1 root root 14 2005-11-10 11:52 /usr/lib32/libXp.so.6 -> libXp.so.6.2.1 -rw-r--r-- 1 andy dstaff 26468 2005-11-09 11:26 /usr/lib32/libXp.so.6.2.1 $ sudo ldconfig -v # Ok, try again. THAT problem above seems to have gone away, but now # we're stuck with the next one: $ /db/cdroms/oracle/database/runInstaller -ignoreSysPrereqs current locale is not supportedf in X11, locale is set to CX locale modifiers are not supported, using defaultException java.lang.InternalError: Current locale is not supported occurred.. java.lang.InternalError: Current locale is not supported at sun.awt.motif.MWindowPeer.pSetTitle(Native Method) at sun.awt.motif.MWindowPeer.init(Unknown Source) at sun.awt.motif.MFramePeer.(Unknown Source) at sun.awt.motif.MToolkit.createFrame(Unknown Source) at java.awt.Frame.addNotify(Unknown Source) at java.awt.Window.addNotify(Unknown Source) at java.awt.Window.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at oracle.sysman.oii.oiif.oiifm.OiifmGraphicInterfaceManager.(OiifmGraphicInterfaceManager.java:260) at oracle.sysman.oii.oiic.OiicSessionInterfaceManager.createInterfaceManager(OiicSessionInterfaceManager.java:193) at oracle.sysman.oii.oiic.OiicSessionInterfaceManager.getInterfaceManager(OiicSessionInterfaceManager.java:202) at oracle.sysman.oii.oiic.OiicInstaller.getInterfaceManager(OiicInstaller.java:436) at oracle.sysman.oii.oiic.OiicInstaller.runInstaller(OiicInstaller.java:926) at oracle.sysman.oii.oiic.OiicInstaller.main(OiicInstaller.java:866) Exception in thread "main" java.lang.InternalError: Current locale is not supported at sun.awt.motif.MWindowPeer.pSetTitle(Native Method) at sun.awt.motif.MWindowPeer.init(Unknown Source) at sun.awt.motif.MFramePeer.(Unknown Source) at sun.awt.motif.MToolkit.createFrame(Unknown Source) at java.awt.Frame.addNotify(Unknown Source) at java.awt.Window.addNotify(Unknown Source) at java.awt.Window.show(Unknown Source) at java.awt.Component.show(Unknown Source) at java.awt.Component.setVisible(Unknown Source) at oracle.sysman.oii.oiif.oiifm.OiifmGraphicInterfaceManager.(OiifmGraphicInterfaceManager.java:260) at oracle.sysman.oii.oiic.OiicSessionInterfaceManager.createInterfaceManager(OiicSessionInterfaceManager.java:193) at oracle.sysman.oii.oiic.OiicSessionInterfaceManager.getInterfaceManager(OiicSessionInterfaceManager.java:202) at oracle.sysman.oii.oiif.oiifm.OiifmAlert.(OiifmAlert.java:151) at oracle.sysman.oii.oiic.OiicInstaller.runInstaller(OiicInstaller.java:984) at oracle.sysman.oii.oiic.OiicInstaller.main(OiicInstaller.java:866) # There are both 32 and 64 bit versions of this library: $ file /usr/lib/libX11.so.6.2.0 /usr/lib32/libX11.so.6.2.0 /usr/lib/libX11.so.6.2.0: ELF 64-bit LSB shared object, AMD x86-64, version 1 (SYSV), stripped /usr/lib32/libX11.so.6.2.0: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), stripped # But these are ALL 64 bit: $ file /usr/X11R6/lib/X11/locale/common/*.so* $ file /usr/lib/X11/locale/common/*.so* # I tried essentially the procedure described here: # http://ubuntuforums.org/showthread.php?t=40392 $ sudo dpkg-deb -x ~andy/ora/libx11-6_1%3a6.2.1+cvs.20050722-8_i386.deb ~andy/ora/ $ sudo cp -pr /usr/lib/X11/locale/ /usr/local/lib/X11-locale-32 $ cd /usr/local/lib/X11-locale-32/common/ ; sudo rm x*.so* $ sudo cp -pd ~andy/ora/usr/lib/X11/locale/common/* . $ sudo ldconfig -v ldconfig: Can't stat /usr/X11R6/lib32: No such file or directory $ sudo mkdir -p /usr/X11R6/lib32/X11/ $ sudo ln -s /usr/local/lib/X11-locale-32 /usr/X11R6/lib32/X11/locale $ sudo ldconfig # However, that made no difference, when I again tried this, I got the # EXACT same stack trace as above: export XLOCALEDIR="/usr/local/lib/X11-locale-32" /db/cdroms/oracle/database/runInstaller -ignoreSysPrereqs # TODO: Remove the stuff we added above?: #unset XLOCALEDIR #sudo rm -rf /usr/local/lib/X11-locale-32 # Note, I did NOT try the method here, as given the strace results # below, it does not seem to be relevent: # # http://www.adap.org/~edsel/blog/archives/42 # Ok, now I'm lost, let's try strace with various environment variable # settings, see the output in these files: strace-1.txt strace-2-lib32.txt strace-3-c.txt strace-4-iso8859.txt strace-5-lib32-iso8859.txt strace-6-utf8.txt strace-7-lib32-utf8.txt # Note that to make diffing the output files easier, you may want to regex # all the PIDs to be the same set in each file using this script: # ./rename-strace-pids.sh strace-*.txt # (These is not set at all yet, but in case we try this again later, # force them to their default unset state here:) $ unset LD_LIBRARY_PATH LANG LC_ALL LD_LIBRARY_PATH LD_ASSUME_KERNEL $ strace -fF /db/cdroms/oracle/database/runInstaller -ignoreSysPrereqs $ grep '\.so' strace-1.txt | grep -v ENOENT open("/etc/ld.so.cache", O_RDONLY) = 3 open("/lib/libncurses.so.5", O_RDONLY) = 3 open("/lib/libdl.so.2", O_RDONLY) = 3 open("/lib/libc.so.6", O_RDONLY) = 3 [pid 782] open("/etc/ld.so.cache", O_RDONLY) = 3 [pid 782] open("/lib/libc.so.6", O_RDONLY) = 3 [pid 785] open("/etc/ld.so.cache", O_RDONLY) = 3 [pid 785] open("/lib/libc.so.6", O_RDONLY) = 3 [pid 786] open("/etc/ld.so.cache", O_RDONLY) = 3 [pid 786] open("/lib32/tls/libpthread.so.0", O_RDONLY) = 3 [pid 786] open("/lib32/tls/libc.so.6", O_RDONLY) = 3 $ file -L /etc/ld.so.cache /lib/libncurses.so.5 /lib/libdl.so.2 /lib/libc.so.6 /lib32/tls/libpthread.so.0 /lib32/tls/libc.so.6 /etc/ld.so.cache: data /lib/libncurses.so.5: ELF 64-bit LSB shared object, AMD x86-64, version 1 (SYSV), stripped /lib/libdl.so.2: ELF 64-bit LSB shared object, AMD x86-64, version 1 (SYSV), stripped /lib/libc.so.6: ELF 64-bit LSB shared object, AMD x86-64, version 1 (SYSV), stripped /lib32/tls/libpthread.so.0: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), not stripped /lib32/tls/libc.so.6: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), stripped $ dpkg-query -S libncurses.so.5 libdl.so.2 libc.so.6 libpthread.so.0 # All 64 bit: libncurses5: /lib/libncurses.so.5.4 libncurses5: /lib/libncurses.so.5 libc6: /lib/libdl.so.2 libc6: /lib/libc.so.6 libc6: /lib/libpthread.so.0 # All 32 bit: ia32-libs: /lib32/libncurses.so.5.4 ia32-libs: /lib32/libncurses.so.5 ia32-libs: /lib32/tls/libdl.so.2 ia32-libs: /lib32/libdl.so.2 ia32-libs: /lib32/tls/libc.so.6 ia32-libs: /lib32/libc.so.6 ia32-libs: /lib32/tls/libpthread.so.0 ia32-libs: /lib32/libpthread.so.0 # Hm, above it looks like the 64 bit stuff is getting loaded first, so # let's try to fix that. Sure enough, this changes lots of strace # output, and more lib32 stuff seems to get loaded now, but it makes # NO DIFFERENCE, same error: $ export LD_LIBRARY_PATH="/lib32:/usr/lib32:/usr/X11R6/lib32:/usr/lib32/i686:/lib:/usr/lib:/lib32/tls" $ strace -fF /db/cdroms/oracle/database/runInstaller -ignoreSysPrereqs $ grep '\.so' strace-2-lib32.txt | grep -v ENOENT open("/lib32/libncurses.so.5", O_RDONLY) = 3 open("/lib/libncurses.so.5", O_RDONLY) = 3 open("/lib32/tls/libdl.so.2", O_RDONLY) = 3 open("/lib32/libdl.so.2", O_RDONLY) = 3 open("/lib/libdl.so.2", O_RDONLY) = 3 open("/lib32/tls/libc.so.6", O_RDONLY) = 3 open("/lib32/libc.so.6", O_RDONLY) = 3 open("/lib/libc.so.6", O_RDONLY) = 3 [pid 1513] open("/lib32/tls/libc.so.6", O_RDONLY) = 3 [pid 1513] open("/lib32/libc.so.6", O_RDONLY) = 3 [pid 1513] open("/lib/libc.so.6", O_RDONLY) = 3 [pid 1516] open("/lib32/tls/libc.so.6", O_RDONLY) = 3 [pid 1516] open("/lib32/libc.so.6", O_RDONLY) = 3 [pid 1516] open("/lib/libc.so.6", O_RDONLY) = 3 [pid 1517] open("/lib32/tls/libpthread.so.0", O_RDONLY) = 3 [pid 1517] open("/lib32/tls/libc.so.6", O_RDONLY) = 3 # This, on the other hand, generates a LOT more output, about 90 # lines, trying to open 64 unique non-existent pathnames: $ grep '\.so' strace-2-lib32.txt | grep ENOENT # Setting various locale environment variables DOES change some of the # strace output, but not in any way that seems helpful to me, and we # still get the exact same error in the end. See strace -f output # here: # Googling suggested that the Oracle installer needs Open Motif to # work, so I turned on Multiverse and tried it. Made no difference # though, so uninstall it: $ sudo apt-get -u install libmotif3 $ sudo apt-get -u --purge remove libmotif3 # This seems odd: Among others, the stack trace of our usual "Current # locale is not supported" error that we always get includes these # Java methods: # # at sun.awt.motif.MWindowPeer.pSetTitle(Native Method) # at oracle.sysman.oii.oiif.oiifm.OiifmGraphicInterfaceManager.(OiifmGraphicInterfaceManager.java:260) # # And here are the files (which ship with the Oracle installer) which # contain those methods: $ find . -type f -print | xargs grep oracle.sysman.oii.oiif.oiifm.OiifmGraphicInterfaceManager Binary file ./oui/jlib/OraInstaller.jar matches $ find . -type f -print | xargs grep sun.awt.motif.MWindowPeer.pSetTitle Binary file ./jre/1.4.2/lib/i386/libawt.so matches $ ls -l ./oui/jlib/OraInstaller.jar ./jre/1.4.2/lib/i386/libawt.so -rwxr-xr-x 1 andy dstaff 3059052 2005-04-06 08:27 ./jre/1.4.2/lib/i386/libawt.so -rwxr-xr-x 1 andy dstaff 3787964 2005-06-22 03:50 ./oui/jlib/OraInstaller.jar # Yet, "libawt.so" does NOT appear in ANY of our strace -f output! # How is that possible? A shared library must be opened in some # fashion in order to be used, right? So why don't I see that # happening? # Let's try ltrace rather then strace, maybe it will tell us something # useful. Hm, ltrace won't run at all!: $ /db/cdroms/oracle/database/runInstaller.atp -ignoreSysPrereqs About to run [1]: /db/cdroms/oracle/database/install/.oui -ignoreSysPrereqs ltrace: "/db/cdroms/oracle/database/install/.oui" is ELF from incompatible architecture $ ls -l /db/cdroms/oracle/database/install/.oui -rwxr-xr-x 1 oracle oinstall 163185 Oct 23 03:49 /db/cdroms/oracle/database/install/.oui $ file /db/cdroms/oracle/database/install/.oui ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.2.5, dynamically linked (uses shared libs), not stripped # "GNU/Linux 2.2.5" ? That's breaking ltrace, but it's breaking it # much earlier when the normal failure mode. Could that be related to # my earlier problems somehow? # But, setting LD_ASSUME_KERNEL to any of these settings makes it # break even earlier, with one of the various error messages below: $ export LD_ASSUME_KERNEL=2.2.5 $ export LD_ASSUME_KERNEL=2.4.1 $ export LD_ASSUME_KERNEL=2.4.10 $ export LD_ASSUME_KERNEL=2.4.20 $ /db/cdroms/oracle/database/runInstaller.atp -ignoreSysPrereqs error while loading shared libraries: libdl.so.2: cannot open shared object file: No such file or directory error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory # --atp@piskorski.com, 2005/11/18 02:39 EST # # Try running the installer on a CentOS 4.2 x86-64 (equivalent to Red # Hat Enterprise Linux 4.2). # # For the install to complete successfully, as documented here, you # must install as sligthly older non-buggy binutils package to get it # to work: # http://www.puschitz.com/InstallingOracle10g.shtml $ wget http://oss.oracle.com/projects/compat-oracle/dist/files/RedHat/binutils-2.15.92.0.2-13.0.0.0.2.x86_64.rpm $ sudo rpm -Uvh --force binutils-2.15.92.0.2-13.0.0.0.2.x86_64.rpm # But even if you don't do that, the Java Installer CLEARLY actually # runs, unlike on Ubuntu. Ok, run strace -f on it just like we did on # Ubuntu: $ cat /etc/redhat-release CentOS release 4.2 (Final) $ uname -a Linux twou 2.6.9-22.0.1.ELsmp #1 SMP Thu Oct 27 14:49:37 CDT 2005 x86_64 x86_64 x86_64 GNU/Linux $ locale | grep LANG LANG=en_US.UTF-8 $ echo $LANG en_US.UTF-8 $ strace -f /db/cdroms/oracle/database/runInstaller.atp -ignoreSysPrereqs # Output is in file: centos-42-strace-1.txt $ grep '\.so' centos-42-strace-1.txt | grep -v ENOENT open("/etc/ld.so.cache", O_RDONLY) = 3 open("/lib64/libtermcap.so.2", O_RDONLY) = 3 open("/lib64/libdl.so.2", O_RDONLY) = 3 open("/lib64/tls/libc.so.6", O_RDONLY) = 3 [pid 29578] open("/etc/ld.so.cache", O_RDONLY) = 3 [pid 29578] open("/lib64/tls/libc.so.6", O_RDONLY) = 3 [pid 29581] open("/etc/ld.so.cache", O_RDONLY) = 3 [pid 29581] open("/lib64/libpcre.so.0", O_RDONLY) = 3 [pid 29581] open("/lib64/tls/libc.so.6", O_RDONLY) = 3 [pid 29582] open("/etc/ld.so.cache", O_RDONLY) = 3 [pid 29582] open("/lib/tls/libpthread.so.0", O_RDONLY) = 3 [pid 29582] open("/lib/tls/libc.so.6", O_RDONLY) = 3 $ grep '\.so' centos-42-strace-1.txt | grep ENOENT access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) [pid 29578] access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) [pid 29581] access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) [pid 29582] access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory) # Run 'file -L' on ALL the shared libraries we opened above on Centos: $ file -L /etc/ld.so.cache /lib64/libtermcap.so.2 /lib64/libdl.so.2 /lib64/tls/libc.so.6 /lib64/libpcre.so.0 /lib/tls/libpthread.so.0 /lib/tls/libc.so.6 /etc/ld.so.cache: data /lib64/libtermcap.so.2: ELF 64-bit LSB shared object, AMD x86-64, version 1 (SYSV), stripped /lib64/libdl.so.2: ELF 64-bit LSB shared object, AMD x86-64, version 1 (SYSV), not stripped /lib64/tls/libc.so.6: ELF 64-bit LSB shared object, AMD x86-64, version 1 (SYSV), not stripped /lib64/libpcre.so.0: ELF 64-bit LSB shared object, AMD x86-64, version 1 (SYSV), stripped /lib/tls/libpthread.so.0: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), not stripped /lib/tls/libc.so.6: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), not stripped # Compared to the Ubuntu list above, this seems interesting. Centos # opens these libraries which Ubuntu never even TRIES to open: /lib64/libtermcap.so.2 /lib64/libpcre.so.0 # And Ubuntu opens these libraries which Centos does even try to open: /lib/libncurses.so.5 # Still stumped. --atp@piskorski.com, 2005/11/20 17:10 EST # Try various settings with new packages installed below: unset LANG LC_ALL LD_LIBRARY_PATH export LANG=C ; export LC_ALL=$LANG export LANG=en_US.ISO-8859-1 ; export LC_ALL=$LANG export LANG=en_US.UTF-8 ; export LC_ALL=$LANG export XLOCALEDIR="/usr/local/lib/X11-locale-32" strace -fF /db/cdroms/oracle/database/runInstaller.atp -ignoreSysPrereqs unset XLOCALEDIR LANG LC_ALL LD_LIBRARY_PATH # Try with these additional libs installed: $ sudo apt-get -u install ia32-libs-gtk ia32-libs-openoffice.org ia32-libs-dev # Nope, so try with this newer/development version: $ wget 'http://www.laclinux.com/~karlheg/experimental/ia32-libs-gtk_8_amd64.deb' $ sudo dpkg -i ia32-libs-gtk_8_amd64.deb # No difference, so uninstall all 3 of those packages: $ sudo apt-get -u --purge remove ia32-libs-gtk ia32-libs-openoffice.org ia32-libs-dev # --atp@piskorski.com, 2005/11/21 00:53 EST # I installed 10gR2 on Centos 4.2 x86-64, tar'd up all the Oracle software, like so: # # $ sudo tar -cf oracle-etc-20051122.tar /etc/{ora*,path-*,profile-*,profile} # $ sudo tar -cf oracle-10gR2-20051122.tar --exclude='/db/oracle/oradata/*' --exclude='/db/oracle/admin/*' --exclude='/db/oracle/flash_recovery_area/*' /db/oracle/ # # then installed those files onto Ubuntu, and tried to relink the # Oracle software using Oracle's $ORACLE_HOME/bin/relink script. That # does NOT work either, although it seems to get fairly close. See # these files for more info: # # relink-1.txt # relink-2.txt # # --atp@piskorski.com, 2005/11/23 17:37 EST