.\" man page for prt-get .\" original work by Johannes Winkelmann, jw at tks6 dot net .\" .\" extended in 2013 by Alan Mizrahi, alan at mizrahi dot com dot ve .\" and in 2023 by John McQuah, jmcquah at disroot dot org .\" .\" .PU .TH "prt-get" "8" "" "" "" .SH "NAME" .LP prt\-get \- an advanced package management tool to be used with pkgutils from CRUX (see http://www.crux.nu) .SH "SYNOPSIS" .B prt\-get command [options] .br .SH "DESCRIPTION" prt\-get is a package management tool which provides additional functionality to the CRUX package management system. It works with the local ports tree and is therefore fully compatible with ports(8) and pkgmk(8)/pkgadd(8)/pkgrm(8). It offers the following features: .PP .TP \ \ \ \(bu abstract ports installation/update from file system .TP \ \ \ \(bu install/update a list of packages with one command .TP \ \ \ \(bu list dependencies for a list of packages .TP \ \ \ \(bu show information about ports .TP \ \ \ \(bu search within the ports .PP What prt\-get basically does is build, install/upgrade, and remove packages, using pkgmk, pkgadd, and pkgrm. Additionally, you don't have be in the port's directory to call prt\-get. prt\-get will search for the respective port itself in a list of directories specified in /etc/prt\-get.conf. This allows you to just install or update a package, without caring where it actually is located on your file system. .PP prt\-get also lets you search for ports by name, find information about ports (without installing them of course), or print the dependencies of a port (as a space- or newline-separated list, or a formatted tree). Note that dependencies are no requirement for crux packages and therefore not always accurate. .PP prt\-get has a test mode so you can see what effect an install/update operation would have. Use the \-\-test switch for this (more details in the \fBOPTIONS\fP section below). .SH "RETURN VALUE" prt\-get returns 0 on success and a non-zero value otherwise (exact value -> meaning mapping to be determined...) .SH "COMMANDS" prt\-get uses so\-called commands, which always have to be the first non-option argument passed. This is very similar to .B cvs(1). [command] can be one of the following: .TP .B install [\-\-margs] [\-\-aargs] [\-\-log] [ ...] Install all packages in the listed order. Note that you can do this from any directory. .TP .B depinst [\-\-margs] [\-\-aargs] [\-\-log] [\-\-softdeps] [ ...] Install all packages given on the command line, including their dependencies. Note that already-installed packages will be left at their current version, even if out of date. prt\-get depinst behaves this way because all of its child pkgadd processes will \fBlack\fP the \-u flag, which is needed when updating an already-installed package. Passing the --softdeps flag tells \fBprt-get\fP to consider also the optional dependencies when sorting. The --softdeps flag does NOT affect the calculation of the minimal set of packages needed to satisfy the transaction; only hard dependencies are used when constructing this set. But if there are any optional dependency relationships among the ports in the resulting set, they will be respected when prt-get determines the sequence in which to build. .TP .B update [\-\-margs] [\-\-aargs] [\-\-log] [ ...] Update all packages listed in this order. Note: if the latest version of a package has acquired dependencies that were not needed by the currently-installed version and are not present on the system, the update command will not attempt to resolve this omission. prt-get update behaves this way because pkgadd invocations inherit the flag -u for every package in the transaction, causing an error if the package is not already installed. You can follow the CRUX mailing list or the IRC channels to stay informed of the situations where an update will require manual intervention, or filter the output of .B prt\-get quickdep $(prt\-get quickdiff) through \fBprt\-get isinst\fP to get a list of packages suitable for an \fBinstall\fP or \fBupdate\fP command. See the \fBEXAMPLES\fP section below for details. .TP .B remove [ ...] Remove packages listed in this order .TP .B sync [\-\-install\-root=] [collection1 ... collectionN] Reach out to remote servers defined in \fB/etc/ports\fP (or \fB/etc/ports\fP if \-\-install\-root is given), and bring the local ports collections up to date. The sync command processes all sync files whose suffix matches an executable file in \fB/etc/ports/drivers\fP, unless specific collections are passed as arguments, in which case only those collections are synchronized. If the same collection is listed in \fB/etc/ports\fP with different suffixes, then the matching drivers are called in lexographic order. This feature allows for multi-stage processing, e.g. if you want to apply local patches and then update the manifests. For further details on the ports system and the format of the {httpup,rsync,git} files, see \fBports(8)\fB. .TP .B sysup [\-\-softdeps] [\-\-nodeps] Update all installed packages which are outdated. Sorts by hard dependencies by default. Passing the --softdeps switch tells \fBprt\-get\fP to also consider optional dependencies when sorting. Passing the --nodeps switch tells prt-get not to sort by dependencies at all, for approximately the same effect as .B prt\-get update $(prt\-get quickdiff). As with an \fBupdate\fP command, the child \fBpkgadd\fP processes will inherit the \-u flag, so if a port has acquired new dependencies since its last successful build, those new dependencies will be omitted from the transaction (unless they happen to be installed for some other reason and are also in need of an update). See the \fBEXAMPLES\fP section for a way to automate the resolution of such omissions. Also see the .B lock and .B unlock commands to keep the currently installed versions, even if there are changes in the ports tree. If you want to update only diffs which have a lower version installed than the one in the ports tree, use the --prefer-higher option. .TP .B lock [...] Do not update these packages in a .B sysup operation .TP .B unlock [...] Remove lock from these packages .TP .B listlocked [-v|-vv] List names of packages which are locked. As always, .B -v will additionally show the version, and .B -vv also includes the description from the Pkgfile. Note that the .B -vv switch will slow down the operation remarkably. .TP .B diff [\-\-all] [\-\-prefer\-higher] [ ...] Show differences between installed packages and ports in the ports tree. If arguments are given, shows only differences for these packages, otherwise all differences are shown. It's also possible to use shell-like .B wildcards for the diff command. Make sure you escape where needed. Locked packages are only displayed if you use the --all switch. If you want to see only diffs which have a lower version installed than the one in the ports tree, use the --prefer-higher option. .TP .B quickdiff Print a simple list of packages which have a different version in the ports tree than what is installed. The output is sorted alphabetically, but you can generate a (larger) list sorted by dependencies using .B prt\-get quickdep $(prt\-get quickdiff). Note that the resulting list is usually a mix of installed and not-installed packages, so it must be filtered by .B prt\-get isinst before being passed as argument to prt\-get install or prt\-get update. See the .B EXAMPLES section below. If you want to see only diffs which have a lower version installed than the one in the ports tree, use the --prefer-higher option. .TP .B search [\-v|\-vv] [\-\-path] [\-\-regex] Search the ports tree for .B expr in their name .TP .B dsearch [\-v|\-vv] [\-\-path] [\-\-regex] Search the ports tree (both name and description) for the pattern .B expr (which can be a shell-like wildcard pattern or a regexp). The search in the description is not case sensitive. Note that this requires prt\-get to read every Pkgfile, which makes it rather slow. If you like searching by description, consider using the cache functionality, so you only have to read all the Pkgfiles after each update of the ports tree. .TP .B fsearch [\-\-full] [\-\-regex] Search the ports tree for .B pattern as file name in their footprint. When called without '--full', strips the directories from the file names before matching. Pattern can be a shell-like wildcard pattern (e.g. prt-get fsearch "*.h") or a regular expression (e.g. prt-get fsearch --regex 'liblz(o2|ma).*') .TP .B info Print available info for a port .TP .B path Print the path of a port .TP .B readme Print the port's README file if it exists; if set, uses $PAGER .TP .B depends [\-\-softdeps] [ ...] Print a recursive list of dependencies needed to install the packages passed as argument. It shows a list of the dependencies that were found in the ports tree, plus a list of the dependencies that could not be found. Pass the --softdeps flag if you want the sorting algorithm to consider optional dependencies too. .TP .B quickdep [\-\-softdeps] [ ...] Same output as \fBdepends\fP, but separated by spaces rather than newlines, and stripped of any dependencies that could not be found in the ports tree. Useful in case the list of dependencies is too large to fit on one screen, or if you don't want to filter out manually the ports that are invalid targets for installation. For example, instead of .B prt\-get depinst xorg-server you might micromanage the process as follows: .B for i in $(prt\-get quickdep xorg-server); do if prt\-get isinst $i 2>/dev/null; then prt\-get update \-fr $i; else prt\-get install $i; fi; done which ensures that the latest version of each dependency is built. Note: It might be useful to run .B prt\-get depends | grep \(dq\-\- missing packages\(dq as a first step, in order to ensure that your ports tree has everything needed for successful builds. .TP .B deptree [\-\-softdeps] Print a tree of the dependencies of the package .B . Pass the --softdeps flag to also show the installed packages that might have been eagerly linked, if they were present when .B (or its dependencies) were built. Subtrees already shown are marked with '-->' to save some space. In order to show them all, add the --all switch. .SH "" .TP .B dependent [\-\-recursive] [\-\-softdeps] [\-\-all] [\-\-tree] Print a list of ports whose "Depends on:" line contains .B (or its dependents, if --recursive was passed). Use the --softdeps flag to also search the "Optional:" lines for \fB\fP. By default, output is restricted to ports that are installed. To see all the dependencies, use the --all switch. Use --tree to get a nicely indented list. .TP .B dup [-v] [format] List ports which can be found in multiple directories configured in .B /etc/prt-get.conf Use the \fB\-v\fP switch to see a verbose report, which will show for each dup the port that takes precedence, and the port that is hidden (including full path and version info). The verbose switch is basically an alias for a particular combination of the recognized format symbols, namely .B '* %n\en %p1 %v1 precedes over\en %p2 %v2\en'. You can customize the output by passing a different format string, whose symbols will be replaced as follows. .TP \ \ \ \(bu %n -> name of the port .TP \ \ \ \(bu %p1 -> Full path (including name) to port taking precedence .TP \ \ \ \(bu %p2 -> Full path (including name) to port being hidden .TP \ \ \ \(bu %v1 -> Version of port taking precedence .TP \ \ \ \(bu %v2 -> Version of port being hidden .TP \ \ \ \(bu %M1 -> maintainer of port taking precedence .TP \ \ \ \(bu %M2 -> maintainer of port being hidden .TP \ \ \ \(bu %u1 -> URL of port taking precedence .TP \ \ \ \(bu %u2 -> URL of port being hidden .TP .B list [\-v|\-vv] [\-\-path] [\-\-regex] [filter] List ports available in the ports tree. It's basically the same as .B ports \-l but looks in all directories specified in .B /etc/prt\-get.conf. It's also possible to use shell-like .B wildcards for the list command. Make sure you escape where needed .TP .B printf [\-\-sort=] [\-\-filter=] Print formatted port list format string can contain variables, which are replaced like this: .TP \ \ \ \(bu %n -> name .TP \ \ \ \(bu %p -> path .TP \ \ \ \(bu %v -> version .TP \ \ \ \(bu %r -> release .TP \ \ \ \(bu %d -> description .TP \ \ \ \(bu %e -> dependencies .TP \ \ \ \(bu %P -> optional dependencies .TP \ \ \ \(bu %u -> URL .TP \ \ \ \(bu %M -> Maintainer .TP \ \ \ \(bu %R -> Readme ("yes"/"no") .TP \ \ \ \(bu %E -> pre-install script ("yes"/"no") .TP \ \ \ \(bu %O -> post-install script ("yes"/"no") .TP \ \ \ \(bu %l -> is locked ("yes"/"no") .TP \ \ \ \(bu %i -> "no" if not installed, "yes" if it's installed and up to date and "diff" if it's installed and a new version is in the ports tree. Use "\\n" and "\\t" to format your output (no additional format symbols suported). The optional format string2 can contain the same variables as format string1 and is used to sort the output. You can specify a .B wildcard filter to filter by package name. .TP .B listinst [\-v|\-vv] [\-\-regex] [\-\-depsort] [filter] List installed ports. It's basically the same as .B pkginfo \-i, but omits version when called without verbose (-v, -vv) switch. Plus it is notably faster in my tests. -v adds version information, -vv adds version and description. .B Warning: -vv will slow down the process because it requires prt-get to scan both the ports database and the ports tree. It's also possible to use shell-like .B wildcards for the listinst command. Make sure you escape where needed. By default it's sorted alphabetically; use the --depsort switch to sort by dependencies. .TP .B listorphans [\-v|\-vv|\-\-softdeps] List installed ports which do not appear in the "Depends on:" line of any other port currently installed. Pass the --softdeps flag to also exclude ports that are listed as optional dependencies of currently-installed ports. Output appears alphabetically separated by newlines, making it suitable for process substitution as shown in the .B EXAMPLES section below. Note that some core ports might be runtime dependencies despite their absence in the "Depends on:" line; see \fBPkgfile(5)\fP for an explanation of this practice. .TP .B isinst [ ...] Check whether each package given on the command line is installed. Output in the case of multiple arguments is separated by newlines, suitable for processing by awk or grep. Similar to .B pkginfo \-i|grep \-E '^(package1|package2|...)' but does not print the version information. This command has a return value of 0 if all packages given as argument are installed, otherwise a return value greater than 0. .TP .B current Show the currently-installed version of , or a message that is not installed. Unlike .B prt\-get isinst package1 package2, this command does \fBnot\fP accept more than one package as argument. Use .B pkginfo \-i| grep \-E '^(package1|package2|...)' to work around this limitation. .TP .B ls [\-\-path] List the contents of the port's directory .TP .B cat [] Print the file to stdout. If is not specified, 'Pkgfile' is used. If set, uses $PAGER. .TP .B edit [] Edit the file using the editor specified in the $EDITOR environment variable. If is not specified, 'Pkgfile' is used. .TP .B help Show a help screen .TP .B dumpconfig Dump the configuration to the current terminal .TP .B version Show the current version of prt-get .TP .B cache Create a cache file from the ports tree to be used by prt-get using the --cache option. Remember to run prt-get cache each time you update the ports tree. .SH "OPTIONS" The following options are primarily useful for install/update transactions. .TP .B \-g, \-\-group Stop install or update operation if one package fails (patch by Alan Mizrahi) .TP .B \-f, \-fi Force install; Implies 'pkgadd -f'; same as --aargs=-f .TP .B \-fr Force rebuild, Implies 'pkgmk -f'; same as --margs=-f .TP .B \-um Update md5sum, implies 'pkgmk -um'; same as --margs=-um .TP .B \-im Ignore md5sum, implies 'pkgmk -im'; same as --margs=-im .TP .B \-us Update signature, implies 'pkgmk -us'; same as --margs=-us .TP .B \-is Ignore signature, implies 'pkgmk -is'; same as --margs=-is .TP .B \-uf Update footprint, implies 'pkgmk -uf'; same as --margs=-uf .TP .B \-if Ignore footprint, implies 'pkgmk -if'; same as --margs=-if .TP .B \-ns No stripping, implies 'pkgmk -ns'; same as --margs=-ns .TP .B \-kw Keep working directory, implies 'pkgmk -kw'; same as --margs=-kw .TP .B \-\-margs="...", e.g. \-\-margs="\-im" additional arguments to be passed to pkgmk; note that \-d is already passed to pkgmk anyway .TP .B \-\-aargs="...", e.g. \-\-aargs="\-f" additional arguments to be passed to pkgadd .TP .B \-\-rargs="..." arguments to be passed to pkgrm; currently not used, implemented for future uses and consistency reasons .TP .B \-\-ignore= Don't install these packages, even if they're listed as dependencies .TP .B \-\-softdeps Consider optional dependencies when determining the order in which to build the packages passed as arguments (in a \fBdepinst\fP or \fBsysup\fP operation). Also affects the output of \fBdeptree\fP, \fBdependent\fP, and \fBlistorphans\fP. .TP .B \-\-cache Use cache file for this command .TP .B \-\-test Dry run, don't actually install anything, mostly interesting for .B prt\-get install, prt\-get update, prt\-get sysup .TP .B \-\-pre-install Execute pre-install script if it's there .TP .B \-\-post-install Execute post-install script if it's there .TP .B \-\-install-scripts Execute pre-install and post-install script if they're there The options --pre-install, --post-install, and --install-scripts offer a convenient way to temporarily override the prt-get.conf directive 'runscripts no', which was the historical default. Starting with CRUX 3.7, prt-get.conf is being shipped with 'runscripts yes'. To override this default at the command line, you have to pass the more cumbersome option --config-set=\(dqrunscripts no\(dq, or point prt-get to an alternative configuration file using --config=. (see below for the documentation of these options) .TP .B \-\-install-root= Use as root directory for your installation; allows you to install the requested packages onto a different directory than '/'. In daily usage, this option is not required; it's primarily interesting if you're developing an independent installation. Pre- and post-install scripts will not be executed if the target root directory lacks a copy of the ports tree. So if you're maintaining an installation on a volume mounted somewhere other than '/', it's not enough to have the line 'runscripts yes' in your prt-get.conf; you also have to ensure that the pre- and post-install scripts can be found in the same location relative to . The setting for --install-root determines which package database is used for reading/writing (so /var/lib/pkg/db must exist), and where the pkg.tar.?z archives get unpacked, but the relevant prt-get.conf and ports tree are those on the parent filesystem. Therefore it is not necessary for to contain its own copy of the ports tree (unless 'runscripts yes' is desired, as explained above). But each \fBpkgmk(8)\fP process will take place on the parent filesystem, inspecting \fIthe parent filesystem\fP's environment for information about installed ports and available shared libraries. The \fBpkgmk(8)\fP process might therefore draw the wrong conclusions about what functionality should be enabled for an installation to . If the parent filesystem is more richly populated than , with respect to installed packages, then the built package might exhibit breakage when \fBpkgadd\fP unpacks it into . When setting --install-root=, install or update commands might behave unexpectedly if /etc/pkgadd.conf exists and is different from /etc/pkgadd.conf . In order to preserve the \fBpkgadd.conf(5)\fP settings from the host system, append the option --aargs='-c /etc/pkgadd.conf' to your \fBprt-get install\fP command, or just copy the desired directives into /etc/pkgadd.conf . .TP .B \-\-log Write build output to log file. Basically a convenient alias for \fB\-\-config\-set=\(dqwritelog enabled\(dq\fP. Note that there is no similar alias allowing you to temporarily override the one configuration directive \(dqwritelog enabled\(dq; you have to resort to \fB\-\-config\-set=\(dqwritelog disabled\(dq\fP if that is your intention. .TP .B \-\-no-std-config Don't parse the default configuration file .TP .B \-\-config-prepend= Prepend to configuration .TP .B \-\-config-append= Append to configuration .TP .B \-\-config-set= Set in configuration, overriding configuration file .TP .B \-\-config= Use to read configuration directives, rather than /etc/prt-get.conf. .SH "" The following options are primarily useful for non-install (information-seeking) transactions, although some of them affect the behaviour of install/upgrade transactions as well. .TP .B \-v, \-vv (verbosity level) Show version of a port (\-v), or show both version and description (\-vv). Passing more than one of these options is equivalent to \-vv. .TP .B \-\-path Show path info for the ports found by a search or a dependency calculation .TP .B \-\-regex Interpret filter and search pattern as regular expression .TP .B \-\-prefer\-higher, \-ph Make prt-get parse the version strings and prefer the higher version, even if the one found in the ports tree is lower. Also used during a sysup operation. .TP .B \-\-strict\-diff, \-sd Override the 'preferhigher' configuration option. Equivalent to .B \-\-config\-set=\(dqpreferhigher no\(dq .SH "CONFIGURATION" .TP See man prt\-get.conf(5) .SH "EXAMPLES" .TP .B prt\-get install irssi Download, build and install irssi, with one simple command .TP .B prt\-get install paper yasm Install paper and yasm. Abort with an informative error message if either package is already installed, allowing you to issue a revised command. .TP .B prt\-get update \-fr openssh Update your current version of openssh, forcing a rebuild even if no version difference is detected. Useful if there was a major version change in one of its dependencies, and \fBrevdep openssh\fP indicates a broken package. :\-) .TP .B MISSLIBS=$(revdep \-vvv mpv | awk \-v FS=: '/(missing library)/ {print $3}'); [ \-n \(dq${MISSLIBS[@]}\(dq ] && for i in ${MISSLIBS[@]}; do prt\-get fsearch $i; done (adapted from a script by ppetrov^) Check for the presence of the runtime libraries needed by mpv. If any are absent, search the footprints to determine which ports provide the missing libraries. .TP .B prt\-get isinst $(prt\-get info ffmpeg | awk \-v FS=: '/^Optional/ {gsub(/,/,\(dq \(dq,$2); print $2}') | awk \-v FS=\(dq \(dq '/not installed/ {print $2}' Show all the optional dependencies of ffmpeg that are not currently installed. .TP .B prt\-get isinst $(prt\-get info ffmpeg | awk \-v FS=: '/^Optional/ {gsub(/,/,\(dq \(dq,$2); print $2}') | awk \-v FS=\(dq \(dq '/not installed/ {print $2}' | xargs prt\-get depinst \-\-group \-\-softdeps ffmpeg Extension of the above. Installs ffmpeg and all its optional dependencies, in the order that guarantees a maximal feature set. The --group flag tells \fBprt\-get\fP to abort the operation if any port fails to build, so as not to spend any resources on ffmpeg until all of its optional dependencies are in place. .TP .B prt\-get isinst $(if grep \-qE '^ffmpeg:' /etc/prt\-get.softdeps 2>/dev/null; then grep \-E '^ffmpeg:' /etc/prt\-get.softdeps | cut \-d: \-f2 | tr ',' ' '; else prt\-get info ffmpeg | awk \-v FS=: '/^Optional/ {gsub(/,/,\(dq \(dq,$2); print $2}'; fi) | awk \-v FS=\(dq \(dq '/not installed/ {print $2}' | xargs prt\-get depinst \-\-group \-\-softdeps ffmpeg Extension of the above (addressing a use case envisioned by ivandi). The user can create the file /etc/prt-get.softdeps containing a line like .B ffmpeg: x264 x265 and then the above command will perform a depinst --group operation to ensure that at least x264 and x265 (but not necessarily any of the other optional dependencies) are present before trying to build ffmpeg. In the absence of such a .softdeps config, the operation reverts to the behaviour of the preceding example (maximal feature set). Implementing Gentoo USE flags with such an awkward one-liner might draw criticism from advocates of the KISS principle. .TP .B prt\-get search \-\-regex '^(m|n|p)c.*' Return a list of all ports whose names start with "mc", "nc", or "pc" .TP .B prt\-get dsearch irc Return a list of all ports having "irc" in their name or description .TP .B prt\-get fsearch \-\-full \(dq/usr/etc/*\(dq | awk '/^Found in/ { $0=gensub(/Found in .*\e/(.+):/,\(dq\e\e1\(dq,\(dqg\(dq); print;}' Return a list of all ports that store their configs in /usr/etc. Omit the pipe to awk if you also want a detailed list of the files that matched. .TP .B comm \-13 <(ls /usr/ports/core) <(prt\-get listorphans) (based on comments from Romster and jue) Filter out the core ports from the list of orphans, in shells (like bash) that support process substitution .TP .B comm \-13 <(cat ~/.keepers <(ls /usr/ports/core) | sort) <(prt\-get listorphans) | xargs prt\-get remove (system-hosing extension of the above) A one-liner inspired by \fBpkg\-clean\fP and \fBpkgfoster\fP, but without the safeguard of interactivity. \fBDo not try this on a mission-critical system.\fP .TP .B prt\-get isinst $(prt\-get quickdep $(prt\-get quickdiff)) | awk '/not installed/ {print $2}' (adapted from a comment by Fun) After updating your ports tree, print out a list of dependencies that were not needed the last time you built your currently-installed ports, but are needed now by the newer versions of these ports. The output of this command is sorted by dependencies, therefore suitable for piping to \fBxargs prt\-get install\fP. .TP .B prt\-get isinst $(prt\-get quickdep $(prt\-get quickdiff)) | awk '/is installed/ {print $2}' Same as above, but only print the dependencies that are already installed. The output of this command is suitable for piping to \fBxargs prt\-get update\fP. .TP .B prt\-get isinst $(prt\-get quickdep i3) | awk '/not installed/ { print $2 }' | xargs prt\-get depinst \-\-softdeps \-\-test (inspired by a troubleshooting session with hestia) Assemble a set of install targets needed to build the i3 window manager; sort the list, respecting both hard and soft dependencies; then print how the installation would proceed. The awk filter in the middle is needed to prevent the command from failing with the error message "already installed". .TP .B comm \-3 <(prt\-get printf \(dq%i:%n %v\-%r\en\(dq | grep \-v ^no | cut \-d: \-f2 | sort) <(pkginfo \-i | sort) (inspired by a bug report from teodor) an alternative to \fBprt\-get diff\fP. In the output, left-justified lines show the version available in the repositories, while indented lines show the version installed. On a reasonably up-to-date system, the two processes in the above command will return many identical lines; these are suppressed by the -3 flag to \fBcomm(1)\fP. .TP .B for L in /var/log/pkgbuild/*.log; do P=${L%__*}; P=${P##*/}; VR=${L##*__}; VR=${VR%.log}; if ! prt\-get isinst $P >/dev/null; then mv $L /var/log/uninstalled/; elif [ \(dq$(prt\-get current $P)\(dq != \(dq$VR\(dq ]; then mv $L /var/log/oldbuild/; fi; done (based on a feature request by samsep10l) a command you can put into a script called by root's crontab, in order to mimic Slackware's tidy directory listings (the main logdir only contains build logs of the latest installed packages; other logs are moved to a separate directory). This particular command relies on declaring \(dqlogfile /var/log/pkgbuild/%n__%v-%r.log\(dq and \(dqwritelog enabled\(dq in \fBprt\-get.conf(5)\fP. Logs saved with a different filename pattern will require slight adjustments to the command. .TP .B prt\-get printf \(dq%p\et%u\en\(dq | awk '($1 ~ /\e/myrepo$/) { print $2 }' Print the upstream URL for each port in the collection \(dqmyrepo\(dq, perhaps as the first step in keeping your personal overlay up to date. .TP .B prt\-get printf \(dq%M\et%n\en\(dq | grep \-c ^Tim Count how many ports our most-overworked core team member claims responsibility for. .TP .B for u in $(prt\-get printf \(dq%M:%p/%n\en\(dq | grep \-i ^unmaintained | cut \-d: \-f2); do cd ${u%/*}; printf \(dq||%s ||\(dq ${u##*/}; git log ${u##*/} | head \-n 5 | awk '/^Date/ { $0=gensub(/^Date:\es+/,"","g"); printf(\(dq %s ||\en\(dq,$0); }'; cd \- >/dev/null; done Generate a table of unmaintained ports and the dates of their most recent commit, in PmWiki syntax (left-justified port names, centered dates). Requires that your repositories are synchronized using the \fBgit(1)\fP driver. Subsequent sorting by date may be done using \fBsort(1)\fP with the flags -k, -M, and -n (the appropriate key defs will depend on your locale). .TP .B prt\-get listinst \-\-depsort | xargs prt\-get install \-\-install\-root=/mnt Sort the list of installed packages by dependencies, and then install all those packages onto a backup filesystem (mounted at /mnt). If you have a customized pkgadd.conf that you want applied to this operation, either copy it to /mnt/etc where pkgadd will be looking for it, or pass the additional option \-\-aargs=\(dq\-c /etc/pkgadd.conf\(dq to the install command. .TP .B prt\-get list \-\-path \-\-regex '^xorg.*' | grep \-v \(dq/usr/ports/xorg\(dq Show the ports whose names begin with xorg, but which appear outside the xorg port collection. (At the time of writing, this command returned at least two font ports.) .SH "AUTHORS" Johannes Winkelmann , and others cited inline .SH "SEE ALSO" prt\-get.conf(5), prt\-cache(8), Pkgfile(5), pkgmk(8), pkgadd(8), ports(8)