I'm having a little trouble with a Solaris package build/install.
I have the following entries in my prototype file...
# Interfaces file - all versions installed and auto linked to installation type...
f none $OPTDIR/config/interfaces.DEV 0444 $OWNER $GROUP
f none $OPTDIR/config/interfaces.UA 0444 $OWNER $GROUP
f none $OPTDIR/config/interfaces.PROD 0444 $OWNER $GROUP
# Link interfaces to the correct installation type...
x none $OPTDIR 0755 $OWNER $GROUP
s none $OPTDIR/interfaces=config/interfaces.$PACKAGE_TYPE
PACKAGE_TYPE is determined by the request script at install time and takes a value of DEV, UA or PROD, so I then want to use that to link my interfaces file to the correct version during installation.
Unfortunately, after installation I get...
> ls -l interfaces
lrwxrwxrwx 1 root root 31 Oct 6 12:53 interfaces -> config/interfaces.$PACKAGE_TYPE
From what I can tell in the manual, both source and target paths in a symbolic link entry should expand variables, so does anyone have any idea why mine isn't?
---------- Post updated 10-07-10 at 12:50 PM ---------- Previous update was 10-06-10 at 06:16 PM ----------
After much messing about, I've determined that this...
s none $OPTDIR/interfaces=config/$PACKAGE_TYPE
works but this
s none $OPTDIR/interfaces=config/interfaces.$PACKAGE_TYPE
doesn't.
It seems this is another example of where the Solaris install works in a shell-like manner but doesn't have full shell functionality.
My solution has been to perform the linking with a postinstall script which works fine. However, that creates an extra file that the original install doesn't know about, so pkgrm doesn't uninstall the package cleanly. To overcome that one, I've added the following to prototype
s none $OPTDIR/interfaces=dummy
to register a file ready for uninstall, although the postinstall has changed the link's target.