Linux HOWTOs

About | Home | Search


ERROR: Slooooow dooooown... this page load was delayed.

HOWTO: mozilla
Description: Open source browser based on an older version of Netscape Communicator
Click here for ChangeLog
NOTE: I use GNU tar >= 1.13.25 so it's -j for .tar.bz2 files,
it's safe to assume that make, gcc, binutils, fileutils/coreutils, gawk, sed, and grep are prerequisites for almost everything


# mozilla 1.7.13 and plugins
# ==========================
# The Mozilla Suite is aka. SeaMonkey.

# FYI, I was going to add instructions here for building Enigmail
# into it, but it's either not possible, or not worth the trouble to do when
# you use an objdir to build mozilla.

# Source instructions are provided below.
#
# The binary download is smaller and it takes A LOT less time to set it up.
# If your primary concern is the time/effort it takes to install Mozilla,
# go with a binary installation.  There's a seperate howto covering the
# binary installer.
#
# If you'd like features that the binary doesn't offer, want Mozilla built
# specifically for your system, and don't mind the extra time, go for the
# source.

# Slackware 9.0's 'mozilla' package includes version 1.3, 9.1's includes 1.4,
# 10.0's includes 1.7 and 1.7.3 in 'patches', 10.1 includes 1.7.5, and 10.2
# includes 1.7.11.  9.1 and up also have a 'mozilla-plugins' package.

# Using the instructions below, I was able to build Mozilla 1.7.13 from source
# with the following environment:
# Slackware 10.2 (_heavily_ modified)
# Linux kernel 2.6.17.11
# gcc 4.0.3 (from source)
# X.org 6.8.2 (from Slackware)
# GTK+ 2.8.20 (from source)
# ...and the latest stable version of the other listed prerequisites

# Prerequisites:
# gawk
# perl
# autoconf
# infozip
# findutils
# XFree86 or X.org
# freetype >= 6.1.0
# libiconv
# libjpeg
# zlib
# libpng
# glib >= 1.2.0
# gtk >= 1.2.0
# pkg-config
# xft (included with X)
# libidl >= 0.6.3
# Qt

cd
test -f installed/mozilla/mozilla-1.7.13-source.tar.bz2 &&
 mv installed/mozilla/mozilla-1.7.13-source.tar.bz2 .
test ! -f mozilla-1.7.13-source.tar.bz2 &&
 wget ftp://ftp.mozilla.org/pub/mozilla.org/mozilla/releases/mozilla1.7.13/\
source/mozilla-1.7.13-source.tar.bz2

# Verify tarball w/ md5sum:
echo "eb0683207f7668319c65e403d04bfc41  mozilla-1.7.13-source.tar.bz2" | \
 md5sum -c

# Verify tarball w/ sha1sum:
echo "c506df44c18cd8a481fdd65328bf8abeba2e423e  mozilla-1.7.13-source.tar.\
bz2" | sha1sum -c

# Verify tarball w/ gpg:
( gpg --list-keys 1AF32821 > /dev/null 2>&1 || gpg --recv-keys 1AF32821 ) &&
 wget -nc http://ftp.mozilla.org/pub/mozilla.org/mozilla/releases/\
mozilla1.7.13/source/mozilla-1.7.13-source.tar.bz2.asc &&
  gpg --verify mozilla-1.7.13-source.tar.bz2.asc &&
   rm mozilla-1.7.13-source.tar.bz2.asc

mkdir -p -m 0700 src/mozilla
cd src/mozilla
test -L ./mozilla && rm ./mozilla
find -maxdepth 1 -type l -name "mozilla-*" -exec rm {} \;
test -d ./mozilla && rm -r ./mozilla
find -maxdepth 1 -type d -name "mozilla-*" -exec rm -r {} \;
tar xjvf ~/mozilla-1.7.13-source.tar.bz2
ln -s mozilla mozilla-1.7.13-source
cd mozilla
test $UID = 0 && chown -R root:root .

# Make sure you leave the extracted directory named "mozilla" (or be
# prepared to fix (at least) client.mk)

# Add a few missing spaces to extensions/p3p/Makefile.in
cat extensions/p3p/Makefile.in | sed \
 -e 's%-DHAS_CALL_OURS\\$%-DHAS_CALL_OURS \\%' \
 -e 's%-DHAS_TMPL_RETENTION\\$%-DHAS_TMPL_RETENTION \\%' \
 -e 's%-DHAS_PURPOSE_SRC\\$%-DHAS_PURPOSE_SRC \\%' \
 > extensions/p3p/Makefile.in.new
test -s extensions/p3p/Makefile.in.new &&
 ( mv -f extensions/p3p/Makefile.in extensions/p3p/Makefile.in.orig
   mv -f extensions/p3p/Makefile.in.new extensions/p3p/Makefile.in )

# You have two common choices for installing mozilla.  Create a tarball
# without the development files that you can unpack into /usr/local/mozilla
# (like the installer) or run 'make install' to install binaries in
# /usr/local/bin, libraries in /usr/local/lib/mozilla-1.7.13, includes in
# /usr/local/include/mozilla-1.7.13, etc.  If you're going to use the tarball
# method, change --with-default-mozilla-five-home below to /usr/local/mozilla
# (or wherever you're going to unpack the tarball).

# I pass --disable-freetype because Mozilla won't build with the version
# that I have installed (2.2.1), but also because xft includes freetype
# automagically anyway.  If you do need it for some reason, check
# Mozilla's Bugzilla for patches.
#
# You may also want to look for a print preview patch.  My installed
# Mozilla's print preview output looks a little messed up, but the actual
# print output (via a CUPS server) looks fine.

cat << EOF > .mozconfig
mk_add_options MOZ_CO_PROJECT=suite
ac_add_options --enable-application=suite
mk_add_options MOZ_OBJDIR=@TOPSRCDIR@/obj-@CONFIG_GUESS@
ac_add_options --enable-optimize
ac_add_options --disable-debug
ac_add_options --with-java-include-path=/usr/local/java/include
ac_add_options --with-java-bin-path=/usr/local/java/bin
ac_add_options --with-system-jpeg=/usr
ac_add_options --with-system-zlib=/usr
ac_add_options --with-system-png=/usr
ac_add_options --enable-default-toolkit=gtk2
ac_add_options --enable-xft
ac_add_options --disable-freetype2
ac_add_options --with-qtdir=/usr/lib/qt
ac_add_options --enable-calendar
ac_add_options --enable-strip
ac_add_options --enable-crypto
ac_add_options --with-default-mozilla-five-home=/usr/local/lib/\
mozilla-1.7.13
EOF

# Build everything
make -f client.mk build

# Become root to remove old files and to install it
su

# Back up the plugins that were installed for your previous version of
# Mozilla.  If you're replacing a Slackware installed version, you'll
# probably find them in /usr/lib/mozilla-x.x/plugins/  Make sure this catches
# everything, and that you don't have any other files that need to be backed
# up.  The howto will "uninstall" the old version of Mozilla as the
# developers suggest.
test -d ~/backup/mozilla-plugins &&
 mv -f ~/backup/mozilla-plugins ~/backup/mozilla-plugins-old
for mozdir in /usr/lib/mozilla /usr/lib/mozilla-?.* \
 /usr/local/lib/mozilla-?.* /usr/local/mozilla ; do
  test -d "${mozdir}/plugins" &&
   mkdir -p -m 0700 ~/backup/mozilla-plugins &&
    cp -af ${mozdir}/plugins/* ~/backup/mozilla-plugins/
done
test -f ~/backup/mozilla-plugins/libnullplugin.so &&
 rm ~/backup/mozilla-plugins/libnullplugin.so

# If you also have a /usr/lib/mozilla/plugins directory so you can symlink
# mozilla, firefox, etc. to it, back up those too:
test -d /usr/lib/mozilla/plugins &&
 cp -af /usr/lib/mozilla/plugins/* ~/backup/mozilla-plugins/

# Now make sure that mozilla is not running.  This should kill it if it is
# running, and should remove it if it's installed in a few common locations.
# Run this to remove the old version:
killall mozilla mozilla-bin
test -x /sbin/removepkg &&
 /sbin/removepkg mozilla mozilla-plugins jre-symlink
find /usr/lib /usr/local/lib -maxdepth 1 -type d -name "mozilla-*" \
 -exec rm -r {} \;
test -d /usr/lib/mozilla && rm -r /usr/lib/mozilla
test -d /usr/local/mozilla && rm -r /usr/local/mozilla

## If you want to go with the tarball method, run this instead of
## 'make install' below:
# cd xpinstall/packager
# make
# cd ../..
# tar xzvf dist/mozilla-i68-pc-linux-gnu.tar.gz -C /usr/local/

# If you did not go with the tarball method, install it:
cd obj-`build/autoconf/config.guess`
make install
chown -R $USER .

# If you ran 'make install' above, add /usr/local/lib/mozilla-1.7.13 to
# /etc/ld.so.conf so apps will be able to find the mozilla libraries:
test -d /usr/local/lib/mozilla-1.7.13 &&
 egrep -q "^/usr/local/lib/mozilla-1.7.13$" /etc/ld.so.conf ||
  echo "/usr/local/lib/mozilla-1.7.13" >> /etc/ld.so.conf && ldconfig

# If you ran "make install" above, and want to install the NSS includes:
cd ..
mkdir -p /usr/local/include/mozilla-1.7.13/nss
find security/nss/lib -type f -name "*.h" \
 -exec cp -a {} /usr/local/include/mozilla-1.7.13/nss/ \;
chown -R root:root /usr/local/include/mozilla-1.7.13/nss
chmod 644 /usr/local/include/mozilla-1.7.13/nss/*

# I'm not sure if this is still necessary, but older versions required that
# you start Mozilla once as root before any other users use it.

# Now, if you have any old plugins, you can copy them into
# /usr/local/lib/mozilla-1.7.13/plugins or /usr/local/mozilla/plugins/,
# depending on how you installed it.  Since Firefox and other browsers can
# use Mozilla plugins, I usually create a /usr/lib/mozilla/plugins
# directory, put the "real" plugins in there, and create symbolic
# links in the various browsers' plugins directories pointing to them.
# See my mozilla-plugins howto (link below) for more info.

# I wrote a small wrapper script for mozilla so other programs can run it
# without trouble.  For example, sometimes apps will run "mozilla
# http://whatever/", but that will fail if mozilla is already running.  The
# script will open up the URL in a new tab if mozilla is already running, and
# it will start mozilla normally if not.  If you installed mozilla using
# 'make install' this will rename /usr/local/bin/mozilla to mozilla.sh and my
# script will run that to start mozilla.  If you installed mozilla from the
# tarball, it will run /usr/local/mozilla/mozilla instead.
test ! -d /usr/local/mozilla &&
 ( cd /usr/local/bin
   test ! -f mozilla.sh && test -f mozilla && mv -f mozilla mozilla.sh
   test -f mozilla.sh && test -f mozilla && mv -f mozilla mozilla.old &&
    chmod -x mozilla.old )
test -d /usr/local/mozilla &&
 ( cd /usr/local/bin ; mv -f mozilla mozilla.old ; chmod -x mozilla.old )
cd /usr/local/bin
wget -O mozilla http://englanders.cc/pub/linux/misc/mozilla.sh
chmod +x mozilla

# If you don't use the script, if you installed mozilla with 'make install',
# you can just run mozilla (in /usr/local/bin).  If you installed it from a
# tarball, either add /usr/local/mozilla to your PATH, symlink
# /usr/local/mozilla/mozilla to /usr/local/bin/mozilla, or make sure that
# you run it with the full path every time: /usr/local/mozilla/mozilla.

# Become yourself again
exit

cd
mkdir -p -m 0700 ~/installed/mozilla
rm -f installed/mozilla/mozilla-*-source.tar.*
mv mozilla-1.7.13-source.tar.bz2 installed/mozilla/

# ~/src/mozilla/mozilla/widget/src/gtk/mozicon50.xpm (or
# /usr/local/mozilla/icons/mozicon50.xpm if you installed a tarball) can be
# used as a desktop icon.  I converted it to a png and put it here if you'd
# rather use that:
# http://englanders.cc/pub/linux/misc/mozicon50.png

# See the mozilla-plugins howto to set up plugins

Back to the list


Last updated: Tue, 07 Aug 2018 12:06:17 -0400
Jason Englander <jason at englanders dot us>