Some of Debian's IRC channels on both Libera.Chat and OFTC have a bot named judd to provide information about Debian packages and hardware support.

Contents

  1. About the bot
  2. Binary package information
  3. Source package information
  4. Bugs tracking information
  5. Hardware information
  6. Kernel information
  7. Source code

About the bot

The name judd came from the first and most used plugin that is running in this bot. The plugin was called Judd as it is a window into the Ultimate Debian Database for providing package and bug tracking information.

The bot is a Limnoria (formerly known as 'supybot') running a number of customised plugins for helping on #debian:

Judd
Ultimate Debian Database for package information and bugs
Piccy
PCI-Id and other hardware compatibility information

A complete list of the available commands that any plugin provides may be obtained from the bot by asking it to list the plugin, for example using the following commands:

/msg judd list Judd
archs, binaries, bug, bug autobug, bug rc, bug rfs, bug rm, bug wnpp, builddep, checkbackport, checkbuilddeps, checkdeps, checkinstall, conflicts, danke, depends, enhances, file, info, maint, names, popcon, provides, recent, recommends, rprovides, src, suggests, versions, whouploads, and why
/msg judd list Piccy
firmware, kconfig, kernel, kernelconfig, kernels, modinfo, pciid, and pciname

A few extra aliases exist for these commands to handle common typos or to reduce the amount of typing required.

For each of the commands judd lists as part of a plugin, on-line help is available:

/msg judd help command
/msg judd help versions
(versions <pattern> [--arch <amd64>] [--release <stable>]) -- Show the available versions of a package in the optionally specified release and for the given architecture. All current releases and amd64 are searched by default. By default, binary packages are searched; prefix the packagename with "src:" to search source packages.

Note that judd uses comma (,) as an address character in the channel. You can either address it directly by prefixing commands with judd or , or send the commands by private message (/msg judd). Please talk to judd in a private message unless others in the channel really need to see his output. For the remainder of this examples in this guide, the details of how the bot is addressed are omitted.

The plugin uses a UDD instance that indexes a number of official repositories including:

Official repositories
oldoldstable (usually), oldstable, stable, testing, sid, experimental
Security updates (security.debian.org)
oldstable-security, stable-security, testing-security (usually empty)
Pending updates and other updated packages
oldstable-updates, oldstable-proposed-updates, stable-updates, stable-proposed-updates, testing-proposed-updates
Backports from backports.debian.org
oldstable-backports, oldstable-backports-sloppy, stable-backports
Notes: In #debian the information supplied by Judd defaults to the current stable release for the amd64 architecture. In #debian-next the current testing release is used instead.

Standard Options

Many commands take the following options

packagename
a binary package name (not source package name). Prefixing the name with src: will look at source packages instead.
--arch architecture
specify the architecture. Standard Debian architecture names are used, such as armhf, amd64 etc.
--release release
select which release should be queried. Either release codenames (sid) or release states (unstable) can be used.

Binary package information

Information about what packages are in the various Debian releases is provided by the Judd plugin. The most commonly used commands and some sample output are shown below.

Package versions

Display the versions of a package that are available in each of the indexed repositories.

versions packagename [ --arch architecture ] [ --release release ]
versions libc6
Package: libc6 on amd64 -- lenny: 2.7-18lenny7; lenny-security: 2.7-18lenny7; squeeze-updates: 2.11.3-3; squeeze: 2.11.3-4; squeeze-proposed-updates: 2.11.3-4; sid: 2.13-35; wheezy: 2.13-35
versions libc0.1 --arch kfreebsd-i386
Package: libc0.1 on kfreebsd-i386 -- squeeze: 2.11.3-4; squeeze-proposed-updates: 2.11.3-4; sid: 2.13-35; wheezy: 2.13-35
versions debhelper --release squeeze-backports
Package: debhelper on amd64 -- squeeze-backports: 9.20120608~bpo60+1
versions libc6 --arch hurd-i386
No package named 'libc6' was found in hurd-i386.

Display the architectures for which a package is available and the version that is available for each architecture.

arches packagename [ --release release ]
arches libc6
Package libc6 in squeeze: amd64 (2.11.3-4), armel (2.11.3-4), i386 (2.11.3-4), mips (2.11.3-4), mipsel (2.11.3-4), powerpc (2.11.3-4), s390 (2.11.3-4), sparc (2.11.3-4)
arches gcc-4.7 --release sid
Package gcc-4.7 in sid: amd64 (4.7.2-3), armel (4.7.2-2), armhf (4.7.2-2), hurd-i386 (4.7.2-2), i386 (4.7.2-3), ia64 (4.7.2-2), kfreebsd-amd64 (4.7.2-3), kfreebsd-i386 (4.7.2-3), mips (4.7.2-2), mipsel (4.7.2-2), powerpc (4.7.2-3), s390 (4.7.2-3), s390x (4.7.2-3), sparc (4.7.2-2)
arches debhelper
Package debhelper in squeeze: all (8.0.0)

About a package

Display the short description, package size for the specified release and architecture or the popcon data for a package. Relevant WNPP bugs are displayed if titled correctly.

info packagename [ --arch architecture ] [ --release release ]
info libc6
Package libc6 (libs, required) in squeeze/amd64: Embedded GNU C Library: Shared libraries. Version: 2.11.3-4; Size: 3793.4k; Installed: 9360k; Homepage: http://www.eglibc.org
info libc6 --arch amd64 --release sid
Package libc6 (libs, required) in sid/amd64: Embedded GNU C Library: Shared libraries. Version: 2.13-35; Size: 4242.8k; Installed: 9504k; Homepage: http://www.eglibc.org
info htdig
Package htdig (web, optional) in squeeze/amd64: web search and indexing system - binaries. Version: 1:3.2.0b6-9.1; Size: 1811.7k; Installed: 6352k; O: #375733
popcon packagename
popcon frozen-bubble
Popcon data for frozen-bubble: inst: 2277, vote: 292, old: 1853, recent: 132, nofiles: 0

Finding packages

Searching for packages with axi-cache search, apt-cache search or aptitude search is always going to be faster than using Judd, but it is possible to search the database for package names.

names keyword
names translate*
Search for translate* in squeeze/amd64: translate 0.6-11; translate-docformat 0.6-5; translate-toolkit 1.7.0-0.1; translate-toolkit-dev-doc 1.7.0-0.1

Package relationships

The packages declared as Depends, Recommends, Suggests, Enhances, Conflicts, Breaks, and Replaces for any binary package can be found:

depends packagename [ --arch architecture ] [ --release release ]
recommends packagename [ --arch architecture ] [ --release release ]
suggests packagename [ --arch architecture ] [ --release release ]
enhances packagename [ --arch architecture ] [ --release release ]
conflicts packagename [ --arch architecture ] [ --release release ]
breaks packagename [ --arch architecture ] [ --release release ]
replaces packagename [ --arch architecture ] [ --release release ]
depends latexdraw --release sid
Package latexdraw in sid/amd64 -- depends: openjdk-7-jre | openjdk-6-jre | sun-java6-jre, libjiu-java, libjlibeps-java, java-wrappers.
conflicts libc6
Package libc6 in squeeze/amd64 -- conflicts: prelink (<= 0.0.20090311-1), tzdata (<< 2007k-1), tzdata-etch.

Provides and virtual packages

Packages in Debian can also provide the functionality of another package (or provide a virtual package); packages can depend on packages that are only virtual packages (i.e. package names that only appear in a Provides entry). Such virtual packages do not have versions and will not appear in versions or info queries. The packages listed in Provides can be queried using the provides command and the packages that declare that they provide a virtual package can be found using the rprovides command.

provides packagename [ --arch architecture ] [ --release release ]
provides postfix
Package postfix in squeeze/amd64 provides: mail-transport-agent, postfix-tls.
provides php5-cgi
Package php5-cgi in squeeze/amd64 provides: phpapi-20090626+lfs.
rprovides packagename [ --arch architecture ] [ --release release ]
rprovides mail-transport-agent
Package mail-transport-agent in squeeze/amd64 is provided by: postfix, msmtp-mta, courier-mta, esmtp-run, sendmail-bin, ssmtp, dma, exim4-daemon-heavy, masqmail, xmail, citadel-mta, exim4-daemon-light, nullmailer.

Dependency chains

It is also possible to trace through a dependency chain (similar to aptitude why pkg1 pkg2). Note that for very large dependency trees this process is not fast. Each dependency chain is separated by a semicolon (;). A hard dependency (Depends) is indicated by a filled arrow (▶) and a soft dependency (Recommends) is indicated by an open arrow (▷).

why packagename1 packagename2
why bacula libfontconfig1
Packages bacula and libfontconfig1 in squeeze/amd64 are linked by 6 chains: bacula ▶ bacula-client ▷ bacula-traymonitor ▶ libfontconfig1; bacula ▶ bacula-client ▷ bacula-traymonitor ▶ libgtk2.0-0 ▶ libfontconfig1; bacula ▶ bacula-client ▷ bacula-traymonitor ▶ libcairo2 ▶ libfontconfig1; bacula ▶ bacula-client ▷ bacula-traymonitor ▶ libgtk2.0-0 ▶ libpango1.0-0 ▶ libfontconfig1; bacula ▶ bacula-client ▷ bacula-traymonitor ▶ libgtk2.0-0 ▶ libpango1.0-0 ▶ libxft2 ▶ libfontconfig1; bacula ▶ bacula-client ▷ bacula-traymonitor ▶ libgtk2.0-0 ▶ libpango1.0-0 ▶ libpango1.0-common ▶ fontconfig ▶ libfontconfig1
why bacular texlive-binaries
No dependency chain found between packages bacula and texlive-binaries in squeeze/amd64.

Package contents

The files contained within each package are recorded in the Contents files on the mirrors. The command line tool apt-file can be used to search through these indices, as can Judd.

file pattern [ --arch architecture ] [ --release release ]
file /lib/libc.so.6
Search for /lib/libc.so.6 in squeeze/amd64: libc6: lib/libc.so.6
file libc.so.6
Search for libc.so.6 in squeeze/amd64: libc6-amd64: lib64/libc.so.6; libc6: lib/libc.so.6; libc6-i686: lib/i686/cmov/libc.so.6; libc6-xen: lib/i686/nosegneg/libc.so.6
file bin/*gettext* --release sid
Search for bin/*gettext* in sid/amd64: [truncated] python3.2: usr/bin/pygettext3.2; librep-dev: usr/bin/rep-xgettext; ruby-gettext: usr/bin/rgettext; po-debconf: usr/bin/debconf-gettextize; libgettext-ocaml-dev: usr/bin/ocaml-gettext, usr/bin/ocaml-xgettext; python-nevow: usr/bin/nevow-xmlgettext; python3: usr/bin/pygettext3; libglib2.0-dev: usr/bin/glib-gettextize; python2.7: usr/bin/pygettext2.7; python2.6: usr/bin/pygettext2.6; liblocale-maketext-lexicon-perl: usr/bin/xgettext.pl; gettext: usr/bin/gettextize, usr/bin/xgettext; gettext-base: usr/bin/gettext, usr/bin/gettext.sh, usr/bin/ngettext; python: usr/bin/pygettext; roundup: usr/bin/roundup-gettext; po4a: usr/bin/po4a-gettextize

Note that files created by maintainer scripts (such as configuration files) and files managed by the alternatives system are not necessarily indexed in Contents. If there are too many matches, Judd will truncate the output.

Source package information

The binary packages that are installed on a Debian system are derived from source packages. The versions command shown above for binary packages can be used to see source package versions by prefixing the package name with src:.

Source/binary mapping

Obtain information about source packages and their relationships to binary packages. Here, binary_packagename is used for the Debian binary package and source_packagename for the Debian source package. See Debian Reference §7.1 for more information on Debian source packages.

source binary_packagename [ --arch architecture ] [ --release release ]
binaries source_packagename [ --arch architecture ] [ --release release ]

What source package produced libc6 in lenny? squeeze?

source libc6 --release lenny
Package libc6 in lenny -- source: glibc
source libc6
Package libc6 in squeeze -- source: eglibc

What source package makes the python package?

source python
Package python in squeeze -- source: python-defaults

What other binary packages come out of the python-defaults package?

binaries python-defaults --release sid
Source python-defaults in sid: Binaries: python-minimal, python-dbg, python-examples, python-all-dev, python-dev, python, python-all, python-all-dbg, idle, python-doc

Building source packages

The build-time dependencies of a source package are listed by the maintainer as being for general package building (Build-Depends) or only for building the architecture-independent parts of the package (Build-Depends-Indep).
Section 7.7 of the Debian Policy Manual defines these terms in mode detail.
builddep source_packagename [ --release release ]
builddep python-defaults --release sid
Package python-defaults in sid -- Build-Depends: debhelper (>= 8~); Build-Depends-Indep: libhtml-tree-perl, debiandoc-sgml, python-docutils (>= 0.4-3).

Building backported packages

While pre-compiled backports are available for Debian stable releases already, it is also possible to make your own. It is possible to check if the declared build-dependencies are available in your target release. Note that just because the build-dependencies are satisfied doesn't mean that the package will build and function correctly. Conversely, it is sometimes still possible to backport a package that doesn't have its build-dependencies satisfied by skipping some compilation options.

checkbackport source_packagename [ --fromrelease release ] [ --torelease release ] [ --arch architecture ] [ --verbose ]
checkbackport latexdraw
Backporting package latexdraw in sid→squeeze/i386: all build-dependencies satisfied using squeeze.
checkbackport digikam --fromrelease experimental --torelease squeeze
Backporting package digikam in experimental→squeeze/i386: unsatisfiable build dependencies: Build-Depends: kdelibs5-dev (>= 4:4.7), kdepimlibs5-dev (>= 4:4.7), libmarble-dev (>= 4:4.7), libqtwebkit-dev, libopencv-dev.
checkbackport translate-toolkit --verbose
Backporting package translate-toolkit in sid→squeeze/i386: all build-dependencies satisfied using squeeze, squeeze-backports.
squeeze: python (>= 2.6.6-3~),python-lxml,python-vobject,python-simplejson; squeeze-backports: debhelper (>= 9~)

If --verbose is specified, a detailed breakdown of the build-dependencies and which release they were found in will be provided to you in a private message.

The --fromrelease parameter defaults to sid while --torelease defaults to the current stable release. Packages from stable-backports will automatically be included if needed. The output shows the releases that were used to find the build-dependencies. The presence of build-dependencies that are not required for the specified architecture is noted with an archignore pseudo-release in the output. Build-dependencies that have been found through virtual packages and Provides relationships cause a virtual pseudo-release to be reported in the output. Reliance on virtual build-dependencies can indicate that a backport is more likely to fail to compile (FTBFS).

This command does not take account of the co-installability of the build-dependencies and does not look at Build-Conflicts.

Uploading packages

Information about the maintainers of a package and when versions were uploaded is available. The upload of specific versions of a package can be queried; by default the most recent upload information is returned.

maint source_packagename [ version ]
maint eglibc
Package eglibc version 2.13-35 was uploaded by Aurelien Jarno on 2012-07-22, last changed by Aurelien Jarno and maintained by Aurelien Jarno.
maint python-pyx 0.10-0+nmu1
Package pyx version 0.10-0+nmu1 was uploaded by Mike O'Connor (stew) on 2009-08-09, last changed by Stuart Prescott and maintained by Ernesto Nadir Crespo Avila. (non-maintainer upload)

A list of recently uploaded versions and the upload dates can also be seen.

recent source_packagename
recent python-pyx
Package python-pyx recent uploads: 0.11.1-2 2011-11-27, 0.11.1-1 2011-06-03, 0.10-2 2010-02-11, 0.10-1 2009-11-04, 0.10-0+nmu3 2009-10-20, 0.10-0+nmu2 2009-10-07, 0.10-0+nmu1 2009-08-09, 0.9-4 2007-02-21, 0.9-3 2006-11-26, 0.9-2 2006-06-15.

Further details of recent uploads, similar to the whouploads command from the devscripts package, can also be obtained.

whouploads source_packagename number
whouploads python-pyx
Package pyx version 0.11.1-2 was uploaded by Stuart Prescott on 2011-11-27, last changed by Stuart Prescott and maintained by Stuart Prescott.
Package pyx version 0.11.1-1 was uploaded by Michael O'Connor (stew) on 2011-06-03, last changed by Stuart Prescott and maintained by Stuart Prescott.
Package pyx version 0.10-2 was uploaded by Jakub Wilk on 2010-02-11, last changed by Stuart Prescott and maintained by Stuart Prescott.

Bug tracking

The Ultimate Debian Database imports data from the Debian Bug Tracking System (BTS) on a regular basis. Having a nice database full of bug details can be quite handy, but the delay in importing the information poses some obvious limitations.

Bugs in packages

The status of an individual bug can be seen, an overview of the bugs in a package generated or bugs with titles in a package can be located.

bug (number | package [ keyword ])
bug 600600
Bug http://bugs.debian.org/600600 in upgrade-reports (open, squeeze): «upgrade-reports: lenny->squeeze and libuuid-perl (and apt-get vs aptitude)»; severity: normal; opened: 2010-10-18; last modified: 2010-12-12.
bug iceweasel
Bug summary for package iceweasel: wishlist: 113, minor: 45, normal: 198, important: 64, grave: 1
bug src:iceweasel
Bug summary for package src:iceweasel: wishlist: 121, minor: 50, normal: 210, important: 70, grave: 1
bug iceweasel crash
Matching bugs: #294428, #305490, #320553, #324791, #386310, #404173, #446069, #517876, #637890, #642537, #652941, #661387, #674908, #675707, #681852, #688760

An overview of the release-critical bugs in a package can be seen.

bug rc package
bug rc libc6
Release critical bugs in package libc6 (3): #555168 (forwarded, squeeze-ignore, wheezy-ignore), #634261 (open, upstream), #684889 (open, security)

Administrative tasks tracked through bugs

The reason a source package was removed from Debian can be located.

bug rm package
bug rm sun-java6
Bug http://bugs.debian.org/646524 in ftp.debian.org (done): «RM: sun-java6 -- ROM; security issues and newer versions cannot be redistributed»; severity: normal; opened: 2011-10-24; last modified: 2011-12-01.

Work-needed and prospective packages (WNPP) bugs can be searched too. WNPP bugs include O (orphaned), RFA (request for adoption), ITA (intent to adopt), ITP (intent to package), RFP (request for packaging).

bug rm package
bug wnpp cinnamon
Bug http://bugs.debian.org/657395 in wnpp (open): «ITP: cinnamon -- Cinnamon desktop»; severity: wishlist; opened: 2012-01-25; last modified: 2012-09-30.
bug wnpp htdig
Bug http://bugs.debian.org/375733 in wnpp (open): «O: htdig -- web search and indexing system»; severity: normal; opened: 2006-06-27; last modified: 2012-06-07.

New versions of packages can be added to the archive at the request of maintainers who do not (yet) have upload permissions. Such requests may be contained within RFS (Request for Sponsorship) bug reports.

bug rfs package
bug rfs cinnamon
#680546 (open): RFS: cinnamon/1.6.1-1 [ITP] (Nicolas Bourdaud <nicolas.bourdaud@[redacted]>)

Hardware support information

Information about the hardware support provided by the kernels in various Debian releases is made available by the Piccy plugin.

Piccy indexes the kernel config and PCI-Id mappings for the i686 kernels in all debian releases including the backports.debian.org repositories. Additionally, the kernel from the kernel team's build server repository may be indexed if it is available. Kernel updates released by the security team are included in this indexing although these rarely (if ever?) change the data.

The PCI-Id for a device may be obtained with the command lspci -nn (from the pciutils package). Further information and other approaches to finding this information can be found on the Debian wiki. An example output from lspci -nn is:

0b:00.0 Network controller [0280]: Intel Corporation PRO/Wireless 3945ABG [Golan] Network Connection [8086:4222] (rev 02)

which shows that this wireless device has a PCI-Id of 8086:4222.

PCI-Id to kernel module

Display the kernel module or modules that claim to support a specified PCI-Id. The device and its manufacturer are identified based on the pci.ids database. An index of kernel modules is used to see which, if any, modules will claim that device (based on modules.pcimap). A link to kmuto's HCL is provided for further information about the device. Links to appropriate pages in the Debian wiki are also given.

pciid pci-id [ --release release ]
pciid 8086:4222
[8086:4222] is 'PRO/Wireless 3945ABG [Golan] Network Connection' from 'Intel Corporation' with kernel modules 'ata_generic', 'iwl3945' in squeeze. See also http://kmuto.jp/debian/hcl/index.rhtmlx?check=1&lspci=8086:4222 http://wiki.debian.org/iwlegacy
pciid 8086:4237 --release lenny
[8086:4237] is 'PRO/Wireless 5100 AGN [Shiloh] Network Connection' from 'Intel Corporation' with no known kernel module in lenny but has kernel module 'iwlwifi', 'ata_generic', 'snd-hda-intel' in sid. See also http://kmuto.jp/debian/hcl/index.rhtmlx?check=1&lspci=8086:4237

Note that a few modules like ata_generic, nvidiafb and snd-hda-intel are almost always false-positives from a wildcard match from the driver - unless you were actually asking about a disk or audio card. (Hints on how to do this matching more robustly are most welcome.)

Piccy will search through the sid kernel if no matches in the kernel for the requested release are found.

Device name to PCI-Id

Users frequently know the name of the device but not the actual PCI-Id. Trying to work out the PCI-Id from the name isn't easy, but can sometimes be done. This is usually best done in a private message to save flooding the channel.

pciname keyword

The keyword is part of the device name from the pci.ids database. It cannot contain non-alphanumeric characters and has a wildcard added to the beginning and end of the term.

For example, a user claimed to have a 82573E network adapter but stated that the PCI-Id was `80086:1082` (which is malformed and incorrect).

pciname 82573E
'82573E' matched: [8086:108c] '82573E Gigabit Ethernet Controller (Copper)' from 'Intel Corporation', [8086:108e] '82573E KCS (Active Management)' from 'Intel Corporation', [8086:10b3] '82573E PRO/1000 PM Network Connection' from 'Intel Corporation'

Kernel information

The available kernels and their configuration are also searchable through the Piccy module.

Available kernels

The kernels indexed to determine PCI-Id support can be interrogated using the kernels command.

kernels [ --release release ]
kernels
Available kernel versions are: experimental: 3.5-trunk-686-pae (3.5.2-1~experimental.1); sid: 3.2.0-4-686-pae (3.2.30-1); wheezy: 3.2.0-3-686-pae (3.2.23-1); squeeze-backports: 3.2.0-0.bpo.3-686-pae (3.2.23-1~bpo60+2); squeeze: 2.6.32-5-686 (2.6.32-46); lenny-backports: 2.6.32-bpo.5-686 (2.6.32-35~bpo50+1); lenny: 2.6.26-2-686 (2.6.26-29)
kernels --release squeeze-backports
Available kernel versions are: squeeze-backports: 3.2.0-0.bpo.3-686-pae (3.2.23-1~bpo60+2)

Kernels configuration options

The Debian kernel packages ship the kernel config that was used to compile the kernel in /boot/config-$(uname -r) and grep OPTION /boot/config-$(uname -r) can provide useful information. The i686 kernel configurations for the same releases as for the pciid command are indexed.

kconfig option [ --release release ]

where option is a keyword or part of the config option being searched for. It cannot contain non-alphanumeric characters and has a wildcard added to the beginning and end of the term. CONFIG_ is not required to be added to the term and the search is case-insensitive.

Examples:

kconfig CIFS
Searching for 'CIFS' in squeeze kernel config gives CIFS=m CIFS_WEAK_PW_HASH=y CIFS_UPCALL=y CIFS_XATTR=y CIFS_POSIX=y CIFS_DFS_UPCALL=y CIFS_EXPERIMENTAL=y.
kconfig IWL --release squeeze
Searching for 'IWL' in squeeze kernel config gives IWLWIFI=m IWLWIFI_LEDS=y IWLWIFI_SPECTRUM_MEASUREMENT=y IWLAGN=m IWL4965=y IWL5000=y IWL3945=m IWL3945_SPECTRUM_MEASUREMENT=y.
kconfig IWL --release squeeze-backports
Searching for 'IWL' in squeeze-backports kernel config gives IWLWIFI=m IWLWIFI_LEGACY=m IWL4965=m IWL3945=m.

Source code

The latest source code for the Judd and Piccy plugins can be found in the following git repositories: