Philip Brown has a script called pkgreloc.ksh that will relocate solaris packages. However, it does not *quite* work for Solaris 10. Now, I am not sure if this is a Solaris 10 thing or not  but before it really works, there is a slight change..

Let’s say you download a package (say for e.g syslogng-1.6.11-sol10-sparc-local) from www.sunfreeware.com. The packages there are designed to be installed in /usr/local. Well, /usr/local/ for me is an NFS file system and I may not necessarily want to install it. I’d rather install is somewhere else, say /export/software.

Using the pkgreloc.ksh, I tried relocating the package and installing it.

bash-3.00# ./pkgreloc.ksh syslogng-1.6.11-sol10-sparc-local /export/software/syslog-ng attempting to change BASEDIR from /usr/local to /export/software/syslog-ng Transferring package instance Transferring package instance You may now run 'pkgadd -d syslogng-1.6.11-sol10-sparc-local.new' bash-3.00# pkgadd -d syslogng-1.6.11-sol10-sparc-local.new The following packages are available: 1 SMCsyslng syslogng (sparc) 1.6.11 Select package(s) you wish to process (or 'all' to process all packages). (default: all) [?,??,q]: all Processing package instance from syslogng(sparc) 1.6.11 B. Scheidler Using as the package base directory. ## Processing package information. pkgadd: ERROR: bad entry read in pkgmap pathname=pkginfo problem=unable to read content info pkgadd: ERROR: unable to process pkgmap Installation of failed (internal error). No changes were made to the system.

The problem is in with this line in the pkgreloc.ksh script

mtime=`grep 'pkginfo' pkgmap | cut -f6 -d' '`

The above line expects to find 1 line with the word pkginfo in it. However, the pkgmap file has got 3 lines.

A quick look:

bash-3.00# mkdir q bash-3.00# pkgtrans syslogng-1.6.11-sol10-sparc-local q bash-3.00# cd q bash-3.00# grep 'pkginfo' pkgmap 1 f none doc/syslogng/solbuild/pkginfo 0644 bin bin 207 16772 1150183529 1 f none doc/syslogng/solbuild/pkginfo.in 0644 bin bin 210 17157 1150183529 1 i pkginfo 193 16400 1150183530 bash-3.00#

The intent of the code is to edit the 3rd line

1 i pkginfo 193 16400 1150183530

So edit the pkgreloc.ksh file and change the line to the following:

mtime=`grep 'i pkginfo' pkgmap | cut -f6 -d' '`

Re-run:

bash-3.00# ./pkgreloc.ksh syslogng-1.6.11-sol10-sparc-local /export/software/syslog-ng attempting to change BASEDIR from /usr/local to /export/software/syslog-ng Transferring package instance Transferring package instance You may now run 'pkgadd -d syslogng-1.6.11-sol10-sparc-local.new' bash-3.00# pkgadd -d syslogng-1.6.11-sol10-sparc-local.new The following packages are available: 1 SMCsyslng syslogng (sparc) 1.6.11 Select package(s) you wish to process (or 'all' to process all packages). (default: all) [?,??,q]: all Processing package instance from syslogng(sparc) 1.6.11 B. Scheidler Using as the package base directory. ## Processing package information. ## Processing system information. ## Verifying disk space requirements. ## Checking for conflicts with packages already installed. ## Checking for setuid/setgid programs. Installing syslogng as ## Installing part 1 of 1. /export/software/syslog-ng/doc/syslogng/AUTHORS /export/software/syslog-ng/doc/syslogng/COPYING /export/software/syslog-ng/doc/syslogng/ChangeLog /export/software/syslog-ng/doc/syslogng/INSTALL /export/software/syslog-ng/doc/syslogng/NEWS /export/software/syslog-ng/doc/syslogng/PORTS /export/software/syslog-ng/doc/syslogng/README /export/software/syslog-ng/doc/syslogng/README.spoof /export/software/syslog-ng/doc/syslogng/contrib/Makefile /export/software/syslog-ng/doc/syslogng/contrib/Makefile.am /export/software/syslog-ng/doc/syslogng/contrib/Makefile.in /export/software/syslog-ng/doc/syslogng/contrib/README /export/software/syslog-ng/doc/syslogng/contrib/fedora-packaging/syslog-ng.conf /export/software/syslog-ng/doc/syslogng/contrib/fedora-packaging/syslog-ng.init /export/software/syslog-ng/doc/syslogng/contrib/fedora-packaging/syslog-ng.logrotate /export/software/syslog-ng/doc/syslogng/contrib/fedora-packaging/syslog-ng.sysconfig /export/software/syslog-ng/doc/syslogng/contrib/init.d.HP-UX /export/software/syslog-ng/doc/syslogng/contrib/init.d.RedHat /export/software/syslog-ng/doc/syslogng/contrib/init.d.RedHat-7.3 /export/software/syslog-ng/doc/syslogng/contrib/init.d.SuSE /export/software/syslog-ng/doc/syslogng/contrib/init.d.SunOS /export/software/syslog-ng/doc/syslogng/contrib/init.d.solaris /export/software/syslog-ng/doc/syslogng/contrib/relogger.pl /export/software/syslog-ng/doc/syslogng/contrib/rhel-packaging/syslog-ng.conf /export/software/syslog-ng/doc/syslogng/contrib/rhel-packaging/syslog-ng.init /export/software/syslog-ng/doc/syslogng/contrib/rhel-packaging/syslog-ng.logrotate /export/software/syslog-ng/doc/syslogng/contrib/syslog-ng.conf.HP-UX /export/software/syslog-ng/doc/syslogng/contrib/syslog-ng.conf.RedHat /export/software/syslog-ng/doc/syslogng/contrib/syslog-ng.conf.SunOS /export/software/syslog-ng/doc/syslogng/contrib/syslog-ng.conf.doc /export/software/syslog-ng/doc/syslogng/contrib/syslog-ng.vim /export/software/syslog-ng/doc/syslogng/contrib/syslog2ng /export/software/syslog-ng/doc/syslogng/doc/Makefile /export/software/syslog-ng/doc/syslogng/doc/Makefile.am /export/software/syslog-ng/doc/syslogng/doc/Makefile.in /export/software/syslog-ng/doc/syslogng/doc/sgml/Makefile /export/software/syslog-ng/doc/syslogng/doc/sgml/Makefile.am /export/software/syslog-ng/doc/syslogng/doc/sgml/Makefile.in /export/software/syslog-ng/doc/syslogng/doc/sgml/syslog-ng.html.tar.gz /export/software/syslog-ng/doc/syslogng/doc/sgml/syslog-ng.txt /export/software/syslog-ng/doc/syslogng/doc/sgml/syslog-ng.xml /export/software/syslog-ng/doc/syslogng/doc/stresstest.sh /export/software/syslog-ng/doc/syslogng/doc/syslog-ng.8 /export/software/syslog-ng/doc/syslogng/doc/syslog-ng.conf.5 /export/software/syslog-ng/doc/syslogng/doc/syslog-ng.conf.demo /export/software/syslog-ng/doc/syslogng/doc/syslog-ng.conf.sample /export/software/syslog-ng/doc/syslogng/doc/syslog-ng.conf.solaris /export/software/syslog-ng/doc/syslogng/doc/syslog-ng.old.txt /export/software/syslog-ng/doc/syslogng/solbuild/CVS/Entries /export/software/syslog-ng/doc/syslogng/solbuild/CVS/Repository /export/software/syslog-ng/doc/syslogng/solbuild/CVS/Root /export/software/syslog-ng/doc/syslogng/solbuild/CVS/Tag /export/software/syslog-ng/doc/syslogng/solbuild/admin /export/software/syslog-ng/doc/syslogng/solbuild/pkginfo /export/software/syslog-ng/doc/syslogng/solbuild/pkginfo.in /export/software/syslog-ng/doc/syslogng/solbuild/pkgmaker.sh /export/software/syslog-ng/doc/syslogng/solbuild/prototype-maker.sh /export/software/syslog-ng/doc/syslogng/solbuild/rules /export/software/syslog-ng/doc/syslogng/solbuild/rules.conf /export/software/syslog-ng/doc/syslogng/solbuild/space /export/software/syslog-ng/doc/syslogng/solbuild/syslog-ng.init.d /export/software/syslog-ng/man/man5/syslog-ng.conf.5 /export/software/syslog-ng/man/man8/syslog-ng.8 /export/software/syslog-ng/sbin/syslog-ng [ verifying class ] Installation of was successful. bash-3.00#

Da das DVD Laufwerk in einer sparc hier defekt zu sein scheint, hab ich heut einen linux (ubuntu karmic) host als installationsserver für sun solaris 10 netzwerkinstallation konfiguriert:

0. Kopie der DVD

obacht: als root machen, damit die file modes auch wirklich alle stimmen…

# mkdir /var/tmp/solaris # rsync -av /media/cdrom/ /var/tmp/solaris/

1. rarpd

obacht: mac adresse korrekt abtippen hilft :)

# aptitude install rarpd # echo "00:03:ba:c0:ff:ee 192.168.2.23" >> /etc/ethers # /etc/init.d/rarpd restart

2. tftpd

obacht: es muss wohl die -hpa variante vom tftpd sein, mit dem tftp-paket gabs probleme.

# aptitude install tftpd-hpa # mkdir /var/lib/tftpboot # cd /var/lib/tftpboot # cp /var/tmp/solaris/Solaris_10/Tools/Boot/platform/sun4u/inetboot /var/lib/tftpboot/ # ln -s C0A80217 inetboot # /etc/init.d/tftpd-hpa restart

3. bootparamd

obacht: bei solaris braucht man die server-ip nicht vor :in und vor :rsize angeben, unter linux schon.
obacht: mit der IP adresse im bootparams file hat's hier nicht geklappt. also erst in /etc/hosts einen namen einfügen.

# echo "192.168.2.23 zun" >> /etc/hosts # aptitude install bootparamd # echo "zun root=192.168.2.132:/var/tmp/solaris/Solaris_10/Tools/Boot install=192.168.2.132:/var/tmp/solaris rootopts=192.168.2.132:rsize=32768 boottype=192.168.2.132:in" > /etc/bootparams # /etc/init.d/bootparamd restart

4. nfs

obacht: wenn der nfs-kernel-server verwendet wird: nfs v4 ausschalten:

in /etc/defaults/nfs-kernel-server:

... RPCNFSDCOUNT='8 --no-nfs-version 4' ...

obacht: angeblich hier unbedingt read-only exportieren, sonst macht der installer (angeblich) was kaputt, und die daten müssen neu von der DVD kopiert werden...

# echo /var/tmp/solaris 192.168.2.0/24(ro,no_root_squash,no_subtree_check) >> /etc/exports # /etc/init.d/nfs-kernel-server restart

5. client booten

Und dann auf der Sparc-Kiste:

stop-a
boot net