NAME
ppack - parse the Packages files and the available & status files
DESCRIPTION
ppack tries to make it easy to find information on maintainers and their packages; get package's installed status, descriptions, bugs and changelogs; find packages that no others depend on and those that need updating. It gets the information from the Packages files and the available and status files as well as various debian.org pages.
SYNOPSIS
ppack [-P pattern ] option [pattern]
OPTIONS
- -7
-
new packages installed in the last 7 days
- -a [arg]
-
show anomalies in the Status file; installed packages that aren't in the current Packages files; duplicate packages.
arg selects which Packages files to use
-a '?'
- show the available files and give usage info
-a
- use PPDIST setting or all if unset
-a security
- use only Packages files that contain security
-a progeny skipstone
- use Packages files containing these strings
- -b num | pkg | src:pkg | [email protected] | from:[email protected]
-
view the bug page belonging to bug number, package name, source package name, package maintainer or bug submitter (src: & from: are literals, the other values are substituted.)
- -B[m] pkg | pkg_vers
-
look up the build log for pkg or pkg_vers for either all arches or just m68k if the m switch is used. The lookup at buildd.debian.org is used for all logs and bruno.fmepnet.org for m68k logs. buildd.d.o also includes all m68k logs now so the latter is just a fallback. Without a pkg or pkg_vers argument, the appropriate web page is pulled into the browser.
- -cl pkg
-
show the local changelog for pkg
- -ch distro
-
show the additions/deletions in the current Packages list for distro compared to the previously saved one. On exit, the current list is saved, gzipped, to the old list if old is from a previous day. -f forces saving and -n prevents it.
The README has a wrapper example.
[ ppack -Lb searchscripts
will pull this up quickly ]
- -C[id] [arch dist] arg
-
if no argument, pulls up the web page at packages.debian.org that allows you to search the Contents-*.gz files for the various arches.
arch is one of 'i386 m68k alpha sparc powerpc arm' and dist is one of 'stable testing unstable'. All arguments can appear in any order. The default arch is the machine's architecture if it's one of the above, else i386. The default dist is unstable.
Modifiers:
i case insensitive search
d search on directory names too
- -d pkg
-
show the description (control stanza) for pkg
- -D|R pkg max
-
print the dependency/reverse dependency tree for pkg using "apt-cache depends|showpkg" output to maximum depth max, (def=20, 0=unlimited).
This is a bit of a plaything. For alternatives with -D, the last alternative is used. More on this in the README. Branches for each package are only followed once for each first-level depends to prevent infinite recursion. .. means that this branch has been fully followed before.
- -f [arch] ['non-us'] distro [[section] subsection]]
-
show the file list for section + subsection in the regular archive
distro = stable, unstable, testing, woody, ...
section = main, contrib, non-free
subsection = admin, base, ...
- -f ['non-us'] [section] package
-
show the files for package in the pool. Please see 'ppack -f \?' for examples.
- -g
-
pull incoming.debian.org into the browser
- -H pkg
-
view the debian.org home page for pkg
- -ir name
-
do a case insensitive partial match for name at db.debian.org on both IRC nick and developer name. This requires ldapsearch and exits with a request to install it if it's not available. No argument or '*' for all developers with nicks.
- -i[lsq] pattern
-
show the install status of all packages in the status file matching pattern
Patterns: (i,I,l,v share this pattern-matching)
*perl - ends in perl
perl* - starts with perl
*perl* - name contains perlModifiers:
l also print description if available
s also sort by section
- -I[lsq] pattern
-
show only the installed packages that match pattern (see -i for patterns)
Modifiers:
l also print description
s also sort by section
- -If[q] statusfile
-
show all the installed packages, according to the named statusfile. This is useful for seeing what packages are installed in a chroot. Also see the -r switch.
- -l[lsvq] pattern
-
show all packages in the Packages files that match pattern sorted by section, with a one line description (see -i for patterns)
Modifiers:
l also print version
s also sort by section
v only show version/vendor for all matches
- -L[bq] pkg
-
list the files that make up pkg. The b modifier URLifies the filelist & the control files in the package and brings them up in the browser.
- -m[q] pattern
-
show packages belonging to the maintainer matching pattern
Patterns: the only ´wildcard´ is smartcase
Fred - a case sensitive match for *Fred*
fred - ignore case, finds *[Ff][Rr][Ee][Dd]*
- -M
-
pull the New Maintainer page up in the browser
- -n[rsvq] pkg
-
reverse depends for packages in the status file. Show the installed packages that need (+[r]ecommend +[s]uggest) pkg. -v also includes those packages that depend on the virtual package that pkg provides.
- -N[rsvq] pkg
-
reverse depends for packages in the Packages files. Show the packages that need (+[r]ecommend +[s]uggest) pkg. -v also includes those packages that depend on the virtual package that pkg provides.
- -NS[q] pkg
-
show the packages that build-depend on pkg. This isn't very robust: doesn't know about !arch or versions, only uses Build-Depends and not Build-Depends-Indep and is only as accurate as the Build-Depends line in the package. Useful for helping debug build failures.
- -o[rsq]
-
show orphans (no other packages depend on [+recommend +suggest] these) with installed size and description
- -O[q]
-
-O is the same as -ors
- -p[q] pattern
-
show packages that provide the virtual package matching pattern (see -i for patterns)
- -q[aceijpsu]
-
pull some upload queues into the browser; [a]uric, [c]hiark, [e]rlangen, [i]taly, [j]apan, [p]andora, [s]amosa, [u]k
- -r dir
-
if you have a chroot, this allows you to work in it from outside, adding dir to the paths of the available, Packages and status files. Any argument that uses one of these files is affected by this switch. The PPDIST environment variable is ignored here.
distros can still be 'pinned' with the -P switch or by supplying an argument to the -[auA] switches.
You can supply the full path to the chroot root. Or if your chroot(s) are at /usr/local/chroot/, then ? will show their names. E.g. if a chroot is at /usr/local/chroot/unstable, then 'ppack -r ?' returns 'unstable' and 'ppack -a unstable' returns any anomalies in that chroot.
- -s[nb] pkg
-
print the source stanza for the binary package pkg. This requires that you have some Sources URIs in your sources.list. You can 'pin' which *Sources file are used with the -P switch or the PPDIST environment variable.
-n
- just print the pkg source directory url
-b
- show the pkg source directory in the browser
- -S pattern
-
show the installed packages that pattern belongs to
Patterns:
perl - *perl* is anywhere in the file string
perl$ - files that end in perl
/perl-tk$ - exact match for the file perl-tk
- -t
-
show the testing page in the browser
- -u[q] [arg]
-
show which installed packages have newer versions in the selected Packages files. Packages files are selected by arg, the -P switch or the PPDIST environment variable. See MODIFIERS for the -P explanation.
-u '?'
- show the available files and give usage info
-u
- use PPDIST setting or all if unset
-u unstable
- use the unstable Packages files
-u progeny skipstone
- use Packages files containing these strings
- -U[q] [arg]
-
the same as -u except it shows packages with different versions, not only newer ones. Useful if you're downgrading distros.
- -v[n] v1 v2
-
compare versions. The output with -v is v1 > v2, v1 = v2, v1 < v2. With the -n (numeric) modifier the output for the same conditions would be 1, 0, -1.
- -V | T | A | E [?]
-
pull a[V]ailable file, s[T]atus file, P[A]ckages or sourc[E]s files into the pager. The crutch here is it's the second letter of each (except sources...running out of letters.)
arg selects which Packages files to use for -A
-A '?'
- show the available files and give usage info
-A
- use PPDIST setting or all if unset
-A unstable
- use only Packages files that contain unstable
-A progeny skipstone
- use Packages files containing these strings
- -w
-
show Work-Needing and Prospective Packages page in the browser
- -y
-
pull the Popularity Contest results and display them in several different formats. (This needs work. The Hot category is arbitrary and meaningless. It's (current + recent)/(current + old + recent) where the denominator > 10. So a larger number means most users have started using the package recently. The Recent entry spikes every time the package is updated. Ideas how to make this useful welcome.
- -Y
-
pull the Popularity Contest home page into the browser
MODIFIERS - the following can be used in addition to or to modify the above options:
- -q
-
quiet: a modifier for some options to have only the package name printed so the output can be used in a pipe
- -P arg
-
selects only some Packages files. (A better way to set the default Packages files is the PPDIST environment variable.) -P "?" will show the available Packages files and give usage info.
EXAMPLES
- ppack -b debconf
-
show bug reports for debconf
- ppack -b [email protected]
-
show a maintainer's bugs
- ppack -B eject_2.0.3-1
-
show the build log for this package and version
- ppack -C m68k stable libX11
-
find the filenames containing libX11 in the m68k stable Contents file
- ppack -l perl
-
show the one-line description for the perl package (*perl must end with perl; perl* starts with perl; *perl* has perl anywhere in the name)
- ppack -lls '*'
-
show the latest version of all packages in all Packages files in /var/state/apt/lists/ sorted by section, with one-line description and version number
- ppack -lv apt
-
show all versions of apt from all vendors that you have Packages files for
- ppack -m Tille
-
show Tille's packages (all lower case does a case insensitive match)
- ppack -mq Tille |xargs ppack -ll
-
show their one-line descriptions and version numbers
- ppack -i $(ppack -mq Tille)
-
show their installed status
- ppack -mq Tille |xargs ppack -b
-
view their d.o bug pages
- ppack -lv `ppack -mq Tille`
-
show the vendor and version in all Packages files
- ppack -P unstable -d perl-tk
-
show the description of perl-tk in the unstable Packages listings
- ppack -S /perl-tk$
-
find the package that the file perl-tk belongs to
- ppack -Nrs lynx
-
show all packages in the Packages files that depend on/recommend/suggest lynx
- ppack -nrsv lynx
-
show all installed packages that depend on/recommend/suggest lynx, www-browser or news-reader
- ppack -Oq |xargs ppack -d |less
-
view the descriptions (control stanzas) of all orphans
- ppack -pq www-browser |xargs ppack -I
-
which web browsers are installed
- ppack -r unstable -Il '*'
-
shows all the packages installed in the chroot at /usr/local/chroot/unstable. This is (or should be) the same as "dpkg --root /usr/local/chroot/unstable --list |grep ^ii"
- ppack -r frozen -u
-
show the files that need updating in the frozen chroot
- ppack -u progeny
-
shows which Progeny packages are newer than the installed versions
- ppack -U testing
-
if you run unstable this would show the package versions in testing that are different from the installed versions
- ppack -v 3.3.3-10 3.3.3r2-1
-
show which version number is greater
- ppack -A _stable
-
pull Packages files with names matching *_stable* into the pager. '?' lists the files so you can find a unique string.
ENVIRONMENT
- BROWSER
-
The following environment variable settings are checked in order and the first one that is set is used. If none is set the browser defaults to lynx. Lynx is the best choice for these scripts in any case.
PPBROWSER, SSBROWSER, X11BROWSER (if the DISPLAY env var is set), and lastly CONSOLEBROWSER.
- PPDIST
-
This sets the distribution for all options that use the Packages files. -P has a higher priority than this variable as does including patterns on the command line with -[auA]. So for example you can,
export PPDIST="unstable skipstone"
to use those Packages files as the default. Then,
ppack -P progeny -l '*apt*'
ppack -A kleckerwill override that.
If you have Packages files from different vendors or distributions you'll want to use the APT >= 0.4. "man 5 apt_preferences" has info on setting priorities. There is also a short description in this package's README.
AUTHOR
Copyright (C) 2000 Rick Younie <[email protected]>, GPL version 2 or later. See /usr/share/common-licenses/GPL.
SEE ALSO
apt-cache(1), deborphan(1), dlocate(1), dpkg(1), grep-dctrl(1)