DEBUGINF...T-CONFIG(7)

✨ NAME ✨

okay bestie, gather round πŸ’– this page is debuginfod-client-config β€” and it's literally the whole vibe board for debuginfod client environment variables, cache control files, and etc. that's it, that's the girl. no cap.


🌸 SYNOPSIS 🌸

so like, a bunch of environment variables and control files are out here pulling the strings on how debuginfod client applications behave. it's giving puppetmaster energy πŸŽ€

the tea below is generic. some debuginfod clients might internally override the defaults listed here, so don't come for me if your fave client does its own thing. iykyk. πŸ’…


πŸ’œ ENVIRONMENT VARIABLES πŸ’œ

every single one of these is a little knob you can turn. obsessed.

  • $TMPDIR β€” this env var points at the file system to be used for temporary files. the default? /tmp. iconic. ⭐
  • $DEBUGINFOD_URLS β€” this one holds a list of URL prefixes for trusted debuginfod instances. alternate URL prefixes are separated by a space. this env var may be set by /etc/profile.d scripts that read /etc/debuginfod/*.urls files. 🌈

bestie it can ALSO contain policy defining tags that dictate the response policy for verifying per-file IMA signatures in RPMs. because the space-separated list gets read left to right, the moment you hit a tag, the subsequent URLs up to the next tag get handled using that specified policy. and every URL before the first tag uses the default policy, ima:ignore. for example:

DEBUGINFOD_URLS="https://foo.com ima:enforcing https://bar.ca http://localhost:8002/ ima:ignore https://baz.org"

where foo.com and baz.org use the default ignore policy, and bar.ca and localhost use an enforcing policy. the policy tag may be one of the following:

  • ima:enforcing β€” every downloaded file requires a valid signature, fully protecting integrity. πŸ”₯
  • ima:ignore β€” skips verification altogether, providing no protection. πŸ’€

alerts of validation failure will be directed as specified in $DEBUGINFOD_VERBOSE.

  • $DEBUGINFOD_CACHE_PATH β€” this env var governs the location of the cache where downloaded files and cache-control files are kept. the default directory is chosen based on other environment variables, so like, see below bestie πŸ‘‡
  • $DEBUGINFOD_PROGRESS β€” governs the default progress function. if it's set, and a progressfn is not explicitly set, then the library will configure a default progressfn. this function will append a simple progress message periodically to stderr. the default is no progress function output. (lowkey peaceful ngl πŸ¦‹)
  • $DEBUGINFOD_VERBOSE β€” governs the default file descriptor for verbose output. if it's set, and a verbose fd is not explicitly set, then the verbose output will be produced on STDERR_FILENO.
  • $DEBUGINFOD_RETRY_LIMIT β€” governs the default limit of retry attempts. if a query failed with an errno other than ENOENT, it will initiate several attempts within the limit. she's persistent, she's trying πŸ’ͺ
  • $DEBUGINFOD_TIMEOUT β€” governs the download commencing timeout, in seconds, for each debuginfod HTTP connection. a server is skipped if it either fails to establish a connection within the timeout or fails to provide at least 100K of data within the timeout. the default is 90 seconds. (zero or negative means "no timeout".) ⏰
  • $DEBUGINFOD_MAXTIME β€” dictates how long the client will wait to complete the download of a file found on a server, in seconds. it's best used to ensure that a file is downloaded quickly or be rejected. the default is 0 (infinite time). ⏳
  • $DEBUGINFOD_MAXSIZE β€” dictates the maximum size of a file to download, in bytes. best used if the user would like to ensure only small files are downloaded. a value of 0 causes no consideration for size, and the client may attempt to download a file of any size. the default is 0 (infinite size). πŸ“
  • $DEBUGINFOD_HEADERS_FILE β€” points to a file that supplies headers to outbound HTTP requests, one per line. the header lines shouldn't end with CRLF, unless that's the system newline convention. whitespace-only lines are skipped. πŸ™ˆ
  • $DEBUGINFOD_IMA_CERT_PATH β€” contains a list of absolute directory paths holding X.509 certificates for RPM per-file IMA-verification. alternate paths are separated by colons. πŸ’…

πŸŽ€ CACHE πŸŽ€

before each query, the debuginfod client library checks for a need to clean the cache. if it's time to clean, the library traverses the cache directory and removes downloaded debuginfo-related artifacts and newly empty directories, if they have not been accessed recently. she's doing spring cleaning, let her cook 🧹✨

control files are located directly under the cache directory. they contain simple decimal numbers to set cache-related configuration parameters. if the files do not exist, the client library creates the files with the default parameter values as content. so self-sufficient, we love her πŸ‘‘

after each query, the debuginfod client library deposits newly received files into a directory & file that is named based on the build-id. a failed query is also cached by a special file. the naming convention used for these artifacts is deliberately undocumented. mystery queen behavior, respect. 🫢

🌈 cache directories 🌈

  • $XDG_CACHE_HOME/debuginfod_client/ β€” default cache directory, if $XDG_CACHE_HOME is set.
  • $HOME/.cache/debuginfod_client/ β€” default cache directory, if $XDG_CACHE_HOME is not set.
  • $HOME/.debuginfod_client_cache/ β€” deprecated cache directory, used only if preexisting. > she's deprecated bestie, don't build your whole life around her 😭

⭐ control files ⭐

  • cache_clean_interval_s β€” this control file gives the interval between cache cleaning rounds, in seconds. the default is 86400, one day. 0 means "immediately". 🧼
  • max_unused_age_s β€” sets how long unaccessed debuginfo-related files are retained, in seconds. the default is 604800, one week. 0 means "immediately". ⏳
  • cache_miss_s β€” sets how long to remember a query failure, in seconds. new queries for the same artifacts within this time window are short-circuited (returning an immediate failure instead of sending a new query to servers). this accelerates queries that probably would still fail. the default is 600, 10 minutes. 0 means "forget immediately". πŸ’€
  • metadata_retention_s β€” sets how long to remember the results of a metadata query. new queries for the same artifacts within this time window are short-circuited (repeating the same results). this accelerates queries that probably would probably have the same results. the default is 3600, 1 hour. 0 means "do not retain". 🌸

ok that's the whole page bestie, every last detail, no skips, no crumbs left behind πŸ’– this came to you straight from the Miscellaneous Information Manual, page debuginfod-client-config(7). mwah, go forth and configure πŸ«ΆπŸ’…βœ¨
πŸ“¦ where this page comes from