Netscape Navigator 4 on Ubuntu Linux 12.10

Thursday, December 13. 2012

Netscape Navigator 4 on Ubuntu Linux 12.10

Feeling nostalgic? Or masochistic? Or are you a real professional and you want to make sure your website even works when it leaks through the time vortex into the year 1998? Then you definitely want to install Netscape 4 on your shiny new Ubuntu 12.10, won't you?

Well, it's a little bit tricky but let me help you.

Installing Netscape

As long as you don't have access to the Time Vortex Network you most likely can no longer access the official download page of Netscape. But luckily the Netscape article on Wikipedia mentions a Netscape Archive where you can download all Netscape versions for all platforms. Let's download the Netscape Navigator 4.79 for Linux 2.2 x86.

Now unpack the archive and run the install script:

cd ~/Downloads
tar xvfz navigator-v479-us.x86-unknown-linux2.2.tar.gz
cd navigator-v479.x86-unknown-linux2.2

When the installer asks for an installation location then enter ~/netscape-4.79 to install it into your home directory.

Install needed libraries

When you now try to run the netscape binary in your Netscape installation then you'll get this error message:

$ ./netscape
./netscape: error while loading shared libraries: cannot open shared object file: No such file or directory

Netscape was dynamically linked to some shared libraries which were common in linux distributions from that time but these files are now no longer included in modern distributions. But luckily we can find all this old stuff in the Debian Archive. We need the following packages:

Unpack the downloaded Debian packages with these commands:

dpkg -x ~/Downloads/libstdc++2.9-glibc2.1_2.91.66-4_i386.deb /tmp/oldlibs
dpkg -x ~/Downloads/libc6_2.2.5-11.8_i386.deb /tmp/oldlibs
dpkg -x ~/Downloads/xlibs_4.1.0-16woody6_i386.deb /tmp/oldlibs

And now copy the extracted libraries into your netscape folder:

mkdir ~/netscape-4.79/lib
cp /tmp/oldlibs/usr/X11R6/lib/*.so.* ~/netscape-4.79/lib
cp /tmp/oldlibs/usr/lib/*.so.* ~/netscape-4.79/lib
cp /tmp/oldlibs/lib/*.so.* ~/netscape-4.79/lib

Not all these libraries are needed by Netscape but I guess it's easier to just copy them all instead of handpicking the dozen needed libs.

Symlinking to the locales

Netscape wants to read some locale information from a path which no longer exists in modern Linux installations. I was not able to find out how to correct this without symlinking the old directory structure. Netscape mentions a XNLSPATH environment variable but setting it to the correct locale directory doesn't work. So we have to execute these commands as root to give Netscape what it wants:

sudo mkdir -p /usr/X11R6/lib/X11
sudo ln -s /usr/share/X11/locale /usr/X11R6/lib/X11/

Start Netscape

Now we only need a few more commands to start the beast. You may want to put these commands into some shell script so you don't have to type them every time you want to start Netscape:

cd ~/netscape-4.79
export XKEYSYMDB=XKeysymDB
export LD_LIBRARY_PATH=lib
lib/ ./netscape

And finally we can test if our website will work in the past. Mine works (Well, at least the browser doesn't crash, and that's something). What about yours?

Posted in Linux | Comments (4)
ampharos at 2012-12-15 23:21
Got it running fine in /opt/netscape on Ubuntu 12.04 amd64. I'll learn packaging, so we can simply dpkg -i ancient_ass_netscape.deb
Marc at 2012-12-18 16:48
Works for me too. I like the nostalgia.
Renan at 2013-04-03 02:52
Doesn't work for me in Linux Mint 14 (Ubuntu 12.10-based). Any keystroke gives Inconsistency detected by dynamic-link.h: 62: elf_get_dynamic_info: Assertion `! "bad dynamic tag"' failed!

Any hints?
tom at 2013-04-09 19:13
It also does not work for me. Same issue like Renan. The console output is:

tommy@komodo:~/Apps/netscape$ lib/ ./netscape
(dns helper): /lib/ version `GLIBC_2.1.1' not found (required by lib/
(dns helper): /lib/ version `GLIBC_2.2.3' not found (required by lib/
(dns helper): /lib/ version `GLIBC_2.2' not found (required by lib/
Inconsistency detected by dynamic-link.h: 62: elf_get_dynamic_info: Assertion `! "bad dynamic tag"' failed!

Enclosing asterisks marks text as bold (*word*), underscore are made via _word_.