You might want to use an IPS package to provide a customized version of a file that is already delivered by another package. By default, only one IPS package can deliver a file to any particular location. To use an IPS package to deliver a custom version of a file that is delivered by another IPS package, make sure the following attributes are set on the file action:
The overlay=allow and preserve=true attributes are set on the file you want to replace.
The overlay=true attribute and the preserve attribute with any value are set on the replacement file.
See the descriptions of the overlay and preserve attributes in File Actions.
The version of the file with the overlay=true attribute replaces the version with the overlay=allow attribute, and the version of the file with the overlay=allow attribute is saved in /var/pkg/lost+found/.
For example, suppose you install a package named isvapp that has the following file action:
file opt/isvapp/isvconf path=opt/isvapp/isvconf owner=root group=bin mode=0644 \ overlay=allow preserve=true
The package installs the following file:
-rw-r--r-- 1 root bin 11358 Apr 17 18:44 /opt/isvapp/isvconf
You want a site-specific version of this file on all of your systems. You create a package named isvconf with the following file action to deliver the new version of the file:
file opt/isvapp/isvconf path=opt/isvapp/isvconf owner=root group=bin mode=0644 \ overlay=true preserve=renameold
After isvconf is installed, the following files are on the system:
$ ls -l /opt/isvapp/isvconf -rw-r--r-- 1 root bin 72157 Apr 17 18:47 /opt/isvapp/isvconf $ ls -l /var/pkg/lost+found/opt/isvapp total 24 -rw-r--r-- 1 root bin 11358 Apr 17 18:44 isvconf-20140417T184756Z
If you attempt to install another package, isvconf2 in this example, that would deliver a file with the same path, the installation fails with the following explanation:
Creating Plan (Checking for conflicting actions): - pkg install: The following packages all deliver file actions to opt/isvapp/isvconf: pkg://email@example.com,5.11:20140417T190405Z pkg://firstname.lastname@example.org,5.11:20140417T182316Z pkg://email@example.com,5.11:20140417T185420Z These packages may not be installed together. Any non-conflicting set may be, or the packages must be corrected before they can be installed.
You can deliver a new version of the file in an update of the package that delivered the first replacement file. After firstname.lastname@example.org is installed, the following files are on the system:
$ ls -l /opt/isvapp/isvconf* -rw-r--r-- 1 root bin 64064 Apr 17 18:52 /opt/isvapp/isvconf -rw-r--r-- 1 root bin 54365 Apr 17 18:47 /opt/isvapp/isvconf.old $ ls -l /var/pkg/lost+found/opt/isvapp total 24 -rw-r--r-- 1 root bin 11358 Apr 17 18:44 isvconf-20140417T184756Z
The existing file was saved in isvconf.old because both of the following two conditions exist:
The isvconf package specifies preserve=renameold.
The file was edited after email@example.com was installed and before firstname.lastname@example.org was installed.
The lost+found area has not changed and still contains the original file delivered by isvapp.