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
- About the bot
- Binary package information
- Source package information
- Bugs tracking information
- Hardware information
- Kernel information
- 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:
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:
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
oldstable
and (usually)oldoldstable
are kept in the database even after support from the security team finishes. LTS/ELTS efforts continue support for some parts of these releases, and the This is only to help people who are tardy in upgrading and not because running an unsupported release is a clever idea.testing-security
does not always contain meaningful updates if the Testing Security team are not currently providing security support fortesting
.- the release states (
unstable
etc) can be used as well as code names (sid
).
#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.
Display the architectures for which a package is available and the version that is available for each architecture.
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.
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.
Package relationships
The packages declared as Depends
, Recommends
,
Suggests
, Enhances
, Conflicts
,
Breaks
, and Replaces
for any binary package can be found:
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.
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 (▷).
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
.
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.
What source package produced libc6
in lenny? squeeze?
What source package makes the python
package?
What other binary packages come out of the python-defaults
package?
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.
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.
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.
A list of recently uploaded versions and the upload dates can also be seen.
Further details of recent uploads, similar to the whouploads
command from the devscripts
package, can also be obtained.
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.
An overview of the release-critical bugs in a package can be seen.
Administrative tasks tracked through bugs
The reason a source package was removed from Debian can be located.
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).
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.
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:
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.
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.
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).
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 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.
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:
Source code
The latest source code for the Judd
and Piccy
plugins can be found in the following git
repositories:
- judd-doc: this documentation
- limnoria-plugin-judd: source code for Judd plugin
- limnoria-plugin-piccy: source code for Piccy plugin
- udd-cache: source code for UDD wrapper Python module and CLI tools
- pydebcontents: Python module for Debian archive
Contents
files - kinfo: Python module for extracting and querying information about kernel modules, firmware, PCI-Id database