fix FS#1910 and 1930; introduce Alan's --group flag;
expand the prt-get man-page with more examples
This commit is contained in:
parent
38bb3aa21a
commit
b3404ff38e
@ -14,7 +14,7 @@ prt\-cache is a synonym for
|
||||
.B prt\-get --cache.
|
||||
It's perfectly the same as calling prt\-get --cache, just shorter. See
|
||||
.B man prt-get(8)
|
||||
for details on how to use prt-get
|
||||
for details on how to use prt-get.
|
||||
|
||||
.PP
|
||||
Even though there are almost restrictions on using prt-cache over prt-get,
|
||||
@ -38,7 +38,11 @@ ports tree),
|
||||
and
|
||||
.B prt-cache update
|
||||
will use the version from the ports tree anyway, so there's no real
|
||||
risk.
|
||||
risk. On the other hand,
|
||||
.B prt-cache depinst
|
||||
will use the outdated cache for dependency resolution, which might be a problem
|
||||
if the maintainer of your desired port has added dependencies since the last
|
||||
time you generated the cache.
|
||||
|
||||
.PP
|
||||
If you're using prt-cache, make sure to regenerate the cache by calling
|
||||
@ -48,9 +52,39 @@ each time you make changes to the ports tree!
|
||||
.PP
|
||||
To create a cache, just invoke
|
||||
.B prt-get cache.
|
||||
Make sure you have the right permissions to do this
|
||||
Make sure you have the right permissions to do this.
|
||||
|
||||
.SH "CACHE FORMAT"
|
||||
|
||||
.PP
|
||||
The cache is a flat-text file, typically found at /var/lib/pkg/prt-get.cache.
|
||||
The first line records the cache format identifier, to prevent prt-cache from
|
||||
performing an operation using an incompatible cache format. The rest of the
|
||||
file consists of 13 lines per port: name, absolute path to the repository,
|
||||
version, release, description, dependencies, URL, optional dependencies,
|
||||
maintainer, readme, pre-install, post-install, and a blank (separator) line. If
|
||||
multiple ports with the same name appear among the active collections (as
|
||||
reported by \fBprt\-get dup\fP), only the first port will be listed in the
|
||||
cache.
|
||||
|
||||
.PP
|
||||
Suppose you want to create a dependency map, like the one used by the setup
|
||||
program when installing from a CRUX ISO. One way to do so is to run \fBprt\-get
|
||||
cache\fP, and then process the resulting file with \fBawk(1)\fP:
|
||||
|
||||
.B
|
||||
tail -n +2 /var/lib/pkg/prt-get.cache | awk '((NR-1) % 13 < 2) { printf("%s : ",$0) } (NR %13 == 6) { gsub(/,/," ",$0); printf("%s\\n",$0) }' | awk -F: '/ \\/usr\\/ports\\/(core|opt|xorg) / { printf("%-25s : %s\\n",$1,$3) }' | tee -a setup.dependencies
|
||||
|
||||
.PP
|
||||
A slight variation will also extract all the optional dependencies of each
|
||||
port, in case you want to mimic Gentoo USE flags by editing the resulting file
|
||||
and referring to it in a wrapper script, as illustrated by the ffmpeg example
|
||||
in the \fBprt\-get\fP(8) man-page.
|
||||
|
||||
.B
|
||||
tail -n +2 /var/lib/pkg/prt-get.cache | awk '((NR-1) % 13 == 0) { printf("%s : ",$0) } (NR %13 == 8) { gsub(/,/," ",$0); printf("%s\\n",$0) }' | sudo tee -a /etc/prt-get.softdeps
|
||||
|
||||
.SH "AUTHORS"
|
||||
Johannes Winkelmann <jw@tks6.net>
|
||||
Johannes Winkelmann <jw@tks6.net>, John McQuah <jmcquah@disroot.org>
|
||||
.SH "SEE ALSO"
|
||||
prt-get(8), pkgmk(8) pkgadd(8), ports(8)
|
||||
|
512
doc/prt-get.8
512
doc/prt-get.8
@ -1,7 +1,8 @@
|
||||
.\" man page for prt-get
|
||||
.\" Johannes Winkelmann, jw@tks6.net
|
||||
.\" original work by Johannes Winkelmann, jw at tks6 dot net
|
||||
.\"
|
||||
.\" my first man page, so forgive me for the errors :-)
|
||||
.\" 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" "" "" ""
|
||||
@ -14,9 +15,9 @@ pkgutils from CRUX (see http://www.crux.nu)
|
||||
.br
|
||||
.SH "DESCRIPTION"
|
||||
prt\-get is a package management tool which provides additional
|
||||
functionality to crux' package management system. It works with the
|
||||
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). It offers the following features:
|
||||
pkgmk(8)/pkgadd(8)/pkgrm(8). It offers the following features:
|
||||
|
||||
.PP
|
||||
.TP
|
||||
@ -41,8 +42,8 @@ search within the ports
|
||||
|
||||
.PP
|
||||
|
||||
What prt\-get basically does is installing and upgrading packages, using
|
||||
pkgmk and pkgadd. Additionally, you don't have be in the port's
|
||||
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
|
||||
@ -50,26 +51,24 @@ it actually is located on your file system.
|
||||
|
||||
.PP
|
||||
|
||||
prt\-get also offers some features like searching ports by name,
|
||||
showing information about ports (without installing them of course)
|
||||
and can list the dependencies listed in the Pkgfile, and provide a
|
||||
complete dependency list for a port. Note that dependencies are no
|
||||
requirement for crux packages and therefore not always accurate. There's
|
||||
a possiblity to use an external dependency map to get dependency
|
||||
listings for ports which don't provide them in their Pkgfile.
|
||||
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 (see also:
|
||||
OPTIONS)
|
||||
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
|
||||
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:
|
||||
@ -78,32 +77,49 @@ non-option argument passed. This is very similar to
|
||||
.TP
|
||||
.B install [\-\-margs] [\-\-aargs] [\-\-log] <package1> [<package2> ...]
|
||||
install all packages in the listed order. Note that you can do this
|
||||
from any directory
|
||||
from any directory.
|
||||
|
||||
.TP
|
||||
.B depinst [\-\-margs] [\-\-aargs] [\-\-log] <package1> [<package2> ...]
|
||||
install all packages in the listed order including their dependencies.
|
||||
Note that outdated packages won't be updated.
|
||||
|
||||
.TP
|
||||
.B grpinst [\-\-margs] [\-\-aargs] [\-\-log] <package1> [<package2> ...]
|
||||
install all packages in the listed order, but stop if installation of
|
||||
one package fails. This can be used to install packages where package2
|
||||
depends on package1
|
||||
.B depinst [\-\-margs] [\-\-aargs] [\-\-log] [\-\-softdeps] <package1> [<package2> ...]
|
||||
install all packages given on the command line, including their dependencies.
|
||||
Passing the --softdeps flag tells \fBprt-get\fP to consider also the optional
|
||||
dependencies when sorting. 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.
|
||||
|
||||
.TP
|
||||
.B update [\-\-margs] [\-\-aargs] [\-\-log] <package1> [<package2> ...]
|
||||
update all packages listed in this order
|
||||
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 <package1> [<package2> ...]
|
||||
remove packages listed in this order
|
||||
|
||||
.TP
|
||||
.B sysup [\-\-nodeps]
|
||||
Update all installed packages which are outdated. Sorts by dependencies
|
||||
by default. If you don't want prt-get to resolve the dependencies, use
|
||||
the --nodeps switch. Also see the
|
||||
.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
|
||||
@ -133,11 +149,11 @@ also includes the description from the Pkgfile. Note that the
|
||||
switch will slow down the operation remarkably.
|
||||
|
||||
.TP
|
||||
.B diff [--all] [<package1> <package2> ...]
|
||||
.B diff [\-\-all] [\-\-prefer\-higher] [<package1> <package2> ...]
|
||||
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
|
||||
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
|
||||
@ -147,37 +163,44 @@ the ports tree, use the --prefer-higher option.
|
||||
.TP
|
||||
.B quickdiff
|
||||
prints a simple list of packages which have a different version in the
|
||||
ports tree than what is installed. This is meant as an input for
|
||||
.B prt\-get update,
|
||||
so you can update all ports on your system with one simple command. If you want
|
||||
to see only diffs which have a lower version installed than the one in
|
||||
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]<expr>
|
||||
.B search [\-v|\-vv] [\-\-path] [\-\-regex] <expr>
|
||||
Search the ports tree for
|
||||
.B expr
|
||||
in their name
|
||||
|
||||
.TP
|
||||
.B dsearch [\-v|\-vv] [--path] [--regex]<expr>
|
||||
Search the ports tree for
|
||||
.B dsearch [\-v|\-vv] [\-\-path] [\-\-regex] <expr>
|
||||
Search the ports tree (both name and description) for the pattern
|
||||
.B expr
|
||||
in both name and description. 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 this, consider using the cache
|
||||
functionality, so you only have to spend this time once after updating
|
||||
the ports tree has been updated.
|
||||
(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 this,
|
||||
consider using the cache functionality, so you only have to spend this
|
||||
time once after updating the ports tree has been updated.
|
||||
|
||||
.TP
|
||||
.B fsearch [--full] [--regex] <pattern>
|
||||
.B fsearch [\-\-full] [\-\-regex] <pattern>
|
||||
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; this behaviour
|
||||
will change in prt-get 0.6, where full path search will be
|
||||
default. Pattern can be a shell-like wildcard pattern (e.g prt-get
|
||||
fsearch "*.h") or regexps.
|
||||
will change in prt-get 0.6, where full path search will be the
|
||||
default. 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
|
||||
@ -193,34 +216,51 @@ Print the path of a port
|
||||
Print the port's README file if it exists; if set, uses $PAGER
|
||||
|
||||
.TP
|
||||
.B depends <package1> [<package2> ...]
|
||||
print a recursive list of dependencies to install the packages passed
|
||||
as argument. It shows a list with ports which are found, plus a list
|
||||
of ports which are missing
|
||||
.B depends [\-\-softdeps] <package1> [<package2> ...]
|
||||
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 <package1> [<package2> ...]
|
||||
print a simple list of recursive dependencies for all the ports passed
|
||||
as argument in a simple format to be used by
|
||||
.B prt\-get install
|
||||
to make an install including dependencies
|
||||
.B Does not display dependencies which are not in the ports tree
|
||||
.B quickdep [\-\-softdeps] <package1> [<package2> ...]
|
||||
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 <package1> | 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 dependent <package>
|
||||
print a list of package which depend on
|
||||
.B package.
|
||||
|
||||
Usually shows dependent packages which are installed. To see all dependencies,
|
||||
add the --all switch; use --recursive to get a recursive list (without
|
||||
duplication), and --tree to get a nicely indented one
|
||||
|
||||
.TP
|
||||
.B deptree <package>
|
||||
.B deptree [\-\-softdeps] <package>
|
||||
print a tree of the dependencies of the package
|
||||
.B package.
|
||||
Subtrees already shown are marked with '-->' to save some space, in
|
||||
order to show them all, add the --all switch
|
||||
.B <package>.
|
||||
Pass the --softdeps flag to also show the installed packages that mention
|
||||
.B <package>
|
||||
as an optional dependency.
|
||||
Subtrees already shown are marked with '-->' to save some space. In
|
||||
order to show them all, add the --all switch.
|
||||
|
||||
.SH ""
|
||||
|
||||
.TP
|
||||
.B dependent [\-\-softdeps] <package>
|
||||
print a list of ports which have
|
||||
.B <package>
|
||||
in their "Depends on:" line. Use the --softdeps flag to also search the
|
||||
"Optional:" lines for \fB<package>\fP.
|
||||
|
||||
By default, output is restricted to ports that are installed. To see all hard
|
||||
dependencies, add the --all switch; use --recursive to get a recursive list
|
||||
(without duplication), and --tree to get a nicely indented one.
|
||||
|
||||
.TP
|
||||
.B dup [-v] [format]
|
||||
@ -252,19 +292,18 @@ specified formats. The following symbols are currently replaced:
|
||||
|
||||
|
||||
.TP
|
||||
.B list [\-v|\-vv] [filter] [--path] [--regex]
|
||||
.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
|
||||
It's also possible to use shell-like
|
||||
.B wildcards
|
||||
for the list command. Make sure you escape where needed
|
||||
|
||||
.TP
|
||||
.B printf <format string1> [\-\-sort=<format string2>] [\-\-filter=<filter>]
|
||||
Print formated port list format string can contain variables, which
|
||||
Print formatted port list format string can contain variables, which
|
||||
are replaced like this:
|
||||
.TP
|
||||
\ \ \ \(bu
|
||||
@ -292,11 +331,11 @@ are replaced like this:
|
||||
|
||||
.TP
|
||||
\ \ \ \(bu
|
||||
%u \-> URL
|
||||
%P -> optional dependencies
|
||||
|
||||
.TP
|
||||
\ \ \ \(bu
|
||||
%P -> Packager
|
||||
%u \-> URL
|
||||
|
||||
.TP
|
||||
\ \ \ \(bu
|
||||
@ -332,7 +371,7 @@ to filter by package name.
|
||||
|
||||
|
||||
.TP
|
||||
.B listinst [\-v|\-vv] [filter] [--regex] [--depsort]
|
||||
.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
|
||||
@ -341,41 +380,55 @@ 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
|
||||
It's also possible to use shell-like
|
||||
.B wildcards
|
||||
for the listinst command. Make sure you escape where needed. Finally, by
|
||||
default it's sorted alphabetically; use the \-\-depsort switch to sort by
|
||||
dependencies
|
||||
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]
|
||||
List installed ports which have no dependent packages
|
||||
|
||||
|
||||
.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 <package>
|
||||
Check whether a package is installed. The same as
|
||||
.B pkginfo \-i|grep ^package
|
||||
.TP
|
||||
.B isinst <package1> [<package2> ...]
|
||||
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 <package>
|
||||
Prints out the version of the currently installed package
|
||||
|
||||
Shows the currently-installed version of <package>, or a message
|
||||
that <package> 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] <package>
|
||||
.B ls [\-\-path] <package>
|
||||
Prints out a listing of the port's directory
|
||||
|
||||
.TP
|
||||
.B cat <package> [<file>]
|
||||
Prints out the file to stdout. If <file> is not specified, 'Pkgfile' is used. If set, uses $PAGER
|
||||
Prints out the file to stdout. If <file> is not specified, 'Pkgfile' is used. If set, uses $PAGER.
|
||||
|
||||
.TP
|
||||
.B edit <package> <file>
|
||||
.B edit <package> [<file>]
|
||||
Edit the file using the editor specified in the $EDITOR environment variable.
|
||||
If <file> is not specified, 'Pkgfile' is used
|
||||
If <file> is not specified, 'Pkgfile' is used.
|
||||
|
||||
|
||||
.TP
|
||||
@ -388,60 +441,85 @@ Dump the configuration to the current terminal
|
||||
|
||||
.TP
|
||||
.B version
|
||||
Shows the current version of prt\-get
|
||||
Shows 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
|
||||
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 -f, -i
|
||||
.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
|
||||
.B \-fr
|
||||
Force rebuild, Implies 'pkgmk -f'; same as --margs=-f
|
||||
|
||||
.TP
|
||||
.B -um
|
||||
.B \-um
|
||||
Update md5sum, implies 'pkgmk -um'; same as --margs=-um
|
||||
|
||||
.TP
|
||||
.B -im
|
||||
.B \-im
|
||||
Ignore md5sum, implies 'pkgmk -im'; same as --margs=-im
|
||||
|
||||
.TP
|
||||
.B -us
|
||||
.B \-us
|
||||
Update signature, implies 'pkgmk -us'; same as --margs=-us
|
||||
|
||||
.TP
|
||||
.B -is
|
||||
.B \-is
|
||||
Ignore signature, implies 'pkgmk -is'; same as --margs=-is
|
||||
|
||||
.TP
|
||||
.B -uf
|
||||
.B \-uf
|
||||
Update footprint, implies 'pkgmk -uf'; same as --margs=-uf
|
||||
|
||||
.TP
|
||||
.B -if
|
||||
.B \-if
|
||||
Ignore footprint, implies 'pkgmk -if'; same as --margs=-if
|
||||
|
||||
.TP
|
||||
.B -ns
|
||||
.B \-ns
|
||||
No stripping, implies 'pkgmk -ns'; same as --margs=-ns
|
||||
|
||||
.TP
|
||||
.B -kw
|
||||
.B \-kw
|
||||
Keep working directory, implies 'pkgmk -kw'; same as --margs=-kw
|
||||
|
||||
.TP
|
||||
.B --ignore=<package1,package2,...>
|
||||
Don't install those packages, even if they're listed as dependency
|
||||
.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=<package1,package2,...>
|
||||
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
|
||||
@ -450,7 +528,7 @@ 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 grpinst, prt\-get update, prt\-get sysup
|
||||
.B prt\-get install, prt\-get update, prt\-get sysup
|
||||
|
||||
.TP
|
||||
.B \-\-pre-install
|
||||
@ -464,6 +542,28 @@ Execute post-install script if it's there
|
||||
.B \-\-install-scripts
|
||||
Execute pre-install and post-install script if they're there
|
||||
|
||||
.TP
|
||||
.B \-\-install-root=<dir>
|
||||
Use <dir> 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.
|
||||
|
||||
The setting for --install-root determines which package database is used for
|
||||
reading/writing (so <dir>/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 <dir> to contain
|
||||
its own copy of the ports tree, or even a copy of prt-get.conf.
|
||||
However, if <dir>/etc/pkgadd.conf exists and is different from /etc/pkgadd.conf,
|
||||
then install or update commands might behave unexpectedly. 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 <dir>/etc/pkgadd.conf .
|
||||
|
||||
.TP
|
||||
.B \-\-log
|
||||
Write build output to log file
|
||||
|
||||
.TP
|
||||
.B \-\-no-std-config
|
||||
Don't parse the default configuration file
|
||||
@ -480,62 +580,41 @@ Append <string> to configuration
|
||||
.B \-\-config-set=<string>
|
||||
Set <string> in configuration, overriding configuration file
|
||||
|
||||
.TP
|
||||
.B \-\-config=<file>
|
||||
Use alternative configuration file to read ports directories from
|
||||
|
||||
.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
|
||||
verbose and more verbose, relevant for
|
||||
.B prt\-get search, prt\-get list
|
||||
verbose shows version of a port, more verbose shows version and
|
||||
description (if available)
|
||||
(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; used in 'search', 'dsearch', 'list' and 'depends'
|
||||
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 \-\-margs="...", e.g. \-\-margs="\-im"
|
||||
arguments to be passed to pkgmk, relevant for
|
||||
.B prt\-get install, prt\-get grpinst, prt\-get update
|
||||
note that \-d is already passed to pkgmk anyway
|
||||
|
||||
.TP
|
||||
.B \-\-aargs="...", e.g. \-\-aargs="\-f"
|
||||
arguments to be passed to pkgadd, relevant for
|
||||
.B prt\-get install, prt\-get grpinst, prt\-get update
|
||||
|
||||
.TP
|
||||
.B \-\-rargs="..."
|
||||
arguments to be passed to pkgrm; currently not used, implemented for
|
||||
future uses and consistency reasons
|
||||
|
||||
.TP
|
||||
.B \-\-prefer-higher, -ph
|
||||
.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. Will influence diff,
|
||||
quickdiff and sysup.
|
||||
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
|
||||
.B \-\-strict\-diff, \-sd
|
||||
Override the 'preferhigher' configuration option. Equivalent to
|
||||
.B \-\-config\-set=\(dqpreferhigher no\(dq
|
||||
|
||||
|
||||
.TP
|
||||
.B \-\-config=<file>
|
||||
Use alternative configuration file to read ports directories from
|
||||
|
||||
.TP
|
||||
.B \-\-install-root=<dir>
|
||||
Use <dir> as root directory for your installation; allows to install to
|
||||
a different directory than '/'. In daily usage, this option is not
|
||||
required; helpful if you're developing an independent installation.
|
||||
|
||||
.TP
|
||||
.B \-\-log
|
||||
Write build output to log file
|
||||
|
||||
.SH "CONFIGURATION"
|
||||
.TP
|
||||
@ -544,36 +623,121 @@ See man prt\-get.conf(5)
|
||||
.SH "EXAMPLES"
|
||||
.TP
|
||||
.B prt\-get install irssi
|
||||
download, build and install irssi, with one simple command
|
||||
Download, build and install irssi, with one simple command
|
||||
|
||||
.TP
|
||||
.B prt\-get install indent mplayer
|
||||
install indent and mplayer
|
||||
.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 bmake cmake
|
||||
Update bmake and cmake. Abort with an informative error message if either package is not yet
|
||||
installed, allowing you to issue a revised command.
|
||||
|
||||
.TP
|
||||
.B prt\-get update openssh
|
||||
update your current version of openssh :\-)
|
||||
.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 info kdelibs
|
||||
show info about kdelibs
|
||||
.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 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 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 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 ^Tim | wc -l
|
||||
Count how many ports our most-overworked core team member claims responsibility for.
|
||||
|
||||
.TP
|
||||
.B prt\-get search icq
|
||||
Search all ports containing 'icq' in their name
|
||||
.B comm -13 <(prt\-get depends firefox-bin |tail -n +2 |sort) <(prt\-get depends firefox |tail -n +2 |sort)
|
||||
Find the build-time dependencies of firefox. Runtime dependencies would also appear in the list generated by
|
||||
the first process substitution, and \fBcomm -13\fP will suppress what the two lists have in common.
|
||||
|
||||
.TP
|
||||
.B prt\-get grpinst \-\-test `prt\-get quickdep kdenetwork`
|
||||
Show what would happen if you installed all packages needed for
|
||||
kdenetwork (test mode). Remove \-\-test to install kdenetwork and all
|
||||
it's dependencies. Remember that grpinst stops installing when one
|
||||
installing of one package fails
|
||||
.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 update `prt\-get quickdiff`
|
||||
Update all packages where a different version is in the ports tree
|
||||
.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 <jw@tks6.net>
|
||||
Johannes Winkelmann <jw@tks6.net>, and others cited inline
|
||||
.SH "SEE ALSO"
|
||||
prt\-get.conf(5), prt\-cache(8), pkgmk(8) pkgadd(8), ports(8)
|
||||
prt\-get.conf(5), prt\-cache(8), Pkgfile(5), pkgmk(8), pkgadd(8), ports(8)
|
||||
|
@ -1,6 +1,3 @@
|
||||
j2sdk: j2re
|
||||
lesstif: openmotif
|
||||
postfix: sendmail
|
||||
exim: sendmail
|
||||
qmail: sendmail
|
||||
masqmail: sendmail
|
||||
rust-bin: rust
|
||||
|
@ -1,6 +1,8 @@
|
||||
# prt-get(8), prt-cache(8) completion by Johannes Winkelmann, jw@tks6.net
|
||||
# problems: options ending on = should not add a space afterwards
|
||||
#
|
||||
# 12.03.2023: add the flag --softdeps
|
||||
# 28.08.2013: use 'install --group' instead of 'grpinst' (patch by Alan)
|
||||
# 07.07.2002: use prt-get listinst (from 0.3.1pre1) instead of pkginfo
|
||||
# 06.07.2002: first version
|
||||
|
||||
@ -14,7 +16,7 @@ _prt-get()
|
||||
|
||||
if [ $COMP_CWORD -eq 1 ]; then
|
||||
COMPREPLY=( $( compgen -W ' \
|
||||
install depinst update grpinst help \
|
||||
install depinst update help \
|
||||
version readme list info path \
|
||||
search dsearch fsearch printf cache \
|
||||
dependent sysup current lock unlock \
|
||||
@ -27,7 +29,7 @@ _prt-get()
|
||||
if [ $COMP_CWORD '>' 1 ]; then
|
||||
if [[ "$cur" != -* ]]; then
|
||||
case ${COMP_WORDS[1]} in
|
||||
"install" | "depinst" | "grpinst" | "path" | "dependent" | \
|
||||
"install" | "depinst" | "path" | "dependent" | \
|
||||
"depends" | "quickdep" | "info" | "readme" | \
|
||||
"ls" | "isinst" | "deptree" )
|
||||
if [ -f /var/lib/pkg/prt-get.cache ]; then
|
||||
@ -65,12 +67,12 @@ _prt-get()
|
||||
esac
|
||||
else
|
||||
case ${COMP_WORDS[1]} in
|
||||
"install" | "update" | "groupinst")
|
||||
"install" | "update" | "depinst" )
|
||||
COMPREPLY=( $( compgen -W '--config= --cache \
|
||||
--pre-install \
|
||||
--post-install \
|
||||
--install-scripts \
|
||||
--log --test \
|
||||
--log --test --group \
|
||||
--config \
|
||||
--config-append= \
|
||||
--config-prepend= \
|
||||
@ -78,7 +80,15 @@ _prt-get()
|
||||
--aargs= --margs= \
|
||||
--rargs= \
|
||||
--install-root=' \
|
||||
-- $cur ) )
|
||||
-- $cur ) )
|
||||
;;
|
||||
"depends" | "quickdep" | "deptree" | "listorphans" )
|
||||
COMPREPLY=( $( compgen -W '--softdeps' -- $cur ) )
|
||||
;;
|
||||
"dependent" )
|
||||
COMPREPLY=( $( compgen -W '--softdeps \
|
||||
--recursive \
|
||||
--tree' -- $cur ) )
|
||||
;;
|
||||
"list" | "search" | "dsearch" )
|
||||
COMPREPLY=( $( compgen -W '-v -vv --cache \
|
||||
|
300
misc/prt-get_complete_zsh
Normal file
300
misc/prt-get_complete_zsh
Normal file
@ -0,0 +1,300 @@
|
||||
#compdef prt-get prt-cache
|
||||
|
||||
_commands=(
|
||||
help:'show this help'
|
||||
version:'show the current version'
|
||||
list:'show a list of available ports'
|
||||
printf:'print formatted list of available ports'
|
||||
listinst:'show a list of installed ports'
|
||||
listorphans:'list of ports with no packages depending on them'
|
||||
info:'show info about a port'
|
||||
path:'show path of a port'
|
||||
readme:'show a port'"'"'s readme file (if it exists)'
|
||||
dup:'find duplicate ports'
|
||||
isinst:'print whether ports are installed'
|
||||
current:'print installed version of port'
|
||||
diff:'list outdated packages (or check args for change)'
|
||||
quickdiff:'same as diff but simple format'
|
||||
depends:'show dependencies for these ports'
|
||||
quickdep:'same as depends but simple format'
|
||||
deptree:'show dependencies tree for <port>'
|
||||
dependent:'show installed packages which depend on '"'"'port'"'"''
|
||||
search:'show port names containing '"'"'expr'"'"''
|
||||
dsearch:'show ports containing '"'"'expr'"'"' in the name or description'
|
||||
fsearch:'show file names in footprints matching '"'"'pattern'"'"''
|
||||
install:'install ports'
|
||||
update:'update ports'
|
||||
depinst:'install ports and their dependencies'
|
||||
remove:'remove ports'
|
||||
sysup:'update all outdated ports'
|
||||
lock:'lock current version of packages'
|
||||
unlock:'unlock packages'
|
||||
listlocked:'list locked packages'
|
||||
ls:'print a listing of the port'"'"'s directory'
|
||||
cat:'print out '"'"'port/file'"'"''
|
||||
edit:'edit '"'"'port/file'"'"''
|
||||
)
|
||||
|
||||
# Options Information
|
||||
_infooptions=(
|
||||
"--depsort[Sort by dependencies]"
|
||||
)
|
||||
|
||||
# Options for Differences / Check for updates
|
||||
_diffoptions=(
|
||||
"--all[display locked ports too]"
|
||||
"--prefer-higher[prefer higher installed versions over lower ports]"
|
||||
"--strict-diff[override prefer higher configuration setting]"
|
||||
)
|
||||
|
||||
# Options for Dependencies
|
||||
_depoptions=(
|
||||
"--all[list all dependent packages, not only installed]"
|
||||
"--recursive[print recursive listing]"
|
||||
"--tree[print recursive tree listing]"
|
||||
"--softdeps[consider optional dependencies too]"
|
||||
)
|
||||
|
||||
# Options for Install, Update and Removal
|
||||
_installoptions=(
|
||||
"-f[force installation]"
|
||||
"-fi[force installation]"
|
||||
"-fr[force rebuild]"
|
||||
"-uf[update footprint]"
|
||||
"-if[ignore footprint]"
|
||||
"-um[update md5sum]"
|
||||
"-im[ignore md5sum]"
|
||||
"-us[update signature]"
|
||||
"-is[ignore signature]"
|
||||
"--margs=[pass 'string' to pkgmk]"
|
||||
"--aargs=[pass 'string' to pkgadd]"
|
||||
"--rargs=[pass 'string' to pkgrm]"
|
||||
"--group[stop if any package fails to build]"
|
||||
"--test[test mode]"
|
||||
"--log[write log file]"
|
||||
"--ignore=[Don't install/update those packages]:ignored packages:_allports"
|
||||
"--pre-install[execute pre-install script]"
|
||||
"--post-install[execute post-install script]"
|
||||
"--install-scripts[execute pre-install and post-install script]"
|
||||
)
|
||||
|
||||
# Options for System Update
|
||||
_sysupoptions=(
|
||||
"--nodeps[don't sort by dependencies]"
|
||||
"--softdeps[consider optional dependencies when sorting]"
|
||||
"--group[stop if any package fails to build]"
|
||||
"--test[test mode]"
|
||||
"--log[write log file]"
|
||||
"--prefer-higher[prefer higher installed versions over lower ones in ports tree]"
|
||||
"--strict-diff[override prefer higher configuration setting]"
|
||||
)
|
||||
|
||||
_printfoptions=(
|
||||
'%n[name]'
|
||||
'%p[path]'
|
||||
'%v[version]'
|
||||
'%r[release]'
|
||||
'%d[description]'
|
||||
'%e[dependencies]'
|
||||
'%P[optional dependencies]'
|
||||
'%u[URL]'
|
||||
'%M[Maintainer]'
|
||||
'%R[Readme]'
|
||||
'%E[pre-install script]'
|
||||
'%O[post-install script]'
|
||||
'%l[is locked]'
|
||||
'%i[installed]'
|
||||
)
|
||||
|
||||
# Options for General Options
|
||||
_options=(
|
||||
"-v[Show version in listing]"
|
||||
"-vv[Show version and decription in listing]"
|
||||
"--path[Print path to port if appropriate (search, list, depends)]"
|
||||
"--cache[Use a cache file]"
|
||||
"--config=[Use alternative configuration file]:file:_files"
|
||||
"--install-root=[Use alternative install root directory]:directory:_directories"
|
||||
"--no-std-config[Don't parse default configuration file]"
|
||||
"--config-prepend=[Prepend '..' to configuration]:directory:_directories"
|
||||
"--config-append=[Append '..' to configuration]:directory:_directories"
|
||||
"--config-set=[Set configuration data '..', overriding config file]:data"
|
||||
)
|
||||
|
||||
# Port list generators
|
||||
_allports() {
|
||||
local -a list
|
||||
list=(${(f)"$(prt-get list 2>/dev/null)"})
|
||||
_describe 'ports' list
|
||||
}
|
||||
|
||||
_installedports() {
|
||||
local -a list
|
||||
list=(${(f)"$(prt-get listinst 2>/dev/null)"})
|
||||
_describe 'installedports' list
|
||||
}
|
||||
|
||||
_notinstalledports() {
|
||||
local -a installed_ports all_ports not_installed_ports
|
||||
installed_ports=(${(f)"$(prt-cache listinst 2>/dev/null)"})
|
||||
all_ports=(${(f)"$(prt-cache list 2>/dev/null)"})
|
||||
not_installed_ports=(${all_ports:|installed_ports})
|
||||
|
||||
_describe 'notinstalledports' not_installed_ports
|
||||
}
|
||||
|
||||
_lockedports() {
|
||||
local -a list
|
||||
list=(${(f)"$(prt-cache listlocked 2>/dev/null)"})
|
||||
_describe 'lockedports' list
|
||||
}
|
||||
|
||||
_unlockedports() {
|
||||
local -a installed locked list
|
||||
installed=("${(f)$(prt-cache listinst)}")
|
||||
locked=("${(f)$(prt-cache listlocked)}")
|
||||
list=("${(f)$(echo ${installed[@]} ${locked[@]} | tr ' ' '\n' | sort | uniq -u)}")
|
||||
_describe 'unlockedports' list
|
||||
}
|
||||
|
||||
_outdatedports() {
|
||||
local -a list
|
||||
list=(${(f)"$(prt-cache quickdiff | tr ' ' '\n' | sort)"})
|
||||
_describe 'outdatedports' list
|
||||
}
|
||||
|
||||
# TODO: print files from <port> that exist inside the directory
|
||||
# valid file for cat and edit
|
||||
_validfiles() {
|
||||
local -a list
|
||||
list=(
|
||||
"Pkgfile"
|
||||
".signature"
|
||||
".footprint"
|
||||
"README"
|
||||
"README.md"
|
||||
)
|
||||
_describe 'validfiles' list
|
||||
}
|
||||
|
||||
# Main completion function
|
||||
_arguments \
|
||||
"${_options[@]}" \
|
||||
":command:->command" \
|
||||
"*::options:->options"
|
||||
|
||||
# Command completion
|
||||
case $state in
|
||||
command)
|
||||
_describe 'commands' _commands
|
||||
;;
|
||||
options)
|
||||
case $words[1] in
|
||||
help | version | listorphans)
|
||||
# No options for help | version command
|
||||
;;
|
||||
list)
|
||||
_description list list '<filter>, e.g. *xorg*'
|
||||
;;
|
||||
listinst)
|
||||
# TODO [<filter>]
|
||||
_arguments -C \
|
||||
"${_infooptions[@]}"
|
||||
;;
|
||||
printf)
|
||||
# TODO <format>
|
||||
# TODO [--sort=<format string2>] [--filter=<filter>]
|
||||
local msg=(
|
||||
'format string'
|
||||
'[--sort=format_string2] [--filter=filter_string]'
|
||||
''
|
||||
'Supported format specifiers:'
|
||||
'%n - name'
|
||||
'%p - path'
|
||||
'%v - version'
|
||||
'%r - release'
|
||||
'%d - description'
|
||||
'%e - dependencies'
|
||||
'%P - optional dependencies'
|
||||
'%u - URL'
|
||||
'%M - Maintainer'
|
||||
'%R - Readme (yes/no)'
|
||||
'%E - pre-install script (yes/no)'
|
||||
'%O - post-install script (yes/no)'
|
||||
'%l - is locked (yes/no)'
|
||||
'%i - installed (no/yes/diff)'
|
||||
)
|
||||
;;
|
||||
info | path | readme | ls)
|
||||
_arguments \
|
||||
":port:_allports"
|
||||
;;
|
||||
current)
|
||||
_arguments -S \
|
||||
":installedports:_installedports"
|
||||
;;
|
||||
cat | edit)
|
||||
_arguments -C \
|
||||
":port:_allports" \
|
||||
":validfiles:_validfiles" \
|
||||
;;
|
||||
diff)
|
||||
_arguments -S \
|
||||
"*:outdatedports:_outdatedports" \
|
||||
"${_diffoptions[@]}"
|
||||
;;
|
||||
quickdiff)
|
||||
# No Options for quickdiff
|
||||
;;
|
||||
depends | quickdep | isinst)
|
||||
_arguments -S \
|
||||
":port:_allports" \
|
||||
;;
|
||||
dependent)
|
||||
_arguments \
|
||||
":port:_allports" \
|
||||
"${_depoptions[@]}"
|
||||
;;
|
||||
deptree)
|
||||
_arguments \
|
||||
":port:_allports"
|
||||
;;
|
||||
dup | listlocked)
|
||||
# No arguments for dup and listlocked commands
|
||||
;;
|
||||
search | dsearch)
|
||||
# TODO <expr>
|
||||
;;
|
||||
fsearch)
|
||||
# TODO <pattern>
|
||||
;;
|
||||
update | remove)
|
||||
# TODO: highlight ports that have an update available?
|
||||
# TODO: this completes only outdated once, if available,
|
||||
# then show installedports..
|
||||
_arguments -S \
|
||||
":outdatedports:_outdatedports" \
|
||||
"*:installedports:_installedports" \
|
||||
"${_installoptions[@]}"
|
||||
;;
|
||||
install | depinst)
|
||||
_arguments -S \
|
||||
"*:notinstalledports:_notinstalledports" \
|
||||
"${_installoptions[@]}"
|
||||
;;
|
||||
sysup)
|
||||
_arguments -S \
|
||||
"${_sysupoptions[@]}"
|
||||
;;
|
||||
lock)
|
||||
_arguments -S \
|
||||
"*:unlockedports:_unlockedports"
|
||||
;;
|
||||
unlock)
|
||||
_arguments -S \
|
||||
"*:lockedports:_lockedports"
|
||||
;;
|
||||
*)
|
||||
;;
|
||||
esac
|
||||
;;
|
||||
esac
|
@ -20,7 +20,6 @@ using namespace std;
|
||||
*/
|
||||
ArgParser::ArgParser( int argc, char** argv )
|
||||
: m_isCommandGiven( false ),
|
||||
m_isForced( false ),
|
||||
m_isTest( false ),
|
||||
m_isAlternateConfigGiven( false ),
|
||||
m_useCache( false ),
|
||||
@ -36,6 +35,7 @@ ArgParser::ArgParser( int argc, char** argv )
|
||||
m_execPostInstall( false ),
|
||||
m_preferHigher( false ),
|
||||
m_strictDiff( false ),
|
||||
m_group( false ),
|
||||
m_useRegex(false),
|
||||
m_fullPath(false),
|
||||
m_recursive(false),
|
||||
@ -128,13 +128,12 @@ const string& ArgParser::alternateConfigFile() const
|
||||
*/
|
||||
bool ArgParser::parse()
|
||||
{
|
||||
const int commandCount = 35;
|
||||
const int commandCount = 34;
|
||||
string commands[commandCount] = { "list", "search", "dsearch",
|
||||
"info",
|
||||
"info", "version", "cache",
|
||||
"depends", "install", "depinst",
|
||||
"help", "isinst", "dup", "update",
|
||||
"quickdep", "diff", "quickdiff",
|
||||
"grpinst", "version", "cache",
|
||||
"path", "listinst", "printf", "readme",
|
||||
"dependent", "sysup", "current",
|
||||
"fsearch", "lock", "unlock",
|
||||
@ -143,10 +142,10 @@ bool ArgParser::parse()
|
||||
"listorphans" };
|
||||
|
||||
Type commandID[commandCount] = { LIST, SEARCH, DSEARCH, INFO,
|
||||
SHOW_VERSION, CREATE_CACHE,
|
||||
DEPENDS, INSTALL, DEPINST,
|
||||
HELP, ISINST, DUP, UPDATE,
|
||||
QUICKDEP, DIFF, QUICKDIFF,
|
||||
GRPINST, SHOW_VERSION, CREATE_CACHE,
|
||||
PATH, LISTINST, PRINTF, README,
|
||||
DEPENDENT, SYSUP, CURRENT,
|
||||
FSEARCH, LOCK, UNLOCK, LISTLOCKED,
|
||||
@ -175,8 +174,6 @@ bool ArgParser::parse()
|
||||
m_verbose += 1;
|
||||
} else if ( s == "-vv" ) {
|
||||
m_verbose += 2;
|
||||
} else if ( s == "--force" ) {
|
||||
m_isForced = true;
|
||||
} else if ( s == "--test" ) {
|
||||
m_isTest = true;
|
||||
} else if ( s == "--cache" ) {
|
||||
@ -204,6 +201,8 @@ bool ArgParser::parse()
|
||||
m_preferHigher = true;
|
||||
} else if ( s == "--strict-diff" || s == "-sd" ) {
|
||||
m_strictDiff = true;
|
||||
} else if ( s == "--group" || s == "-g" ) {
|
||||
m_group = true;
|
||||
} else if ( s == "--regex" ) {
|
||||
m_useRegex = true;
|
||||
} else if ( s == "--full" ) {
|
||||
@ -214,7 +213,6 @@ bool ArgParser::parse()
|
||||
m_printTree = true;
|
||||
} else if ( s == "--depsort" ) {
|
||||
m_depSort = true;
|
||||
|
||||
} else if ( s == "-f" ) {
|
||||
m_pkgaddArgs += " " + s;
|
||||
} else if ( s == "-fr" ) {
|
||||
@ -274,11 +272,19 @@ bool ArgParser::parse()
|
||||
if (!m_isCommandGiven) {
|
||||
string s = m_argv[i];
|
||||
m_commandName = s;
|
||||
for ( int i = 0; i < commandCount; ++i ) {
|
||||
if ( s == commands[i] ) {
|
||||
m_isCommandGiven = true;
|
||||
m_commandType = commandID[i];
|
||||
break;
|
||||
if ( s == "grpinst" ) {
|
||||
m_isCommandGiven = true;
|
||||
m_commandType = commandID[7];
|
||||
m_group = true;
|
||||
cout << "Warning: grpinst is obsolescent";
|
||||
cout << "; using install --group" << endl;
|
||||
} else {
|
||||
for ( int i = 0; i < commandCount; ++i ) {
|
||||
if ( s == commands[i] ) {
|
||||
m_isCommandGiven = true;
|
||||
m_commandType = commandID[i];
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
// first argument must be command
|
||||
@ -297,15 +303,6 @@ bool ArgParser::parse()
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
\return true whether --force has been specified
|
||||
*/
|
||||
bool ArgParser::isForced() const
|
||||
{
|
||||
return m_isForced;
|
||||
}
|
||||
|
||||
|
||||
/*!
|
||||
\return true whether --test has been specified
|
||||
*/
|
||||
@ -473,6 +470,11 @@ bool ArgParser::strictDiff() const
|
||||
return m_strictDiff;
|
||||
}
|
||||
|
||||
bool ArgParser::group() const
|
||||
{
|
||||
return m_group;
|
||||
}
|
||||
|
||||
bool ArgParser::useRegex() const
|
||||
{
|
||||
return m_useRegex;
|
||||
|
@ -14,6 +14,7 @@
|
||||
|
||||
#include <list>
|
||||
#include <string>
|
||||
#include <iostream>
|
||||
using namespace std;
|
||||
|
||||
/*!
|
||||
@ -32,7 +33,7 @@ public:
|
||||
/*! Command type */
|
||||
enum Type { HELP, LIST, SEARCH, DSEARCH, INSTALL, DEPINST,
|
||||
INFO, DEPENDS, ISINST, DUP, UPDATE,
|
||||
QUICKDEP, DIFF, GRPINST, GRPUPDATE,
|
||||
QUICKDEP, DIFF,
|
||||
QUICKDIFF, SHOW_VERSION, CREATE_CACHE, PATH,
|
||||
LISTINST, PRINTF, README, DEPENDENT, SYSUP,
|
||||
CURRENT, FSEARCH, LOCK, UNLOCK, LISTLOCKED,
|
||||
@ -40,7 +41,6 @@ public:
|
||||
DEPTREE, DUMPCONFIG, LISTORPHANS };
|
||||
|
||||
bool isCommandGiven() const;
|
||||
bool isForced() const;
|
||||
bool isTest() const;
|
||||
bool isAlternateConfigGiven() const;
|
||||
bool useCache() const;
|
||||
@ -55,6 +55,7 @@ public:
|
||||
bool execPostInstall() const;
|
||||
bool preferHigher() const;
|
||||
bool strictDiff() const;
|
||||
bool group() const;
|
||||
bool useRegex() const;
|
||||
bool fullPath() const;
|
||||
bool recursive() const;
|
||||
@ -89,7 +90,6 @@ public:
|
||||
private:
|
||||
|
||||
bool m_isCommandGiven;
|
||||
bool m_isForced;
|
||||
bool m_isTest;
|
||||
bool m_isAlternateConfigGiven;
|
||||
bool m_useCache;
|
||||
@ -109,6 +109,7 @@ private:
|
||||
bool m_execPostInstall;
|
||||
bool m_preferHigher;
|
||||
bool m_strictDiff;
|
||||
bool m_group;
|
||||
bool m_useRegex;
|
||||
bool m_fullPath;
|
||||
|
||||
|
@ -143,12 +143,11 @@ InstallTransaction::installError() const
|
||||
install (commit) a transaction
|
||||
\param parser the argument parser
|
||||
\param update whether this is an update operation
|
||||
\param group whether this is a group transaction (stops transaction on error)
|
||||
\return returns an InstallResult telling whether installation worked
|
||||
*/
|
||||
InstallTransaction::InstallResult
|
||||
InstallTransaction::install( const ArgParser* parser,
|
||||
bool update, bool group )
|
||||
bool update )
|
||||
{
|
||||
if ( m_packages.empty() ) {
|
||||
return NO_PACKAGE_GIVEN;
|
||||
@ -170,7 +169,7 @@ InstallTransaction::install( const ArgParser* parser,
|
||||
|
||||
if ( package == NULL ) {
|
||||
m_missingPackages.push_back( make_pair( it->first, string("") ) );
|
||||
if ( group ) {
|
||||
if ( parser->group() ) {
|
||||
return PACKAGE_NOT_FOUND;
|
||||
}
|
||||
continue;
|
||||
@ -203,7 +202,7 @@ InstallTransaction::install( const ArgParser* parser,
|
||||
}
|
||||
|
||||
m_installErrors.push_back( make_pair(package->name(), info) );
|
||||
if ( group ) {
|
||||
if ( parser->group() ) {
|
||||
return PKGMK_FAILURE;
|
||||
}
|
||||
}
|
||||
@ -568,7 +567,7 @@ void InstallTransaction::checkDependencies( bool greedy,
|
||||
if ( pos != string::npos && (pos+1) < softdep.length() ) {
|
||||
softdep = softdep.substr( pos + 1 );
|
||||
}
|
||||
if ( m_pkgDB->isInstalled(softdep, true) ) {
|
||||
if ( m_pkgDB->isInstalled(softdep, false) or isRequested(softdep) ) {
|
||||
const Package* p = m_repo->getPackage( softdep );
|
||||
if ( p ) {
|
||||
checkDependencies( true, p, index );
|
||||
@ -586,6 +585,16 @@ void InstallTransaction::checkDependencies( bool greedy,
|
||||
treeWalk.pop_back();
|
||||
}
|
||||
|
||||
/*!
|
||||
Method to determine whether a package was passed on the command line
|
||||
*/
|
||||
bool InstallTransaction::isRequested(const string pname) {
|
||||
list< pair<string, const Package*> >::iterator it = m_packages.begin();
|
||||
for ( ; it != m_packages.end(); ++it ) {
|
||||
if ( it->first == pname ) { return true; }
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/*!
|
||||
This method returns a list of packages which should be installed to
|
||||
|
@ -85,8 +85,7 @@ public:
|
||||
};
|
||||
|
||||
InstallResult install( const ArgParser* parser,
|
||||
bool update,
|
||||
bool group );
|
||||
bool update );
|
||||
InstallResult calcDependencies();
|
||||
|
||||
const list< pair<string, InstallInfo> >& installedPackages() const;
|
||||
@ -109,6 +108,7 @@ private:
|
||||
const ArgParser* parser,
|
||||
bool update,
|
||||
InstallInfo& info ) const;
|
||||
bool isRequested(const string pname);
|
||||
|
||||
static string getPkgmkSetting(const string& setting);
|
||||
static string getPkgmkSettingFromFile(const string& setting,
|
||||
|
@ -87,11 +87,8 @@ int main( int argc, char** argv )
|
||||
prtGet.install();
|
||||
break;
|
||||
case ArgParser::DEPINST:
|
||||
prtGet.install(false, true, true);
|
||||
break;
|
||||
case ArgParser::GRPINST:
|
||||
prtGet.install( false, true );
|
||||
break;
|
||||
break;
|
||||
case ArgParser::DEPENDS:
|
||||
prtGet.printDepends();
|
||||
break;
|
||||
|
184
src/prtget.cpp
184
src/prtget.cpp
@ -143,7 +143,7 @@ void PrtGet::printUsage()
|
||||
<< endl;
|
||||
|
||||
cout << "\nDEPENDENCIES" << endl;
|
||||
cout << " depends <port1 port2...> show dependencies for these ports"
|
||||
cout << " depends <port1 port2...> calculate dependencies of the given ports"
|
||||
<< endl;
|
||||
cout << " quickdep <port1 port2...> same as 'depends' but simple format"
|
||||
<< endl;
|
||||
@ -171,13 +171,12 @@ void PrtGet::printUsage()
|
||||
cout << "\nINSTALL, UPDATE and REMOVAL" << endl;
|
||||
cout << " install [opt] <port1 port2...> install ports" << endl;
|
||||
cout << " update [opt] <port1 port2...> update ports" << endl;
|
||||
cout << " grpinst [opt] <port1 port2...> install ports, stop on error"
|
||||
<< endl;
|
||||
cout << " depinst [opt] <port1 port2...> install ports and their dependencies"
|
||||
<< endl;
|
||||
cout << " remove [opt] <port1 port2...> remove ports"
|
||||
<< endl;
|
||||
cout << " where opt can be:" << endl;
|
||||
cout << " -g, --group stop if one package fails" << endl;
|
||||
cout << " -f, -fi force installation" << endl;
|
||||
cout << " -fr force rebuild" << endl;
|
||||
cout << " -uf update footprint" << endl;
|
||||
@ -590,32 +589,47 @@ void PrtGet::listInstalled()
|
||||
|
||||
/*!
|
||||
install package
|
||||
\param update whether this is an update operation
|
||||
\param group whether it's a group install (stop on error)
|
||||
|
||||
\param update, whether this is an update operation
|
||||
\param dependencies, whether to consider dependencies
|
||||
*/
|
||||
void PrtGet::install( bool update, bool group, bool dependencies )
|
||||
void PrtGet::install( bool update, bool dependencies )
|
||||
{
|
||||
assertMinArgCount(1);
|
||||
|
||||
// this can be done without initRepo()
|
||||
const list<char*>& args = m_parser->otherArgs();
|
||||
list<string> invalidArgs;
|
||||
list<char*>::const_iterator it = args.begin();
|
||||
|
||||
if ( args.size() == 1 ) {
|
||||
if ( update ) {
|
||||
for ( ; it != args.end(); ++it ) {
|
||||
string s = *it;
|
||||
if ( !update && m_pkgDB->isInstalled( s ) ) {
|
||||
cout << "package " << s << " is installed" << endl;
|
||||
m_returnValue = PG_GENERAL_ERROR;
|
||||
return;
|
||||
} else if ( update && !m_pkgDB->isInstalled( s ) ) {
|
||||
// can't upgrade
|
||||
cout << "package " << s << " is not installed" << endl;
|
||||
m_returnValue = PG_GENERAL_ERROR;
|
||||
return;
|
||||
if ( !m_pkgDB->isInstalled( s ) ) {
|
||||
// can't upgrade what isn't installed
|
||||
invalidArgs.push_back( s );
|
||||
}
|
||||
}
|
||||
} else {
|
||||
for ( ; it != args.end(); ++it ) {
|
||||
string s = *it;
|
||||
if ( m_pkgDB->isInstalled( s ) ) {
|
||||
// pkgadd will fail on these, since it won't be given the -u flag
|
||||
invalidArgs.push_back( s );
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ( invalidArgs.size() > 0 ) {
|
||||
string attemptedOp = ( update ) ? "update" : "install";
|
||||
attemptedOp += " the following packages ";
|
||||
attemptedOp += ( update ) ? "(not yet installed)" : "(already installed)";
|
||||
cout << "cannot "<< attemptedOp <<endl;
|
||||
list<string>::const_iterator it = invalidArgs.begin();
|
||||
for ( ; it != invalidArgs.end(); ++it ) {
|
||||
cout << *it << endl;
|
||||
}
|
||||
m_returnValue = PG_GENERAL_ERROR ;
|
||||
return;
|
||||
}
|
||||
|
||||
initRepo();
|
||||
@ -648,16 +662,16 @@ void PrtGet::install( bool update, bool group, bool dependencies )
|
||||
}
|
||||
|
||||
InstallTransaction transaction( deps, m_repo, m_pkgDB, m_config );
|
||||
executeTransaction( transaction, update, group );
|
||||
executeTransaction( transaction, update );
|
||||
} else {
|
||||
InstallTransaction transaction( m_parser->otherArgs(),
|
||||
m_repo, m_pkgDB, m_config );
|
||||
executeTransaction( transaction, update, group );
|
||||
executeTransaction( transaction, update );
|
||||
}
|
||||
}
|
||||
|
||||
void PrtGet::executeTransaction( InstallTransaction& transaction,
|
||||
bool update, bool group )
|
||||
bool update )
|
||||
{
|
||||
m_currentTransaction = &transaction;
|
||||
|
||||
@ -672,49 +686,64 @@ void PrtGet::executeTransaction( InstallTransaction& transaction,
|
||||
}
|
||||
|
||||
InstallTransaction::InstallResult result =
|
||||
transaction.install( m_parser, update, group );
|
||||
transaction.install( m_parser, update );
|
||||
bool failed = false;
|
||||
// TODO: use switch
|
||||
if ( result == InstallTransaction::PACKAGE_NOT_FOUND ) {
|
||||
cout << m_appName << ": package(s) not found" << endl;
|
||||
} else if ( result == InstallTransaction::PKGMK_EXEC_ERROR ) {
|
||||
cout << m_appName << " couldn't excecute pkgmk "
|
||||
<< "(or alternative command). "
|
||||
<< "Make sure it's installed properly" << endl;
|
||||
} else if ( result == InstallTransaction::PKGMK_FAILURE ) {
|
||||
cout << m_appName << ": error while " << command[0] << endl;
|
||||
} else if ( result == InstallTransaction::NO_PACKAGE_GIVEN ) {
|
||||
cout << m_appName << ": no package specified for "
|
||||
<< command[0] << endl;
|
||||
} else if ( result == InstallTransaction::PKGADD_EXEC_ERROR ) {
|
||||
cout << m_appName << " couldn't excecute pkgadd. "
|
||||
<< "Make sure it's installed properly" << endl;
|
||||
} else if ( result == InstallTransaction::PKGDEST_ERROR ) {
|
||||
cout << m_appName << ": error changing to PKGDEST directory "
|
||||
<< transaction.getPkgmkPackageDir() << endl;
|
||||
failed = true;
|
||||
} else if ( result == InstallTransaction::PKGADD_FAILURE ) {
|
||||
cout << m_appName << ": error while pkgadding " << endl;
|
||||
} else if ( result == InstallTransaction::LOG_DIR_FAILURE ) {
|
||||
cout << m_appName << ": can't create log file directory " << endl;
|
||||
} else if ( result == InstallTransaction::LOG_FILE_FAILURE ) {
|
||||
cout << m_appName << ": can't create log file" << endl;
|
||||
failed = true;
|
||||
} else if ( result == InstallTransaction::NO_LOG_FILE ) {
|
||||
cout << m_appName << ": no log file specified, but logging enabled"
|
||||
<< endl;
|
||||
failed = true;
|
||||
} else if ( result == InstallTransaction::CANT_LOCK_LOG_FILE ) {
|
||||
cout << m_appName << ": can't create lock file for the log file. "
|
||||
<< "\nMaybe there's another instance of prt-get using the same "
|
||||
<< "file."
|
||||
<< "\nIf this is a stale not, please remove "
|
||||
// TODO: file name of lock file
|
||||
<< endl;
|
||||
failed = true;
|
||||
} else if ( result != InstallTransaction::SUCCESS ) {
|
||||
cout << m_appName << ": Unknown error " << result << endl;
|
||||
failed = true;
|
||||
switch (result) {
|
||||
case InstallTransaction::SUCCESS:
|
||||
break;
|
||||
case InstallTransaction::PACKAGE_NOT_FOUND:
|
||||
cout << m_appName << ": package(s) not found" << endl;
|
||||
break;
|
||||
case InstallTransaction::PKGMK_EXEC_ERROR:
|
||||
cout << m_appName << " couldn't excecute pkgmk "
|
||||
<< "(or alternative command). "
|
||||
<< "Make sure it's installed properly" << endl;
|
||||
break;
|
||||
case InstallTransaction::PKGMK_FAILURE:
|
||||
cout << m_appName << ": error while " << command[0] << endl;
|
||||
break;
|
||||
case InstallTransaction::NO_PACKAGE_GIVEN:
|
||||
cout << m_appName << ": no package specified for "
|
||||
<< command[0] << endl;
|
||||
break;
|
||||
case InstallTransaction::PKGADD_EXEC_ERROR:
|
||||
cout << m_appName << " couldn't excecute pkgadd. "
|
||||
<< "Make sure it's installed properly" << endl;
|
||||
break;
|
||||
case InstallTransaction::PKGDEST_ERROR:
|
||||
cout << m_appName << ": error changing to PKGDEST directory "
|
||||
<< transaction.getPkgmkPackageDir() << endl;
|
||||
failed = true;
|
||||
break;
|
||||
case InstallTransaction::PKGADD_FAILURE:
|
||||
cout << m_appName << ": error while pkgadding " << endl;
|
||||
break;
|
||||
case InstallTransaction::LOG_DIR_FAILURE:
|
||||
cout << m_appName << ": can't create log file directory "
|
||||
<< endl;
|
||||
break;
|
||||
case InstallTransaction::LOG_FILE_FAILURE:
|
||||
cout << m_appName << ": can't create log file" << endl;
|
||||
failed = true;
|
||||
break;
|
||||
case InstallTransaction::NO_LOG_FILE:
|
||||
cout << m_appName << ": no log file specified, but logging enabled"
|
||||
<< endl;
|
||||
failed = true;
|
||||
break;
|
||||
case InstallTransaction::CANT_LOCK_LOG_FILE:
|
||||
cout << m_appName
|
||||
<< ": can't create lock file for the log file. "
|
||||
<< "\nMaybe there's another instance of prt-get "
|
||||
<< "using the same file."
|
||||
<< "\nIf this is a stale log, please remove "
|
||||
// TODO: file name of lock file
|
||||
<< endl;
|
||||
failed = true;
|
||||
break;
|
||||
default:
|
||||
cout << m_appName << ": Unknown error " << result << endl;
|
||||
failed = true;
|
||||
}
|
||||
|
||||
if ( !failed ) {
|
||||
@ -763,7 +792,7 @@ void PrtGet::printDepends( bool simpleListing )
|
||||
}
|
||||
} else {
|
||||
if ( deps.size() > 0 ) {
|
||||
cout << "-- dependencies (";
|
||||
cout << "-- dependency list for the requested ports (";
|
||||
if ( m_followSoftdeps ) {
|
||||
cout << "including optionals, ";
|
||||
}
|
||||
@ -875,20 +904,19 @@ void PrtGet::printFormattedDiffLine(const string& name,
|
||||
const string& versionPortsTree,
|
||||
bool isLocked)
|
||||
{
|
||||
unsigned int minWidth=20;
|
||||
cout.setf( ios::left, ios::adjustfield );
|
||||
cout.width( 20 );
|
||||
cout.width( minWidth );
|
||||
cout.fill( ' ' );
|
||||
cout << name;
|
||||
( name.size() < minWidth ) ? cout << name : cout << name + " ";
|
||||
|
||||
cout.width( 20 );
|
||||
cout.width( minWidth );
|
||||
cout.fill( ' ' );
|
||||
cout << versionInstalled;
|
||||
( versionInstalled.size() < minWidth ) ? cout << versionInstalled :
|
||||
cout << versionInstalled + " ";
|
||||
|
||||
string locked = "";
|
||||
if ( isLocked ) {
|
||||
locked = "locked";
|
||||
}
|
||||
cout.width( 20 );
|
||||
string locked = ( isLocked ) ? "locked" : "";
|
||||
cout.width( minWidth );
|
||||
cout.fill( ' ' );
|
||||
cout << versionPortsTree << locked << endl;
|
||||
}
|
||||
@ -1411,7 +1439,8 @@ void PrtGet::printDependent(const string& dep, int level)
|
||||
dependent.insert( p );
|
||||
}
|
||||
}
|
||||
if ( p && m_pkgDB->isInstalled(p->name(),false) && m_followSoftdeps
|
||||
if ( p && m_followSoftdeps &&
|
||||
( m_parser->all() || m_pkgDB->isInstalled( p->name() ) )
|
||||
&& p->optionals().find( dep ) != string::npos ) {
|
||||
list<string> tokens;
|
||||
StringHelper::split( p->optionals(), ',', tokens );
|
||||
@ -1599,7 +1628,7 @@ void PrtGet::sysup()
|
||||
|
||||
InstallTransaction transaction( *target,
|
||||
m_repo, m_pkgDB, m_config );
|
||||
executeTransaction( transaction, true, false );
|
||||
executeTransaction( transaction, true );
|
||||
}
|
||||
|
||||
|
||||
@ -2025,11 +2054,12 @@ void PrtGet::printDependTree()
|
||||
|
||||
if ( (p->dependencies().length() > 0) or
|
||||
(m_followSoftdeps && p->optionals().length() > 0) ) {
|
||||
cout << "-- dependencies (";
|
||||
cout << "-- dependencies ([i] installed";
|
||||
if ( m_followSoftdeps ) {
|
||||
cout << "[s] soft, ";
|
||||
cout << ", [s] installed softdeps";
|
||||
} else {
|
||||
cout << ", [ ] not installed";
|
||||
}
|
||||
cout << "[i] hard, [ ] not installed";
|
||||
if (!m_parser->all()) {
|
||||
cout << ", '-->' already shown";
|
||||
}
|
||||
|
@ -62,7 +62,6 @@ public:
|
||||
void readme();
|
||||
|
||||
void install( bool update=false,
|
||||
bool group=false,
|
||||
bool dependencies=false );
|
||||
void sysup();
|
||||
void current();
|
||||
@ -102,7 +101,7 @@ protected:
|
||||
void printDependent(const std::string& dep, int level);
|
||||
|
||||
void executeTransaction( InstallTransaction& transaction,
|
||||
bool update, bool group );
|
||||
bool update );
|
||||
void evaluateResult( InstallTransaction& transaction,
|
||||
bool update,
|
||||
bool interrupted=false );
|
||||
|
@ -30,7 +30,7 @@ using namespace std;
|
||||
using namespace StringHelper;
|
||||
|
||||
|
||||
const string Repository::CACHE_VERSION = "V5";
|
||||
const string Repository::CACHE_VERSION = "V5.1";
|
||||
|
||||
/*!
|
||||
Create a repository
|
||||
|
Loading…
Reference in New Issue
Block a user