Solaris Package Archive
Welcome to the Solaris Package Archive. These files are supplied as a service
to the internet community to allow them to quickly configure their machines
with useful free software.
A package, in this sense of the word, is a installable collection of files
with embedded configuration details which instruct the installing program
on file attributes, locations, pre and post installation procedures and also
system requirements. Solaris comes with the complete System V package tools
installed. You don't need to do anything special to utilize them.
For those whose experience with packages is limited to the installation of the
operating system or patches, well there is a lot of useful functionality
hidden in the pkg system. By far the most outstanding benefit is the ability
to add and remove software quickly and relatively thoughtlessly and being
confident that all of the old versions of software have been removed. Too many
times I've seen sites with left over files and directories from old versions
of compilers, development tools and communications programs. This is inherently
a problem both for disk usage and cluttering and also ending up in a situation
where you don't know what belongs on your system and what is garbage.
To avoid these problems on the systems I am responsible for, and because I
don't see the point in compiling the same program twenty times, I have created
package formats of the tools I install. Creation of the packages is remarkably
easy after the first few, somewhat droll one might say. However the work pays
off when I can confidentally add software quickly and easily to a new host.
As a guide it takes less than 30 minutes to configure an Ultra Server to a
state where users can do whatever users do, where before it would have taken
days or longer to configure and build the files.
See the Trouble Shooting section below if you have problems.
Main Archive Site
Points to note
Groups Of Packages
Other Package Commands
Main Archive Site
The main site for these files is at UNC, North Carolina, USA. They are hosted
on Ibiblio.org. I'd like to thank the UNC for their support.
The packages can be located on the sites below. Don't email the admins about
the packages. Email me.
Ibiblio.org @ UNC :
If you want to obtain a copy of these packages you can use a variety of methods. FTP, wget and rsync allow command line fetching. To obtain them via rsync you can use variants of this command:
% rsync -av --dry-run --no-motd ftp.ibiblio.org::solaris/ .
To fetch all Solaris 10 SPARC 64 bit packages:
% rsync -av --dry-run --no-motd --include 'sparc/' --include '*SPARC.64bit.Solaris.10.*' --exclude '*' ftp.ibiblio.org::solaris/ .
Obviously you need to remove the --dry-run argument first to actually transfer files.
These sites are co-operating to provide these files at locations where network connectivity makes sense to mirror. Many thanks to their admins.
In alphabetical order:
Machine Admin : <email@example.com>
Machine Admin: Wojtek Sylwestrzak <W.Sylwestrzak@icm.edu.pl>
SWITCH Mirror Switzerland
Machine Admin: Thomas Lenggenhager <firstname.lastname@example.org>
Points to note
Solaris is quite backwards compatible, you can generally take a binary from
an earlier release and run it successfully on a later version of Solaris.
This does NOT apply however to specific programs like GNUgcc in the long run.
When compiling the differences between the releases does start to become
noticed, the different header files, libraries, patches and also new binaries.
O.S. Packages Needed For Compiling
For some time I have been configuring the packages to check for the release
of Solaris on the machine you are attempting to install on, if it's different
from the version it was compiled for, the package will refuse to install. This
is a precaution to stop novice administrators shooting themselves in the proverbial
foot. Obviously the software will probably run, but it's much more desirable to
use the correct version for your O.S.
You will get errors running the compilers if you do not have the right
installation of Solaris on your machine. The minimal install choice
will not install the packages you need to compile software. You will
need to manually install them. Using admintool may not work.
X11 Support Not Included
Install the Solaris CD.
Change to the /cdrom/solaris_2_5/s0/Solaris.2.5 directory.
pkgadd -d`pwd` SUNWhea SUNWarc SUNWbtool SUNWlibC SUNWlibCf SUNWlibm
SUNWlibms SUNWsprot SUNWtoo SUNWdfbh SUNWcg6h
The developer install choice may lack the packages as well. Check using
pkginfo | more.
If using a release other than 2.5, change the path accordingly.
The ` characters above are "back tics", not single quotes. If you can't
tell the difference, change your font to courier.
With the X11 games I am not really going to go out of my way to provide
detailed support for users. The reason for this is that they work for me
on a Solaris system with my X11R6.4 packages and if they don't work for you
then you will have to discover the reason for yourself. Most likely it will
be because of wrong versions of Solaris and X11. Caveat Emptor. See the
Trouble Shooting section below for library errors.
Upgrading Your X11 To A New Release
When installing a new package of X11, to do it properly you should first
uninstall all the other X11 packages you have installed. In reverse order
if possible. This means you should:
Some Tools Have Strange Side Effects
- pkgrm fvwm2 tetris roxndiam xpacman xpm X11R6.1
The reason for this is you need to remove the packages from the old X11
directory and then add them into the new one. If you don't do this you
will have your other X11 programs "left behind" in the X11R6.1 directory.
Once this is done and you have added the new X11R6.x package, you can
pkgadd the X11 programs again:
- pkgadd X11R64 xpm fvwm2 tetris roxndiam xpacman
You should then look in the old X11R6.x tree to find any left over files,
such as the xdm error logs, auth files etc. Unless you have added files
from somewhere else you should be able to delete the old X11R6.x tree.
Some of you may have wondered why I haven't blitzed the archive with more
GNU tools. Apart from a relentless pursuit of laziness, it isn't really a
good idea to replace most Solaris binaries with GNU ones. For instance,
the GNU binutils can really give you weird results which can shorten your
life. Very few sane admins install these. I try to supply packages which
you can use and won't go biting you in soft places. You're welcome.
Solaris tar Should Be Used
Some of you have reported errors in packages where file names have been
truncated whilst unpacking. The reason for this is you are not using
/usr/bin/tar to unpack the archive,
more likely it's /usr/local/bin/tar
which is usually GNUtar. Use the Solaris tar instead.
Groups Of Packages
Some packages need to be used in conjunction with others, or are compiled to
specifically use a certain version of another package. To install properly you
will need to install all parts of the group.
To identify which package requires other libraries etc to run, you will need to
use the ldd tool to identify missing
libraries. Usually it's reasonably simple to match a required library to the
package that ships with it but sometimes it gets tricky. Notably the
libintl library ships in the
gettext package and is widley used
by many other programs.
An example of one of the most demanding packages is PHP. Here's the list of required
# Required for /usr/local/lib/libz.so
# Required for /usr/local/lib/libexslt.so.0
# Required for /usr/local/lib/libxslt.so.1
# Required for /usr/local/lib/libxml2.so.2
# Required for /usr/local/lib/libgcrypt.so.11
# Required for /usr/local/lib/libgpg-error.so.0
# Required for /usr/local/lib/libreadline.so.6
# Required for /usr/local/mysql/lib/libmysqlclient.so.18
# Required for /usr/local/lib/libmcrypt.so.4
# Required for /usr/local/lib/libltdl.so.7
# Required for /usr/local/lib/libfreetype.so.6
# Required for /usr/local/lib/libXpm.so.4
# Required for /usr/local/lib/libX11.so.6
# Required for /usr/local/lib/libxcb.so.1
# Required for /usr/local/lib/libXau.so.6
# Required for /usr/local/lib/libXdmcp.so.6
# Required for /usr/local/lib/libpng14.so.14
# Required for /usr/local/lib/libjpeg.so.8
# Required for /usr/local/lib/libdb-4.8.so
# Required for /usr/local/lib/libgdbm.so.3
# Required for /usr/local/lib/libbz2.so
# Required for /usr/local/lib/libpcre.so.0
# Required for /usr/local/lib/libssl.so.0.9.8
# Required for /usr/local/lib/libcrypto.so.0.9.8
# Required for /usr/local/lib/libgssapi_krb5.so.2
# Required for /usr/local/lib/libkrb5.so.3
# Required for /usr/local/lib/libk5crypto.so.3
# Required for /usr/local/lib/libcom_err.so.3
# Required for /usr/local/lib/libcurl.so.4
# Required for /usr/local/lib/libidn.so.11
# Required for /usr/local/lib/libssh2.so.1
# Required for /usr/local/lib/libldap-2.4.so.2
# Required for /usr/local/lib/liblber-2.4.so.2
# Required for /usr/local/lib/libintl.so.8
# Required for /usr/local/lib/libiconv.so.2
# Required for /usr/local/lib/libiodbc.so.2
Once you've satisfied all of those dependancies then you'll still have to find
the library dependancies of the software you just added to support PHP. It's a
bit of work sometimes.
I have used /usr/local as the top
directory of my tree. All files are owned by
root and the group is
root as well. All files are world
readable and only root is able to
write to them unless explicitly needed. If your contributed software tree is not
then you will need to do further work to integrate the new software. This may
involve loopback mounts to avoid having a
/usr/local softlink overwritten.
(This will happen in a few of the packages, the more recent ones don't change
either the /usr or
/usr/local directory inodes.)
If you have problems, see the Trouble Shooting section below.
To install you will need to either FTP or HTTP fetch the relevant tgz or .pkg file to your local system. For .tgz files you then need to unpack it into a
file system tree. (A .tgz file is a tar file that is gzipped). For older Solaris releases you will need to
install the GNUzip package first, (it is not compressed), to uncompress the
If using FTP to get your files, fetch the pkg.tgz files in BINARY or IMAGE
mode. You must unpack the files in a directory the user
nobody can access. I recommend
Once you have the file cached locally, (we will use GNUzip as the demonstration pkg),
you can unpack it (if required) with these methods:
For a pkg.tgz file:
% umask 0
For a pkg.tar file:
% cd /var/tmp
% gunzip -c GNUzip.1.2.4.SPARC.Solaris.2.5.pkg.tgz | /usr/bin/tar -xvf -
% umask 0
Change your uid to root:
% cd /var/tmp
% /usr/bin/tar -xvf GNUzip.1.2.4.SPARC.Solaris.2.5.pkg.tar
% su - root
Ensure you are in the correct directory, i.e. your current directory must
contain the packages you wish to install:
# ls -aCF
Install the package onto the system. You tell it where to find the package, (i.e. in the '.' or $PWD directory, or just the .pkg file itself), and then the name of the package you want to add.
./ ../ GNUzip/
# pkgadd -d`pwd` GNUzip
You will see:
# pkgadd -d. GNUzip
# pkgadd -d$PWD GNUzip
# pkgadd -d GNUzip.1.24.i86pc.Solaris.2.6.pkg GNUzip
Processing package instance <GNUzip> from </var/tmp>
As you can see I already had a gzip binary installed on the system, but not all
the other parts of it. I answered 'y' to overwrite the installed gzip with the
new package copy.
GNU zip 1.2.4
## Processing package information.
## Processing system information.
8 package pathnames are already properly installed.
## Verifying disk space requirements.
## Checking for conflicts with packages already installed.
The following files are already installed on the system and are being
used by another package:
* - conflict with a file which does not belong to any package.
Do you want to install these conflicting files [y,n,?,q] y
## Checking for setuid/setgid programs.
Installing GNU zip 1.2.4 as <GNUzip>
## Installing part 1 of 1.
[ verifying class <none> ]
/usr/local/bin/gunzip <linked pathname>
/usr/local/bin/zcat <linked pathname>
/usr/local/bin/zcmp <linked pathname>
/usr/local/man/man1/gunzip.1 <linked pathname>
/usr/local/man/man1/zcat.1 <linked pathname>
/usr/local/man/man1/zcmp.1 <linked pathname>
Installation of <GNUzip> was successful.
After adding a package you will need to do housekeeping tasks (as root)
such as updating the manual page index:
# catman -w &
Also check your paths are up to date so you can "see" the new software.
Affected environment variables are PATH,
Those who wish to install a lot of packages at once will find the
bulk installation instructions useful.
To setup your accounts properly for these packages you need to have your
environment variables pointing to the software. You must have at least the
following set up:
For /bin/sh (~/.profile) and
For /bin/csh and
export LD_LIBRARY_PATH PATH MANPATH
export PAGER EDITOR CC CXX
setenv LD_LIBRARY_PATH "/lib:/usr/lib:/usr/local/lib:/usr/local/X11/lib:/usr/dt/lib:/usr/openwin/lib"
I've personally stopped using the LD_LIBRARY_PATH variable, preferring to use the -R/usr/local/lib compile flag so that libraries and binaries will automatically look in that directory for run time libraries. It makes the packages more resilient as they won't accidentally link to libraries in another random location first.
setenv PATH "/usr/local/bin:/bin:/usr/ccs/bin:/etc:/usr/etc:/usr/local/X11/bin:/usr/ucb:/usr/openwin/bin:/usr/local/etc:/usr/sbin"
setenv MANPATH "/usr/local/man:/usr/man:/usr/local/X11/man"
setenv PAGER less
setenv EDITOR vi
setenv CC cc
setenv CXX CC
I get a number of emails from people that report problems which seem to
congregate around a small amount of common errors. Predominately the compilers
cause people problems.
Assuming the GNUgcc packages themselves installed correctly you might see the
An include file in the "va_args*" group is missing when called from stdio.h
You don't have the necessary compiling packages installed on your machine.
Your X11 libraries don't match or aren't found.
When Solaris is installed on a machine it asks which setup to
install; "Minimal", "Developer", "Full Installation" or even
"Full Installation with OEM support". Only some of these choices
will give you the packages you need to compile your own programs.
If you read the Notes section earlier in this file it will tell
you how to manually (not with admintool)
add the files to your system. This is a very common problem I see a lot.
Often X11 libraries will have different revision numbers and a
program expecting a version of a library to enable it to run will
report an error if it can't find the library it is looking for.
The quickest solution is to link the missing library to one you
do have on your machine:
You can't find your mission critical X11 games or fvwm2 window manager.
- cd /usr/local/X11R6.1/lib; ln -s libX11.so.6.0 libX11.so.6.1
This provides a libX11.so.6.1
which allows any program looking for it to continue running.
Also make sure your LD_LIBRARY_PATH
includes all the X11 libraries:
See the Environment Variables section.
- You didn't pkgrm and then
pkgadd them. See the
Notes section above.
My xv is complaining about a
missing xpm library.
- Install the xpm package found on this site.
- Check your LD_LIBRARY_PATH variable.
See the Environment Variables section.
Your package doesn't verify. Missing packet.h.
- Use Solaris tar to unpack the packages. pkgrm
the installed package and then install it correctly. See the
Notes section above.
You can't compile any network programs without
The bind.8.1.1 package installs it's own file in the
GNUgcc will search this directory before
/usr/include and thereby break
your compiles if you don't link in the bind library as well.
host:/var/tmp root# gcc -o addr addr.c -lnsl
Undefined first referenced
symbol in file
ld: fatal: Symbol referencing errors. No output written to addr
host:/var/tmp root# gcc -o addr addr.c -lnsl -lbind
Adding a package dies with "can't open" for the
You need to make sure the user "nobody" can run the
script. The package file unpacks itself properly using the provided
instructions but you need to make sure the parent directories can be
passed through, (i.e. user "nobody"
can 'cd' through them).
To decode the problem you might see something like this:
Processing package instance <GNUg77> from </export/home/mark/software>
/export/home/mark/software/GNUg77/install/checkinstall: cannot open
This is telling me the directory
not searchable for the "nobody" user.
I should probably unpack the .pkg.tgz
file in /var/tmp instead. Also
I should make sure I do a umask 0
command first so I don't pollute the permissions when unpacking.
Only a very small number of problems can be attributed to other causes. Once
I used the wrong tar on a package, another time someone used the wrong g++
compilation option. Out of 254,526 installations (to date) of GNUgcc I haven't
seen a single problem that wasn't mentioned here. If you do encounter one,
email me at email@example.com.
Please include the output of uname -a.
Also, telling me the name and version of the package helps a lot. :)
If a packages file permissions don't let you retrieve it then it is likely
the package is not ready for release yet. Please wait until I have reset
the access rights to publish the file. Don't email me :)
To verify that a package is installed use:
- % pkginfo | grep zip
- utility GNUzip GNU zip 1.2.4
- % pkgchk GNUzip
or, to check what is in the pkg:
% pkgchk -v GNUzip
If desired you can now rm the pkg.tgz file and the package directory.
I recommend keeping the pkg.tgz files handy in case of a disc crash etc.
To see what third party packages you have installed a quick check is:
% pkginfo | grep -v SUNW
utility GNUbison GNU bison 1.25 SPARC Solaris 2.4
utility GNUcvs GNU cvs 1.9 SPARC Solaris 2.4
utility GNUflex GNU flex 2.5.4a SPARC Solaris 2.4
utility GNUgcc GNU gcc 2.8.1 SPARC Solaris 2.4
utility GNUgdb GNU gdb 4.16 SPARC Solaris 2.4
utility GNUgdbm GNU libgdbm 1.7.3 SPARC Solaris 2.4
utility GNUgroff GNU groff 1.11 SPARC Solaris 2.4
utility GNUindent GNU indent 1.9.1 SPARC Solaris 2.4
utility GNUlibstc GNU libstdc++ 126.96.36.199 SPARC Solaris 2.4
utility GNUm4 GNU m4 1.4 SPARC Solaris 2.4
utility GNUmake GNU make 3.77 SPARC Solaris 2.4
utility GNUpatch GNU patch 2.5 SPARC Solaris 2.4
utility GNUplot GNU plot 3.5 SPARC Solaris 2.4
utility GNUtar GNU tar 1.12 SPARC Solaris 2.4
utility GNUtexnfo GNU texinfo 3.9 SPARC Solaris 2.4
utility GNUzip GNU zip 1.2.4
utility less less 332 SPARC Solaris 2.4
utility perl5 perl 5.004.04 SPARC Solaris 2.4
utility rcs rcs 5.7 SPARC Solaris 2.4
utility tcsh tcsh 6.07.02 SPARC Solaris.2.4
utility troute traceroute 3.5
If you wish to install a new version of some packaged software that is already
installed, or to revert to a previous version you will have to remove the current
version from the system. You simply use:
- # pkgrm GNUzip
and answer 'y' to delete the package from the system. I often juggle different
versions of packages when I am developing software and need to revert to older
To create packages is simple once you know what you are doing. To make your
own packages for your own personal use you might find these
Once you have made your package you will probably want to show it off etc. Please
don't email me asking me to include it in the archive, I am quite paranoid about
what binaries I run on my machines and it would be negligent of me to accept any
files from anyone else.
Other Package Commands
Most of the package commands are:
% man -k pkg
pkgadd pkgadd (1m) - transfer software package to the system
pkgask pkgask (1m) - stores answers to a request script
pkgchk pkgchk (1m) - check accuracy of installation
pkginfo pkginfo (1) - display software package information
pkginfo pkginfo (4) - package characteristics file
pkgmap pkgmap (4) - package contents description file
pkgmk pkgmk (1) - produce an installable package
pkgparam pkgparam (1) - displays package parameter values
pkgproto pkgproto (1) - generate prototype file entries for pkgmk
pkgrm pkgrm (1m) - removes a package from the system
pkgtrans pkgtrans (1) - translate package format