If using a web browser, remember to Reload this file each time. =============================================================================== Solaris Package Library =============================================================================== Welcome to the Solaris package library. These files are supplied as a service to the internet community to allow them to quickly configure their machines with useful free software. 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 ================= The main site for these files is at UNC, North Carolina, USA. They are hosted on MetaLab UNC. I'd like to thank the UNC for their support over the years. The packages can be located at: MetaLab UNC : Admin: Paul Jones http://metalab.unc.edu/pub/packages/solaris/sparc/ http://metalab.unc.edu/pub/packages/solaris/i86pc/ ftp://metalab.unc.edu/pub/packages/solaris/sparc/ ftp://metalab.unc.edu/pub/packages/solaris/i86pc/ Authorized Mirrors ================== These sites are co-operating to provide these files at locations where network connectivity has been problematic. Also they are co-operating to keep the statistics accurate. They are all part of the SunSITE Network. Many thanks to their admins. In alphabetical order: SunSITE Germany Admin : Stefanie Kethers http://sunsite.informatik.rwth-aachen.de/solarispkg/sparc/ http://sunsite.informatik.rwth-aachen.de/solarispkg/i86pc/ ftp://sunsite.informatik.rwth-aachen.de/pub/mirror/solaris/sparc/ ftp://sunsite.informatik.rwth-aachen.de/pub/mirror/solaris/i86pc/ SunSITE Japan Admin: Devendra Narayan http://sunsite.rediris.es/ftp/mirror/solaris-packages/sparc/ http://sunsite.rediris.es/ftp/mirror/solaris-packages/i86pc/ ftp://sunsite.rediris.es/mirror/solaris-packages/sparc/ ftp://sunsite.rediris.es/mirror/solaris-packages/i86pc/ SunSITE Switzerland Admin: Thomas Lenggenhager http://sunsite.cnlab-switch.ch/www/mirror/solaris-binaries/sparc/ http://sunsite.cnlab-switch.ch/www/mirror/solaris-binaries/i86pc/ ftp://sunsite.cnlab-switch.ch/mirror/solaris-binaries/sparc/ ftp://sunsite.cnlab-switch.ch/mirror/solaris-binaries/i86pc/ Enjoy, Mark Note: Solaris 2.5 and Solaris 2.5.1 are essentially the same. You can use the Solaris 2.5 packages on a 2.5.1 machine without problems. This does NOT apply however to specific programs like GNUgcc in the long run. Solaris 2.5.1 has additional header files and so I have provided a Solaris 2.5.1 GNUgcc and a GNUgdb pkg. Starting from March 1997 new packages that are release specific will refuse to install on the wrong version of Solaris. This stops novice administrators shooting themselves in the proverbial foot. But, if you don't see a specific 2.5.1 package, try the 2.5 one. Note: 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. 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. Note: GNUg77 is a full GNUgcc with Fortran additions. Don't add GNUgcc if you are going to install GNUg77. GNUg77 0.5.18 is GNUgcc 2.7.2 GNUg77 0.5.21 is GNUgcc 2.7.2.3 Note: Generally I don't support Solaris 2.3 or 2.4 to the same degree. The idea is to have machines upgraded to the latest versions. If however I compile a package on one of these hosts you will see it presented here. Note: 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 2.5 system with X116.3 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. Note: 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: 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 X11R63 xpm fvwm2 tetris roxndiam xpacman You should then look in the old X11R6.1 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.1 tree. Note: 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. Note: 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 ====== 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. Group: expect.5.25. tcl.8.0, tk.8.0 Group: expect.5.26. tcl.8.0.3, tk.8.0.3 Group: GNUchess.4.0.77, xboard.3.5.0 Group: xpaint.2.4.7, jpeg.6a, libpng.0.89c, tiff.3.4.b36, zlib.1.0.4 Group: zlib.1.1.3, libpng.1.0.2 Group: xv.3.10.a, xpm Group: icon.9.3, xpm Package Assumptions =================== 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. If your contributed software tree is not /usr/local 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.) Package Installation ==================== If you have problems, see the troubleshooting section below. To install you will need to FTP the relevant tgz file and unpack it into a package tree. (A .tgz file is a tar file that is gzipped). You will need to install the GNUzip package first, (it is not compressed), to uncompress the other files. FTP the pkg.tgz files in BINARY or IMAGE mode. You can fetch and unpack the files in a directory the user "nobody" can access. I recommend /var/tmp. Once you have the file local, (we will use GNUzip as the demonstration pkg), you can unpack it with these methods: For a pkg.tgz file: % umask 0 % cd /var/tmp % gunzip -c GNUzip.1.2.4.SPARC.Solaris.2.5.pkg.tgz | /usr/bin/tar -xvf - For a pkg.tar file: % umask 0 % cd /var/tmp % /usr/bin/tar -xvf GNUzip.1.2.4.SPARC.Solaris.2.5.pkg.tar GNUzip/ GNUzip/pkgmap GNUzip/pkginfo GNUzip/root/ GNUzip/root/usr/ GNUzip/root/usr/local/ GNUzip/root/usr/local/bin/ GNUzip/root/usr/local/bin/gzexe GNUzip/root/usr/local/bin/gzip GNUzip/root/usr/local/bin/zdiff GNUzip/root/usr/local/bin/zforce GNUzip/root/usr/local/bin/zgrep GNUzip/root/usr/local/bin/zmore GNUzip/root/usr/local/bin/znew GNUzip/root/usr/local/info/ GNUzip/root/usr/local/info/gzip.info GNUzip/root/usr/local/man/ GNUzip/root/usr/local/man/man1/ GNUzip/root/usr/local/man/man1/gzexe.1 GNUzip/root/usr/local/man/man1/gzip.1 GNUzip/root/usr/local/man/man1/zdiff.1 GNUzip/root/usr/local/man/man1/zforce.1 GNUzip/root/usr/local/man/man1/zgrep.1 GNUzip/root/usr/local/man/man1/zmore.1 GNUzip/root/usr/local/man/man1/znew.1 Change your uid to root: % su - root Password: # Ensure you are in the correct directory, i.e. your current directory must contain the packages you wish to install: # ls -aCF ./ ../ GNUzip/ Install the package onto the system: # pkgadd -d`pwd` GNUzip or : # pkgadd -d. GNUzip or : # pkgadd -d$PWD GNUzip You will see: Processing package instance from GNU zip 1.2.4 (sun4,sun4c,sun4m,sun4e,sun4u) 1.2.4 GNU ## 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: * /usr/local/bin/gzip * - 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 ## Installing part 1 of 1. /usr/local/bin/gzexe /usr/local/bin/gzip /usr/local/bin/zdiff /usr/local/bin/zforce /usr/local/bin/zgrep /usr/local/bin/zmore /usr/local/bin/znew /usr/local/info/gzip.info /usr/local/man/man1/gzexe.1 /usr/local/man/man1/gzip.1 /usr/local/man/man1/zdiff.1 /usr/local/man/man1/zforce.1 /usr/local/man/man1/zgrep.1 /usr/local/man/man1/zmore.1 /usr/local/man/man1/znew.1 [ verifying class ] /usr/local/bin/gunzip /usr/local/bin/zcat /usr/local/bin/zcmp /usr/local/man/man1/gunzip.1 /usr/local/man/man1/zcat.1 /usr/local/man/man1/zcmp.1 Installation of was successful. # As you can see I already had 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. NOTE: 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, MANPATH and LD_LIBRARY_PATH. Environment Variables ===================== 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 /bin/ksh (~/.kshrc): LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:/usr/local/X11/lib:/usr/dt/lib:/usr/openwin/lib 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 MANPATH=/usr/local/man:/usr/man:/usr/local/X11/man export LD_LIBRARY_PATH PATH MANPATH Recommended: PAGER=less EDITOR=vi CC=gcc export PAGER EDITOR CC For /bin/csh and /usr/local/bin/tcsh (~/.cshrc): setenv LD_LIBRARY_PATH "/lib:/usr/lib:/usr/local/lib:/usr/local/X11/lib:/usr/dt/lib:/usr/openwin/lib" 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" Recommended: setenv PAGER less setenv EDITOR vi setenv CC gcc Trouble Shooting ================ 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 following errors: An include file in the "va_args*" group is missing when called from stdio.h Causes: You installed the wrong compiler for your operating system. Each GNUgcc compiler is compiled on a specific release of Solaris. Part of the setup process for GNUgcc is to take the "header files" for the release and rewrite them to suit gcc's method of working. If you install a compiler that was setup for a different release of Solaris on your machine you will get a lot of compiling errors. For instance installing a 2.5 GNUgcc on a 2.5.1 machine is a bad thing. Installing a 2.5.1 compiler on a 2.3 machine is a worse thing :) You will need to pkgrm the installed compiler (See the Package Removal section below) and then install the correct GNUgcc for your machine. Use "uname -a" to find out what operating system you have. (SunOS 5.4 = Solaris 2.4, SunOS 5.5.1 = Solaris 2.5.1 etc) From March 1997, compilers and other OS release specific packages will refuse to install if the Solaris version is not correct. This is for your own protection and to stop the silly errors people cause upon themselves. You don't have the necessary compiling packages installed on your machine. 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. Your X11 libraries don't match or aren't found. 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: 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: LD_LIBRARY_PATH=/lib:/usr/lib:/usr/local/lib:/usr/local/X11/lib:\ /usr/dt/lib:/usr/openwin/lib See the Environment Variables section. You can't find your mission critical X11 games or fvwm2 window manager. 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 library. 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. See the Notes section above. You can't compile any network programs without __inet_addr() errors. The bind.8.1.1 package installs it's own file in the /usr/local/include/arpa directory. 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 __inet_addr /var/tmp/cca0073y1.o ld: fatal: Symbol referencing errors. No output written to addr host:/var/tmp root# gcc -o addr addr.c -lnsl -lbind host:/var/tmp root# You get: ld.so.1: gcc: fatal: libc.so.1: version `SUNW_0.7' not found You are probably running a beta version of 2.6 Solaris. Upgrade to the release CD. Adding a package dies with "can't open" for the checkinstall script You need to make sure the user "nobody" can run the checkinstall 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). 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 mark@metalab.unc.edu. 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 :) Package Verification ==================== To verify that a package is installed use: % pkginfo | grep zip utility GNUzip GNU zip 1.2.4 or: % pkgchk GNUzip % or, to check what is in the pkg: % pkgchk -v GNUzip /usr /usr/local /usr/local/bin /usr/local/bin/gunzip /usr/local/bin/gzexe /usr/local/bin/gzip /usr/local/bin/zcat /usr/local/bin/zcmp /usr/local/bin/zdiff /usr/local/bin/zforce /usr/local/bin/zgrep /usr/local/bin/zmore /usr/local/bin/znew /usr/local/info /usr/local/info/gzip.info /usr/local/lib /usr/local/man /usr/local/man/man1 /usr/local/man/man1/gunzip.1 /usr/local/man/man1/gzexe.1 /usr/local/man/man1/gzip.1 /usr/local/man/man1/zcat.1 /usr/local/man/man1/zcmp.1 /usr/local/man/man1/zdiff.1 /usr/local/man/man1/zforce.1 /usr/local/man/man1/zgrep.1 /usr/local/man/man1/zmore.1 /usr/local/man/man1/znew.1 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 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++ 2.8.1.1 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 Removing packages ================= 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 versions. Creating Packages ================= See the HTML instructions at: http://metalab.unc.edu/pub/packages/solaris/sparc/html/creating.solaris.packages.html Other 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