.TH zpm-script 8 2019-03-06 "ZPM 0.7.0" .SH NAME zpm-script \- run, set, or list package scripts .SH SYNOPSIS .B zpm script [ .B -Fhql ] [ .BI -f " pkgfile" ] [ .BI -p " phase" ] [ .BI -R " rootdir" ] [ .BI -o " path" ] [ .BI -S " script" ] .I package [ .I arg ] .SH DESCRIPTION \fBzpm-script\fR runs, sets, or lists package scripts for a package. The package is a package id, which may be abbreviated. Despite the name, scripts can be any arbitrary program, though they are usually posix shell scripts. .PP zpm-script runs in one of three modes, run, list, and set. .SS Run Mode In run mode, a script for a given phase is run if it exists. It is not an error if there is no script for the given package and phase unless the \-F option is given. Standard output from the script will be redirected to /var/tmp/zpm-script.out, or as specified by the -o option. .PP The script itself will be extracted to /var/tmp/zpm-script, set as executable, and then run. The script is run with one or two arguments. The first argument is the package id being installed, removed, or configured. If given \fIarg\fR is passed to the script as a second argument. For a package version update (or downgrade) this is the previous version of the package. .PP If the script fails (i.e. any non-zero exit status), the output will be imported into the database and a note will be added. .TP An example script .EX #!/bin/sh echo example and test zpm stage script echo args: "$*" .EE .SS Set Mode Set mode will set the script for a given package and phase to the path given as an additional argument. If the -h is given, the script is interpreted as a hash to be set directly, and nothing is taken from the filesystem. .SS List Mode If a phase is given with \-p the script will be printed to stdout (or wherever \-o specifies). If no phase is given, a list of scripts for the package will be printed to stdout. .SH OPTIONS .TP .B \-l Run in list mode. .TP .B \-r Run in run mode. This is the default. .TP .B \-s Run in set mode. .TP .BI \-p phase Specify the script phase. This defaults to all phases for list mode, and configure for running or setting scripts. .TP .B \-n Do not create notes. Overrides other note options. .TP .B \-N Create notes only if the database is writable, otherwise send output to stdout. .TP .B \-a Make a note for all output, regardless of the exit status. .TP .B \-e Allow empty notes to be created for the \-a option. Normally if the output is empty and the script succeeded, the \-a option will not cause a note to be created. .TP .B \-f specify the package file to find packages in .TP .B \-h When setting a script, the script is taken as a hex encoded hash, rather than a path to a script. .TP .B \-q Run quietly. .TP .B \-v Send any output to stdout. .TP .BI \-R " rootdir" The current directory will be changed to \fIrootdir\fR before running the script. Defaults to '/'. No chroot is done before running the script, so scripts should be aware of this and generally use relative paths. If neccessary and possible the script itself can chroot. Calling chroot(2) requires superuser privileges, so it would be impossible to run the scripts as a non root user if chroot was attempted. .SH EXAMPLES .TP zpm script -f foo-1.0-1.zpm foo Run the configure script for the foo package found in the foo-1.0-1.zpm file. .TP zpm script foo Run the configure script for the (most recent) foo package found in the local database. .TP zpm script -l foo List all scripts for the foo package. .SH EXIT STATUS 0 on success non zero on failure .SH FILES /var/lib/zpm/local.db .SH ENVIRONMENT ZPMDB .SH AUTHOR Nathan Wagner .SH SEE ALSO .BR zpm (8)