The message is delimited by double quotes "
, this is used for simple single line strings:
[ { type: install message: "Simple message" } ]
There are some tricks we have not mentioned yet about the pkg-* files that come in handy sometimes.
To display a message when the package is installed, place the message in pkg-message.
This capability is often useful to display additional installation steps to be taken after a pkg install
or pkg upgrade
.
|
pkg-message supports two formats:
A regular plain text file. Its message is only displayed on install.
If the file starts with “[” then it is considered to be a UCL file. The UCL format is described on libucl’s GitHub page.
Do not add an entry for pkg-message in pkg-plist. |
The format is the following. It should be an array of objects. The objects themselves can have these keywords:
message
The actual message to be displayed. This keyword is mandatory.
type
When the message should be displayed.
maximum_version
Only if type
is upgrade
.
Display if upgrading from a version strictly lower than the version specified.
minimum_version
Only if type
is upgrade
.
Display if upgrading from a version strictly greater than the version specified.
The maximum_version
and minimum_version
keywords can be combined.
The type
keyword can have three values:
install
The message should only be displayed when the package is installed.
remove
The message should only be displayed when the package is removed.
upgrade
the message should only be displayed during an upgrade of the package..
To preserve the compatibility with non UCL pkg-message files, the first line of a UCL pkg-message MUST be a single “[”, and the last line MUST be a single “]”. |
The message is delimited by double quotes "
, this is used for simple single line strings:
[ { type: install message: "Simple message" } ]
Multiline strings use the standard here document notation.
The multiline delimiter must start just after <<
symbols without any whitespace and it must consist of capital letters only.
To finish a multiline string, add the delimiter string on a line of its own without any whitespace.
The message from UCL Short Strings can be written as:
[ { type: install message: <<EOM Simple message EOM } ]
When a message only needs to be displayed on installation or uninstallation, set the type:
[ { type: remove message: "package being removed." } { type: install, message: "package being installed."} ]
When a port is upgraded, the message displayed can be even more tailored to the port’s needs.
[ { type: upgrade message: "Package is being upgraded." } { type: upgrade maximum_version: "1.0" message: "Upgrading from before 1.0 need to do this." } { type: upgrade minimum_version: "1.0" message: "Upgrading from after 1.0 should do that." } { type: upgrade maximum_version: "3.0" minimum_version: "1.0" message: "Upgrading from > 1.0 and < 3.0 remove that file." } ]
If the port needs to execute commands when the binary package is installed with pkg add
or pkg install
, use pkg-install.
It is run twice by pkg
, the first time as ${SH} pkg-install ${PKGNAME} PRE-INSTALL
before the package is installed, and the second time as ${SH} pkg-install ${PKGNAME} POST-INSTALL
after it has been installed.
$2
can be tested to determine which mode the script is being run in.
The PKG_PREFIX
environment variable is set to the package installation directory.
If using pkg-pre-install or pkg-post-install instead, the script is run only once (before or after installing the package), with the single argument ${PKGNAME}
.
Using pkg-pre-install.lua or pkg-post-install.lua will run a lua script instead of a shell script.
Lua scripts run by pkg
provide some extensions and a few restrictions, both explained in pkg-lua-script(5).
Using pkg-pre-install (or pkg-pre-install.lua) and pkg-post-install (or pkg-post-install.lua) is preferred to using pkg-install. |
These scripts are automatically added to the packing list.
These scripts are here to simplify package configuration after installation. They must not be abused to start services, stop services, or run any other commands that will modify the currently running system. |
These scripts execute when a package is removed.
The pkg-deinstall script is run twice by pkg delete
.
The first time as ${SH} pkg-deinstall ${PKGNAME} DEINSTALL
before the port is de-installed and the second time as ${SH} pkg-deinstall ${PKGNAME} POST-DEINSTALL
after the port has been de-installed.
$2
can be tested to determine which mode the script is being run in.
The PKG_PREFIX
environment variable is set to the package installation directory.
If using pkg-pre-deinstall or pkg-post-deinstall instead, the script is run only once (before or after deinstalling the package), with the single argument ${PKGNAME}
.
Using pkg-pre-deinstall.lua or pkg-post-deinstall.lua will run a lua script instead of a shell script.
Lua scripts run by pkg
provide some extensions and a few restrictions, both explained in pkg-lua-script(5).
Using pkg-pre-deinstall (or pkg-pre-deinstall.lua) and pkg-post-deinstall (or pkg-post-deinstall.lua) is preferred to using pkg-deinstall. |
These scripts are automatically added to the packing list.
These scripts are here to simplify cleanup after package deinstallation. They must not be abused to start services, stop services, or run any other commands that will modify the currently running system. |
All the names of pkg-* are defined using variables that can be changed in the Makefile if needed.
This is especially useful when sharing the same pkg-* files among several ports or when it is necessary to write to one of these files.
See writing to places other than WRKDIR
for why it is a bad idea to write directly into the directory containing the pkg-* files.
Here is a list of variable names and their default values.
(PKGDIR
defaults to ${MASTERDIR}
.)
Variable | Default value |
---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SUB_FILES
and SUB_LIST
SUB_FILES
and SUB_LIST
are useful for dynamic values in port files, such as the installation PREFIX
in pkg-message.
SUB_FILES
specifies a list of files to be automatically modified.
Each file in the SUB_FILES
list must have a corresponding file.in present in FILESDIR
.
A modified version will be created as ${WRKDIR}/file.
Files defined as a value of USE_RC_SUBR
are automatically added to SUB_FILES
.
For the files pkg-message, pkg-install, and pkg-deinstall, the corresponding Makefile variable is automatically set to point to the processed version.
SUB_LIST
is a list of VAR=VALUE
pairs.
For each pair, %%VAR%%
will be replaced with VALUE
in each file listed in SUB_FILES
.
Several common pairs are automatically defined: PREFIX
, LOCALBASE
, DATADIR
, DOCSDIR
, EXAMPLESDIR
, WWWDIR
, and ETCDIR
.
Any line beginning with @comment
followed by a space, will be deleted from resulting files after a variable substitution.
This example replaces %%ARCH%%
with the system architecture in a pkg-message:
SUB_FILES= pkg-message SUB_LIST= ARCH=${ARCH}
Note that for this example, pkg-message.in must exist in FILESDIR
.
Example of a good pkg-message.in:
Now it is time to configure this package. Copy %%PREFIX%%/shared/examples/putsy/%%ARCH%%.conf into your home directory as .putsy.conf and edit it.
Last modified on: September 23, 2024 by Fernando Apesteguía