=============================================================================== 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 who's 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. Enjoy, Mark Packages ======== Here are the packages currently publically available: SPARC: GNUbison.1.25.SPARC.Solaris.2.5.pkg.tgz GNUg77.0.5.18.SPARC.Solaris.2.5.pkg.tgz GNUgcc.2.7.2.SPARC.Solaris.2.5.pkg.tgz GNUgdb.4.16.SPARC.Solaris.2.5.pkg.tgz GNUgroff.1.10.SPARC.Solaris.2.5.pkg.tgz GNUlibg++.2.7.2.SPARC.Solaris.2.5.pkg.tgz GNUm4.1.4.SPARC.Solaris.2.5.pkg.tgz GNUpatch.2.1.SPARC.Solaris.2.5.pkg.tgz GNUplot3.5.SPARC.Solaris.2.5.pkg.tgz GNUscreen.3.7.1.SPARC.Solaris.2.5.pkg.tgz GNUtar.1.11.8.SPARC.Solaris.2.5.pkg.tgz GNUzip.1.2.4.SPARC.Solaris.2.5.pkg.tar X11R6.1.SPARC.Solaris.2.5.pkg.tgz expect.5.19.0.SPARC.Solaris.2.5.pkg.tgz expect.5.20.18.SPARC.Solaris.2.5.pkg.tgz less.290.SPARC.Solaris.2.5.pkg.tgz md5sum.1.00.SPARC.Solaris.2.5.pkg.tgz perl4.036.SPARC.Solaris.2.5.pkg.tgz perl5.000.SPARC.Solaris.2.5.pkg.tgz tcl.7.4.SPARC.Solaris.2.5.pkg.tgz tcl.7.5.p1.SPARC.Solaris.2.5.pkg.tgz tcsh.6.06.SPARC.Solaris.2.5.pkg.tgz tk.4.0.SPARC.Solaris.2.5.pkg.tgz tk.4.1.SPARC.Solaris.2.5.pkg.tgz traceroute.3.5.SPARC.Solaris.2.5.pkg.tgz xpm.SPARC.Solaris.2.5.pkg.tgz i86pc: GNUbison.1.25.i86pc.Solaris.2.5.1.pkg.tgz GNUgcc.2.7.2.i86pc.Solaris.2.5.1.pkg.tgz GNUlibg++.2.7.2.i86pc.Solaris.2.5.1.pkg.tgz GNUm4.1.4.i86pc.Solaris.2.5.1.pkg.tgz GNUtar.1.11.8.i86pc.Solaris.2.5.1.pkg.tgz GNUzip.1.2.4.i86pc.Solaris.2.5.1.pkg.tar expect.5.20.18.i86pc.Solaris.2.5.1.pkg.tgz less.290.i86pc.Solaris.2.5.1.pkg.tgz md5sum.1.00.i86pc.Solaris.2.5.1.pkg.tgz perl4.036.i86pc.Solaris.2.5.1.pkg.tgz tcl.7.5.p1.i86pc.Solaris.2.5.1.pkg.tgz tcsh.6.06.i86pc.Solaris.2.5.1.pkg.tgz tk.4.1.i86pc.Solaris.2.5.1.pkg.tgz 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. 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 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 The developer install choice may lack the packages as well. Check using pkginfo | more. Note: GNUg77 is a full GNUgcc with Fortran additions. Don't add GNUgcc if you are going to use GNUg77. It is compiled with (and includes) GNUgcc 2.7.2. 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.19.0, tcl.7.4, tk.4.0 Group: expect.5.20.18, tcl.7.5.p1, tk.4.1 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 ==================== 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 any directory. I recommend /var/tmp. Once you have the file local, (we will use GNUzip as the demonstration pkg), you unpack it with: For a pkg.tgz file: % gunzip -c GNUzip.1.2.4.SPARC.Solaris.2.5.pkg.tgz | tar -xvf - For a pkg.tar file: % 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: # Install the package onto the system: # pkgadd -d`pwd` GNUzip 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. 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. Removing packages ================= If you wish to install a new version of some software that is 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. Other commands ============== The full set of 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