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 must contain only
information that is vital to setup and
operation on FreeBSD, and that is unique to the port in
question.
Setup information should only be shown on initial install. Upgrade instructions should be shown only when upgrading from the relevant version.
Do not surround the messages with either whitespace or
lines of symbols (like ----------,
**********, or
==========). Leave the formatting to
pkg(8).
Committers have blanket approval to constrain existing messages to install or upgrade ranges using the UCL format specifications.
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:
messageThe actual message to be displayed. This keyword is mandatory.
typeWhen the message should be displayed.
maximum_versionOnly if type is
upgrade. Display if upgrading from a
version strictly lower than the version
specified.
minimum_versionOnly if type is
upgrade. Display if upgrading from a
version stictly greater than the version
specified.
The maximum_version and
minimum_version keywords can be
combined.
The type keyword can have three
values:
installThe message should only be displayed when the package is installed.
removeThe message should only be displayed when the package is removed.
upgradethe 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 Example 9.1, “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."
}
]When displaying a message on upgrade, it is important
to limit when it is being shown to the user. Most of the
time it is by using maximum_version to
limit its usage to upgrades from before a certain version
when something specific needs to be done.
All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/
Questions that are not answered by the
documentation may be
sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.