Building GNOME 1.4 on Solaris
I have now updated this page for GNOME 1.4, brought to you in full panoramic segfault-o-rama!
If you're wading through an install of GNOME 1.2, don't panic: the old page can still be found here.
With the wonders of modern technology, you can now install GNOME over the web from the Helixcode download area.
Currently, they only support GNOME on Solaris 7 / Ultrasparc (as well as the Linuxes, of course). So this guide is for anyone attempting to build the current GNOME release on Solaris from source, and is intended to complement the GNOME source installation instructions. More guides and information can be found at:
Building GNOME from source is a long, time consuming process. Fortunately, several kindly souls have put together pre-compiled Solaris binaries. Those that I know of are:
For those determined to build from source, David Westberg has sent me a shell script to unpack, build and install GNOME (together with all the extra dependencies you see here). You may need to modify it for your own purposes, but this handy tool makes a tedious task much easier.
Solaris 7 gotcha: Eric Lauriault reports that installing patch Patch-ID#108376-07 makes gnome-session
SIGSEGV on startup. This is also true for the Solaris 7 11/99 distribution which includes the MU4 updates. Either revert to the original libICE.so.6, or apply Patch-ID#108376-16, which Kevin Brott reported as a fix.
General setup
System
I have previously built and run GNOME on a SPARCstation 10MP with 256MB RAM.
I'm now using a SPARCstation 5, which is much faster, but only has
64MB of memory.
My OS is Solaris 2.6 (Developer install) with some recommended patches.
Disk use
This is a big package, so free up enough disk space before starting:
Source download ~50MB
Source tree ~500MB
Binaries in /usr/local ~300MB
Some questions...
-Can I change the GNOME installation directory?
Yes, as with all GNU packages, just specify --prefix=<directory> as an option with ./configure.
This should work with most (but probably not all) packages. Remember to set your paths accordingly.
-Can I install GNOME as a non-root user?
Yes, GNOME is a user-level application. So long as the system is set up correctly, you should not need to change any system files. Just set the installation directory to somewhere you have write permission.
-Can I use egcs instead of gcc?
Yes, egcs-1.1.2 is confirmed to work fine.
I suggest you use gcc to compile GNOME. I am using v2.95.3.
Solaris doesn't come bundled with a suitable compiler, so you'll need to get a binary package. These are available from http://www.sunfreeware.com. Install them as root with pkgadd -d <package>
The first packages you'll need are:
IMPORTANT
Many of the problems I hit when compiling GNOME were caused by path errors - resulting in the wrong binaries being used during compilation. This is due to GNOME's general difficulty with non-GNU platforms. Make sure the following environment variables are set:
-
CC=/usr/local/bin/gcc
-
CFLAGS="-O2 -msupersparc"
-
LDFLAGS="-L/usr/local/lib -R/usr/local/lib"
LD_RUN_PATH=/usr/local/lib.
This will mean that binaries will run properly, regardless of the LD_LIBRARY_PATH setting.
-
PATH=/usr/local/bin .../usr/ccs/bin .../usr/xpg4/bin .../usr/ucb
It's essential that /usr/local/bin appears first, and that /usr/ccs/bin appears before /usr/ucb:/usr/xpg4/bin to avoid problems later.
-
If you get compilation or link failures, the setting LD_LIBRARY_PATH=/usr/local/lib may help things along, although this shouldn't be necessary (in theory).
-
If you hit obscure problems, then setting LIBS = "-L/usr/local/lib/gcc-lib/sparc-sun-solaris2.6/2.95.3 -lgcc" may fix it, but it's not something that should be used by default. This fixed some weird problems with xmms, and it might just resolve some other issues.
Why is the path important? The reason is that there are a number of non-GNU utilities in a SOlaris install which will break things if they get used buring compilation. Specifically, these are the binaries that have given me problems:
sed - non-GNU versions can break Makefiles.
tr - XPG4 tr breaks gnome-config, so subsequent packages die with symbol referencing errors.
make - Solaris version can't handle GNU Makefiles.
tar - Solaris version gives errors with long pathnames. However the `pax` utility should work instead.
gettext - Solaris version is not GNU :-), breaks many packages.
lex - Recent ORBit releases need GNU flex.
Note that GNOME makes extensive use of shared memory. The Solaris defaults will break some packages, so increase the limit with something like this in /etc/system:
set shmsys:shminfo_shmmax = 0x2000000
set shmsys:shminfo_shmmni = 0x1000
set shmsys:shminfo_shmseg = 0x100
and reboot to enable.
If shared memory just won't work for you (usually gives 'munmap' errors), use the --disable-shm option to configure gtk and imlib.
Now you have a working compiler, you can compile everything else from source. This is usually done with:
zcat <tarball-name.gz> | tar xvf -
cd <tarball-name>
./configure
make
make check or make test will usually run a test suite.
su
make install
unless stated otherwise.
GNOME should build without problems on any supported Unix platform. But in reality, we will be installing many GNU packages, and these are very dependent on other GNU packages.
Save yourself a lot of bother, and install all the following. The resulting system is more "GNU/Solaris", but it is unlikely to break anything (and GNU utilties are usually much nicer anyway...).
All this software should be on any GNU FTP server, but they are sometimes tricky to find. The links here were kindly supplied by Peter Åstrand. Alternatively, Freshmeat will usually manage to find a download location for you.
-
make-3.79.1
Latest version is needed to cope with wildcards and also to avoid parse errors in some makefiles (ORBit, giflib, etc).
Installs in /usr/local/bin, but Solaris make is in /usr/ccs/bin and XPG4 make is in /usr/xpg4/bin, so check your path is set correctly.
-
patch-2.5
You need this for GNU source patches.
Installs in /usr/local/bin, but Solaris patch is in /bin, so check your path is set correctly.
-
m4-1.4
-
bison-1.28
-
gettext-0.10.35
Needed to prevent all sorts of confusion with NLS and Solaris gettext.
Use ./configure --with-gnu-gettext
Installs in /usr/local/bin, but Solaris gettext is in /usr/bin, so check your path is set correctly.
-
flex-2.5.4a
Needed to build ORBit.
-
indent-2.2.5
Needed to build ORBit.
-
autoconf-2.13
You will need this if you build gcc from source.
-
libtool-1.3.4
Shared library tools
-
gdb-5.0
The GNU debugger is invaluable for diagnosing problems with GNOME.
-
fileutils-4.0
Sawfish may need these to install correctly. Also, the GNU `install` is much faster than `install-sh`.
-
popt-1.6.2
Command line option parser.
An elusive piece of software - if it disappears from the above location, please let me know!
-
texinfo-4.0
Texinfo library. Needed to build man pages for development packages.
-
gsl-0.4.1
GNU scientific library
-
grep-2.3
Needed to avoid errors in some makefiles (gmc).
Installs in /usr/local/bin, but Solaris grep is in /usr/bin and XPG4 grep is in /usr/xpg4/bin, so check your path is set correctly.
-
tar-1.12
Solaris tar can't handle long pathnames, so this is needed to prevent errors when unpacking some packages (control-center, sawfish).
Alternatively, Clayton Chen tells me that `pax -rvf` (instead of `tar -xvf`) will also work.
-
sed-3.02
Some packages (mc) seem to have problems with the various Solaris seds.
Installs in /usr/local/bin, but there's also one in /bin, /usr/xpg4/bin and /usr/ucb so check your path is set correctly.
-
db-3.2.9
The current version is quite easy to build, and the current GNOME tarballs now seem to work with v3.x
See ./docs for full build instructions. Briefly:
cd build_unix
../dist/configure --enable-compat185 --enable-shared --prefix=/usr/local
make
make install
-
perl-5.6.0
Use sh Configure. The set up is interactive. The defaults will be pretty close, but remember to tell it about gcc and '-O2 -msupersparc' optimisation.
I opted for the shared library. I recommend the latest version of perl, as it builds more easily.
-
gdbm-1.8.0
Database library. Needed by Sawfish.
-
ncurses-5.2
New curses library. Needed by Sawfish.
Make sure you build the shared library by using ./configure --with-shared.
-
readline-4.1
Input library. Needed by Sawfish.
To make sure configure guesses correctly for shared libs, set CC=gcc. Anything else will mean it fails to detect your configuration correctly.
After make and make install, build the shared lib with make shared
To install it, cd shlib; make install
-
slang-1.3.7
Not essential, but if you plan on building other SLang programs (such as Lynx), then it is worth building the shared library. Andrew Cherry tells me you will need to change the ELF_LINK line in the src/Makefile after ./configure from
ELF_LINK="gcc -shared -Wl,-soname#"
to
ELF_LINK="gcc -shared -Wl,-h#"
if you are not using GNU binutils.
Build and install the static library as normal, the use make elf and make install-elf for the shared library. Then do make install-links.
-
xpm-3.4k
XPM is a bit of a pig to build, because it uses Imake, which I don't understand at all.
Kevin Brott sent me this script (updated 04/03/2001), which makes the whole thing much easier (and is handy for other Imake programs too). Just follow the instructions at the top of the file.
To build it manually, first edit /usr/openwin/lib/config/site.def.
Uncomment these sections (i.e. remove the surrounding /* and */):
#ifndef HasGcc2
#define HasGcc2 YES
#endif
#ifndef HasCplusplus
#define HasCplusplus YES
#endif
and make sure there's a reference to wherever your gcc includes are - something like:
#define PreIncDir /usr/local/lib/gcc-lib/sparc-sun-solaris2.6/2.95.3/include
Then edit /usr/openwin/lib/config/sun.cf and modify the top section like this:
/*
#define HasSunC YES
#define CCompilerMajorVersion 4
*/
#define HasSunC NO
You can also set the optimisation with:
#define OptimizedCDebugFlags -O2 -msupersparc
Finally, add the following to the top of /usr/openwin/lib/config/Imake.tmpl:
#define LdPreLib -L$(BUILDLIBDIR) -R$(BUILDLIBDIR)
#define LdPreLib -L$(USRLIBDIR) -R$(USRLIBDIR)
#define LdPostLib -L$(USRLIBDIR) -R$(USRLIBDIR)
Your system is now configured for Imake builds using gcc.
Now you can build and install the package with:
xmkmf -a
make BINDIR=/usr/local/bin INCDIR=/usr/local/include USRLIBDIR=/usr/local/lib MANPATH=/usr/local/man
make BINDIR=/usr/local/bin INCDIR=/usr/local/include USRLIBDIR=/usr/local/lib MANPATH=/usr/local/man install
make BINDIR=/usr/local/bin INCDIR=/usr/local/include USRLIBDIR=/usr/local/lib MANPATH=/usr/local/man install.man
-
bzip2-1.0.1
Bzip2 library, which is used by mc and gnome-core.
-
zlib-1.1.3
Build and install static lib as normal. To build the shared lib, set CFLAGS="-O2 -msupersparc -fPIC"
and use ./configure -s, rebuild, and install it again.
-
jpeg-6b
Use ./configure --enable-shared --enable-static, otherwise imlib complains later.
-
giflib-4.1.0
Or use libungif if you wish.
If you get make errors, check that GNU make is on your path.
If compilation fails because it couldn't find rle.h, grab all rle header files from libgr-2.0.13.tar.gz.
-
libpng-1.0.10
Not autoconf - so
cp scripts/makefile.solaris makefile
before running make.
-
tiff-v3.5.5
Set ENVOPTS=-O2 to get optimisation.
Take care with libtiff.so. There is one in /usr/openwin/lib and that's *not* the right one. So long as your environment is set correctly, it should always find the correct library.
-
freetype-1.3.1
TrueType font engine.
You might want to grab the new v2 library as well - ImageMagick seems to pick it up, and I think Nautilus needs it too.
Check that you have freetype.h in /usr/local/include after installation, because that's where other packages will look. If not, find all the headers (they are probably in /usr/local/include/freetype) and symlink them to /usr/local/include.
-
ImageMagick-5.2.9
Image manipulation programs.
Use ./configure --enable-shared to build a shared library.
-
guile-1.4
Scheme engine.
Building GNOME
Most of these packages are part of GNOME, and can be found at http://www.gnome.org or one of its mirrors.
The build order should be correct now. Please let me know if anything is wrong!
-
xml-i18n-tools-0.8.1
Internationalisation tools.
-
audiofile-0.2.1
Audio file format library.
-
esound-0.2.22
ESD sound server.
Earlier versions may not work correctly on a Sparc.
-
glib-1.2.10
Utility routines.
If upgrading from an older version, watch out for glibconfig.h left in /usr/local/include - the correct one is in /usr/local/lib/glib/include.
-
gtk+-1.2.10
Widget set. Use --disable-shm if shared memory is not for you, and --disable-xim if Sawfish acts strangely.
-
imlib-1.9.10
Image loading and manipulation library.
You can disable shared memory use with --disable-shm.
-
gtk-engines-0.12
GTK+ themes.
-
ORBit-0.5.7
CORBA implementation. Make sure GNU make and flex are on your path.
-
gnome-libs-1.2.13
The main GNOME libraries.
If you hit problems, be sure to check out the README - it has a very good explanation of all the dependencies for this package.
I think there must be an autoconf error somewhere because GNOME
would not run, complaining about "libz.so not found".
ln -s /usr/local/lib/libz.so /usr/lib/libz.so fixed it.
You'll find a useful test suite in ./gnome-test.
-
libxml-1.8.11
XML library.
The 2.x library is incompatible with older programs (and installing it caused problems for me), so stick with the 1.x library for now.
-
scrollkeeper-0.2
Documentation catalogue system.
-
libgtop-1.0.12
Portable system status access library.
Latest version now supports Solaris!
It will complain about -lgen during compilation, but this seems not to matter (I think it's just an autoconf bug).
-
libghttp-1.0.9
HTTP access library.
-
libglade-0.16
GUI builder library. Required by Gnumeric.
-
gdk-pixbuf-0.10.1
Graphic handling library (newer/faster Imlib replacement).
There's a nifty demo in the ./demo directory.
-
gnome-print-0.25
GNOME printing library. Required by Gnumeric.
You should get and unpack the basic fonts to /usr/openwin/lib/X11/fonts.
make install might warn that "the Times font was not found". Don't worry, just run
./gnome-font-install --system --scan --no-copy --afm-path=/usr/local/share/fonts/afms --pfb-assignment=ghostscript,/usr/openwin/lib/X11/fonts/URW fonts/
The current release seems to bomb at the font installation
stage, so you might want to stick with this version.
-
oaf-0.6.5
Object Activation Factory.
This package seems very temperamental. Watch out for old OAF files in /usr/local/share/gnome/oaf, and also stuff below /tmp.
I think you're supposed to install a default config with
cp /usr/local/etc/oaf/oaf-config.xml.sample /usr/local/etc/oaf/oaf-config.xml
but I could be wrong.
`make check` fails and causes a segfault for me, which is worrying...
-
GConf-1.0.0
Configuration registry.
Another oddly-behaved package that never seems to work properly for me.
You *must* manually make sure old versions are uninstalled, otherwise the headers will cause problems.
As noted in the installation output, you need to install a default configuration with
cp /usr/local/etc/gconf/1/path.example /usr/local/etc/gconf/1/path
-
libsigc++-1.0.3
Callback framework.
-
gnome-vfs-1.0.0
Virtual File System.
Use of PTHREAD_MUTEX_RECURSIVE fundamentally breaks this package on Solaris 2.6. :-(
Fortunately, Kevin Kuphal came to the rescue.
In libgnomevfs-pthread/gnome-vfs-pthread.c and modules/http-method.c, change
pthread_mutexattr_settype (&attr, PTHREAD_MUTEX_RECURSIVE)
to
#ifdef __USE_UNIX98
pthread_mutexattr_settype (&attr, PTHREAD_MUTEX_RECURSIVE)
#endif
It should now compile and install fine. It might moan about "library capplet not found", but seeing as control-center now depends on gnome-vfs, there's not much we can do about that...
-
control-center-1.4.0.1
Graphical configuration for user settings.
If you get tar checksum errors, check that you are using GNU tar.
The current version seems to forget to include the OAF library, so force it with
LIBS=-loaf ./configure
and it should build just fine.
-
bonobo-0.37
Object linking and embedding engine.
Nautilus will complain at you if you install the latest v1.0.2, so stick with this version for now.
-
gnome-audio-1.4.0
After unpacking the tarball, "make install" will install the files. With the latest esound, GNOME should now ding and beep just like a Windoze box.
Well, at least it used to - the current version seems strangely silent (although Sawfish sounds seem to be working)
-
gnome-core-1.4.0.2
Panel, help browser, session manager.
If you get errors, check that GNU sed is on your path.
Occasionally, compilation fails because it can't find gnome-panel.h. The following should work around this:
cd gnome-core/panel
orbit-idl `gnome-config --cflags idl` ../idl/gnome-panel.idl
cd ..
make
There is a known issue in this release with excessive panel overhead. It'll be fixed in the next one, hopefully.
-
gnome-applets-1.4.0.1
Applet collection.
You'll need a GNOME-compliant window manager. There are a number to choose from, including Enlightenment,
WindowMaker,
AfterStep and others. However, Sawfish is probably the best choice for GNOME.
The only downside is the zillion dependencies, which can make installation tricky. As well as the
previously mentioned GNU tar, fileutils, texinfo,
gdbm, ncurses and readline, you'll need...
-
librep-0.13.6
Lisp library.
I found that it was necessary to disable gmp support with ./configure --without-gmp, otherwise Sawfish segfaults on startup.
If compile fails because it's not happy with "libreadline.la", make sure the shared libraries libcurses.so and libreadline.so
are installed.
-
rep-gtk-0.15
GTK bindings.
-
sawfish-0.38
GNOME window manager.
If it looks strange or crashes, you may be hitting shared memory problems. See the Sawfish FAQ for suggestions on how to resolve this.
Once you have a suitable window manager installed, you can try running GNOME!
You can choose from one of the following:
-
mc-4.5.51
The simplest option. It's not the greatest file manager in the world, but at least it works.
If you get configure errors, check that GNU grep and sed are on your path.
If it crashes, try using -O2 (or less) optimisation instead of -O3.
You may need to install the indent tool to get it to build.
-
nautilus-1.0.1.1
The amazing Nautilus is here! At least I hope it's amazing: I only have FreeBSD and Solaris here, so
all I get is a pegged CPU meter :-(
However, it *does* compile, so it's a start. Just keep watching for new releases, and get filing those bug reports!
During compilation, it seems to miss the freetype2 headers, so ln -s /usr/local/inlcude/freetype2 /usr/include/freetype2, and all should be well.
Note that I have deliberately missed out ammonite (Eazel services), medusa (file indexer) and Mozilla (web browser) at this stage to try and keep things relatively simple.
Netscape works just fine, but there are alternatives with GNOME integration. The current favourite is Galeon,
more of which when I get it working...
Here is how I installed Gnumeric.
You can find more applications at http://www.gnome.org/gnome-office/
-
libole2-0.2.0
Object Linking and Embedding library.
-
libunicode-0.4.gnome
Unicode manipulation library.
You need the ".gnome" patched release.
-
libiconv-1.6.1
Unicode character set conversion library. Needed by GAL.
-
gal-0.5
GNOME Application Library.
-
gnumeric-0.64
GNOME's very own (and very wonderful!) spreadsheet package.
After installing Gnumeric, you may need to add /usr/local/lib/gnumeric/plugins to LD_LIBRARY_PATH
If you get undefined symbol errors, check that you are NOT using XPG4 tr.
GNOME will run without these, but its nicer if they're installed...
-
bug-buddy-1.1
Absolutely fantastic applet which will automagically compile bug reports (and even do a debug backtrace if you have gdb) whenever an application crashes. Superb if you want to help get GNOME stable, but don't want to mess around with the source code...
-
eog-0.5
Eye Of GNOME (image viewer).
Now with drag & drop (yay!).
-
glade-0.5.11
GUI builder.
Use ./configure --with-included-gettext if you aren't using GNU gettext.
-
pygtk-0.6.6
GTK Python bindings.
-
gnome-python-1.0.53
GNOME Python bindings.
-
users-guide-1.2.0
User guide.
-
gnome-utils-1.2.1
Small utilities.
-
gnome-pim-1.2.0
Calendar, address book.
-
gnome-media-1.2.0
CD player, volume control, sound visualiser.
-
gnome-games-1.2.0
Minor install errors about "no user games.games", otherwise OK
-
ee-0.3.12
Image viewer.
-
gtop-1.0.12
System monitor.
-
gdm-2.0beta4
Graphical login screen. Does not compile without hacking, probably better to use DTlogin.
-
xchat-1.2.1
IRC client.
-
gedit-0.9.1
A neat little editor - now with many bugfixes and vastly improved searching.
-
gnotepad+-1.3
Another editor, this time with formatting and HTML features.
-
VIM-5.7
Fantastic editor that is just perfect for HTML coding. OK, it's based on vi, but it is well worth the effort. The only editor that seems to successfully combine the speed of keystrokes with the benefits of a GUI. Brilliant syntax highlighting, too.
You need the source and runtime files - it compiles & installs fine. I suggest you copy the gvimrc_example to ~/.gvimrc to get started. The learning curve is pretty steep, but the tutor file will help a lot. Then you can add customisations like set gfn=-*-courier-medium-r-*-*-12-*-*-*-*-*-*-* to ~/.gvimrc. You can change the syntax colours in syntax/synload.vim if you want.
-
gimp-1.0.4
Stunning software. Compiles and installs without problems - and the unstable 1.1 version is even better...
-
xscreensaver-3.26
The X screensaver!
-
balsa-1.1.0
Simple, lightweight email client
./configure --enable-fcntl --disable-flock --enable-more-warnings=no to avoid problems.
You can add --enable-gtkhtml (if you have it installed) to allow display of HTML attachments.
-
pan-0.8.0
News reader.
Nice design, like FreeAgent on MICROS~1 Windoze. This version seems pretty stable, too.
-
xmms-1.2.2
Incredible music player applet, like WinAmp. Just how it plays MP3's on my lowly Sparc with minimal CPU usage is beyond me. That's quality programming for you!
For some odd reason, I had to setenv LIBS "-L/usr/local/lib/gcc-lib/sparc-sun-solaris2.6/2.95.2 -lgcc" before ./configure, otherwise I got undefined symbol errors.
The ESD plugin should work fine - alternatively grab the native xmms-solaris-0.5.0 driver. Just follow the instructions for installation.
Combine it with Yet Another MP3 Tool, and you've got a pretty trick MP3 solution.
Running GNOME
The command to start GNOME with session management is gnome-session.
This should start a window manager as well (probably Enlightenment, though Sawmill might be the default these days).
To start GNOME without session management, you must run gnome-wm instead. Session management used to be very flaky, but it seems just fine now.
The easiest way automate this is with an ~/.xinitrc file. Here is a minimalist GNOME startup:
# X session startup script for GNOME
# Make sure environment is set
PATH="$PATH:/usr/local/bin"
LD_LIBRARY_PATH="/usr/local/lib:$LD_LIBRARY_PATH"
# Enable Sun keyboard features
/usr/openwin/bin/speckeysd
# Run GNOME
exec gnome-session
#or `exec gnome-wm` if you prefer
This will make GNOME start when you run `openwin` from the command line, or select Open Windows from the DTlogin screen.
A better way is to integrate GNOME with DTlogin. It's a little tricky, but it's well worth the effort.
If DTlogin and CDE make you sick, then Trey Belew has put together some interesting instructions for tackling this with kdm, XFree86 and friends.
Everything should start properly now. If you don't get the panel, just start it manually from a terminal with `panel &`.
GNOME 1.2 ships with the Helixcode desktop, which is very neat (just delete your ~/.gnome directory to get it). Alternatively, try adding the "Tasklist", "Desk guide", "Clock" and "Mini commander" applets to the panel from the "Add applet - Utility" menu. Cool, isn't it?
You can drag & drop menu entries to the panel to make launch buttons as well.
The applets now mostly work for me.
The system monitors are very wobbly, but at least they run now.
An alternative is to run the Solaris perfmeter in the panel: try Panel > Add to panel > Swallowed app. Enter "Perfmeter" as the title, and enter "perfmeter -name Perfmeter" as the command. Hey presto, a system monitor!
The mailcheck applet is neat, though PyBiff is a better choice for IMAP mailboxes. If you use Netscape Messenger, try setting the "When clicked" parameter on mailcheck to:
gnome-moz-remote --remote='openInbox()'
This will launch Messenger for you!
Top tip: If your backspace key doesn't work, then stty erase {press backspace key} should fix it.
|