AptPkg::Source(3pm)
π AptPkg::Source π
okay so bestie, welcome to the AptPkg::Source page π
this one lives in the User Contributed Perl Documentation bunch (manual section 3pm, if u were wondering), and it's literally the Perl door into apt's source package situation. come thru β¨
πΈ NAME πΈ
AptPkg::Source β the APT source package interface π«Ά
π¦ SYNOPSIS π¦
use AptPkg::Source;
π DESCRIPTION π
The AptPkg::Source module provides an interface to APT's source package lists. periodt.
π AptPkg::Source
The AptPkg::Source package implements the APT pkgSrcRecords class as a hash reference (it inherits from AptPkg::hash). The hash is keyed on source or binary package name, and the value is an array reference of the details of matching source packages. iconic behaviour honestly.
β οΈ not me needing to tell u this: there is no iterator class, so it is not possible to get a list of all keys (withkeysoreach). sad but true, no cap π
π§ Constructor
new([SOURCELIST])β Instantiation of the object uses configuration from the$AptPkg::Config::_configobject (which is automatically initialised if it hasn't been done explicitly, so don't stress π).
If no SOURCELIST is specified, then the value of Dir::Etc::sourcelist from the configuration object is used (generally /etc/apt/sources.list).
π Methods
find(PACK, [SRCONLY])β In a list context, return a list of source package details for the given PACK, which may either be a source package name, or the name of one of the binaries provided (unless SRCONLY is provided and true).
In a scalar context, the source package name of the first entry is returned.
get,existsβ These methods are used to implement the hashref abstraction:$obj->get($pack)and$obj->{$pack}are equivalent π―
The get method has the same semantics as find, but returns an array reference in a scalar context.
The list returned by the find (and get) methods consists of hashes which describe each available source package (in order of discovery from the deb-src files described in sources.list). lowkey elegant.
Each hash contains the following entries:
Package,Version,Maintainer,Sectionβ strings giving the source package name, version, maintainer and section.AsStrβ the full source record as a string in Debian control file syntax <https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-controlsyntax>, which is an RFC822-like set of key-value pairs with the values potentially wrapped. It is relatively trivial to parse:
my %fields = map { split /:\s+/ } split /\n(?! )/, $as_str;
Binariesβ a list of binary package names from the package.BuildDependsβ a hash describing the build dependencies of the package. Possible keys are:
"Build-Depends", "Build-Depends-Indep", "Build-Conflicts",
"Build-Conflicts-Indep".
The values are a list of dependencies/conflicts with each item being a list containing the package name followed optionally by an operator and version number.
Operator values evaluate to a comparison string* (>, >=, etc) or one of the AptPkg::Dep:: constants in a numeric context (see "pkgCache::Dep::DepCompareOp" in AptPkg(3pm)).
*Note that this is a normalised, rather than Debian-style (>> vs >) string. yes bestie, the string is normalised, don't come for me π
Filesβ a list of files making up the source package, each described by a hash containing the keys:
"Checksum-FileSize", "MD5Hash", "SHA256", "Size", "ArchiveURI",
"Type".
π₯ SEE ALSO π₯
AptPkg::Config(3pm), AptPkg::Cache(3pm), AptPkg(3pm), AptPkg::hash(3pm).
the whole friend group fr fr π
β¨ AUTHOR β¨
Brendan O'Dea <bod@debian.org> β king behaviour, we stan π
and that's the whole page bestie, we ate and left no crumbs π this was perl v5.42.3, dated 2026-08-19 β go forth and read ur sources πβ¨
π¦ where this page comes from
- ubuntu stonking: libapt-pkg-perl 0.1.43build1 Β· GPL-3.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms