deb-symbols(5)

πŸ’… deb-symbols(5) β€” like, the whole manual, bestie πŸ’…

okay so this is deb-symbols(5) from the dpkg suite, and it's literally the glow-up guide to Debian's extended shared library info files. buckle up πŸŽ€


✨ NAME ✨

deb-symbols β€” Debian's extended shared library information file. that's it, that's the vibe. πŸ’–


πŸ¦‹ SYNOPSIS πŸ¦‹

DEBIAN/symbols

one file. one path. main character energy only. πŸ‘‘


🌸 DESCRIPTION 🌸

so the symbol files ship inside Debian binary packages, and their format is a subset of the template symbol files that dpkg-gensymbols(1) uses in Debian source packages β€” peep deb-src-symbols(5) for the source-side lore. πŸ”

the rule, no cap: a symbols file must be shipped in the same binary package as the shared libraries it describes. why? because that guarantees the symbol descriptions actually match the library being described, and so the symbols file can be found from the package that owns the shared library. matching sets. periodt. πŸ’…

the format for an extended shared library dependency info entry in these files is, and I quote the layout exactly:

 library-soname main-dependency-template
 [| alternative-dependency-template]
 [...]
 [* field-name: field-value]
 [...]
  symbol minimal-version [id-of-dependency-template]

so let's break it down, bestie:

  • the library-soname is exactly the value of the SONAME field as exported by objdump(1). like, exactly exactly. don't get creative. πŸ™ˆ
  • a dependency-template is a dependency where #MINVER# is dynamically replaced either by a version check like "(>= minimal-version)" or by nothing at all (that's when an unversioned dependency is deemed sufficient). slay, conditional formatting. ✨
  • each exported symbol β€” listed as name@version, with version being "Base" if the library isn't versioned β€” is associated to a minimal-version of its dependency template. the main dependency template is always used, and it'll end up being combined with the dependency template referenced by id-of-dependency-template if that's present. the first alternative dependency template is numbered 1, the second one 2, etc. and every column is separated by exactly a single whitespace. one. single. space. πŸ’€

each entry for a library can also carry some fields of meta-information, and those live on lines starting with an asterisk. currently the only valid fields are these icons right here:

⭐ Build-Depends-Package

it indicates the name of the "-dev" package associated with the library, and dpkg-shlibdeps uses it to make sure the dependency it generates is at least as strict as the corresponding build dependency. πŸ’ͺ

supported since dpkg 1.14.13.

⭐ Build-Depends-Packages

the same as Build-Depends-Package but it accepts a comma-separated list of package names. this field will override any Build-Depends-Package field present, and it's mostly useful with "-dev" packages and metapackages that depend on these β€” say, for a transition period. 🫢

supported since dpkg 1.20.0.

⭐ Allow-Internal-Symbol-Groups

it indicates what internal symbol groups should be ignored, as a whitespace separated list, so that the symbols contained in those groups get included in the output file. this should only be necessary for toolchain packages that provide those internal symbols. the available groups are system dependent β€” for ELF and GNU-based systems these are aeabi and gomp. 🧚

supported since dpkg 1.20.1.


🌈 EXAMPLES 🌈

πŸ“ Simple symbols file

 libftp.so.3 libftp3 #MINVER#
  DefaultNetbuf@Base 3.1-1-6
  FtpAccess@Base 3.1-1-6
  [...]

clean, minimal, iconic. look at her go. ✨

πŸ“ Advanced symbols file

 libGL.so.1 libgl1
 | libgl1-mesa-glx #MINVER#
 * Build-Depends-Package: libgl1-mesa-dev
  publicGlSymbol@Base 6.3-1
  [...]
  implementationSpecificSymbol@Base 6.5.2-7 1
  [...]

see that 1 at the end of the last line? that's the id-of-dependency-template doing its thing. ate. πŸ”₯


πŸ‘€ SEE ALSO πŸ‘€

go read them, iykyk. πŸ“š


that's the whole page, bestie, no details skipped, we keep every single one. πŸ’œ

this had 1.23.11-dirty energy and dropped on 2026-09-09 β€” mwah, sending you off with a kiss from the dpkg suite πŸ«ΆπŸ’–

πŸ“¦ where this page comes from