PKG-LUA-SCRIPT(5) File Formats Manual PKG-LUA-SCRIPT(5) NAME lua scripts -- lua scripts that are run by pkg(8) DESCRIPTION pkg(8) run scripts at given phases of the process it is running. The phases are the following: pre-install: run before installing the files on the system. post-install: run after installing the files on the system. pre-deinstall: run before removing the files on the system. post-deinstall: run after removing the files on the system. A package can contain multiple scripts per phase, they will all be run in- side their own lua VM. In the particular case of an upgrade the scripts are run in the following order: 1. new pre-install 2. old pre-deinstall 3. replace binaries 4. new post-install Lua scripts are always run after shell scripts (of the same phase). API All the regular lua APIs are available with the exception of the following changes: io.open() has been modified to only open files relatively to the rootdir if specified by the -r argument passed to pkg(8). os.remove() has been modified to only remove files relatively to the rootdir if specified by the -r argument passed to pkg(8). os.rename() has been modified to only rename files relatively to the rootdir if specified by the -r argument passed to pkg(8). os.execute() has been disabled. os.exit() has been disabled. The following variables are available defined to any lua scripts: pkg_name name of the package. pkg_prefix PREFIX defined within the package at build time. pkg_rootdir represents the root directory where the package will be installed as specified by the -r arguments passed to pkg(8). pkg_metalog String containing the path to a mtree(5) METALOG file in which package file metadata (e.g., ownership, mode) should be recorded. This is typically used when installing packages as a non-root user. If no METALOG is configured, this variable is unset and is equal to nil. pkg_upgrade Boolean to inform the scripts that it is running or not in the con- text of an upgrade arg When the first line of a Lua script starts with "-- args:" followed by a space-separated list of tokens, those tokens are parsed and made available in the global arg table. This allows passing argu- ments to Lua scripts, should not be used by regular scripts. This is used internally for deferred triggers. The following functions have been added: out pkg.prefixed_path(in) prepend pkg_prefix to in if needed and returns it as out. pkg.print_msg(msg) send messages to the user that will be shown at the end of the pkg(8) process. pkg.filecmp(file1, file2) Compare 2 files, return 0 if the files are identical, 1 if the files are different and >1 if an error occurred pkg.metalog_copy(source, destination) Will create an entry in the "metalog" if one has been defined which will clone the metadata from the source and use it for a new entry for destination path. pkg.copy(source, destination) Copy a file preserving its attributes. return -1 if an error oc- curred st pkg.stat(file) return an object table st with the following fields: type, size, uid, gid pkg.symlink(source, destination) Create a symbolic link destination pointing at source pkg.exec(arguments) Will execute the command arguments expected in the following form: `{command, arg1, arg2, arg3, ...}' res pkg.readdir(path) Will return an ipair with the list of elements contained in the di- rectory the special directory `.' and `..' are be filtered out. SEE ALSO pkg_create(3), pkg_printf(3), pkg_repo_create(3), pkg_repos(3), pkg-key- words(5), pkg-repository(5), pkg-script(5), pkg-triggers(5), pkg.conf(5), pkg(8), pkg-add(8), pkg-alias(8), pkg-annotate(8), pkg-audit(8), pkg-au- toremove(8), pkg-check(8), pkg-clean(8), pkg-config(8), pkg-create(8), pkg- delete(8), pkg-fetch(8), pkg-help(8), pkg-info(8), pkg-install(8), pkg- key(8), pkg-lock(8), pkg-plugins(8), pkg-query(8), pkg-register(8), pkg- repo(8), pkg-repositories(8), pkg-rquery(8), pkg-search(8), pkg-set(8), pkg-shell(8), pkg-shlib(8), pkg-ssh(8), pkg-stats(8), pkg-triggers(8), pkg- unregister(8), pkg-update(8), pkg-updating(8), pkg-upgrade(8), pkg-ver- sion(8), pkg-which(8) FreeBSD 15.1 December 12, 2025 PKG-LUA-SCRIPT(5)
NAME | DESCRIPTION | API | SEE ALSO
Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=pkg-lua-script&sektion=5&manpath=FreeBSD+15.1-RELEASE+and+Ports>
