Blame doc/debuginfod.8

Packit 032894
'\"! tbl | nroff \-man
Packit 032894
'\" t macro stdmacro
Packit 032894
Packit 032894
.de SAMPLE
Packit 032894
.br
Packit 032894
.RS 0
Packit 032894
.nf
Packit 032894
.nh
Packit 032894
..
Packit 032894
.de ESAMPLE
Packit 032894
.hy
Packit 032894
.fi
Packit 032894
.RE
Packit 032894
..
Packit 032894
Packit 032894
.TH DEBUGINFOD 8
Packit 032894
.SH NAME
Packit 032894
debuginfod \- debuginfo-related http file-server daemon
Packit 032894
Packit 032894
.SH SYNOPSIS
Packit 032894
.B debuginfod
Packit 032894
[\fIOPTION\fP]... [\fIPATH\fP]...
Packit 032894
Packit 032894
.SH DESCRIPTION
Packit 032894
\fBdebuginfod\fP serves debuginfo-related artifacts over HTTP.  It
Packit 032894
periodically scans a set of directories for ELF/DWARF files and their
Packit Service 35cfd5
associated source code, as well as archive files containing the above, to
Packit 032894
build an index by their buildid.  This index is used when remote
Packit 032894
clients use the HTTP webapi, to fetch these files by the same buildid.
Packit 032894
Packit 032894
If a debuginfod cannot service a given buildid artifact request
Packit 032894
itself, and it is configured with information about upstream
Packit 032894
debuginfod servers, it queries them for the same information, just as
Packit 032894
\fBdebuginfod-find\fP would.  If successful, it locally caches then
Packit 032894
relays the file content to the original requester.
Packit 032894
Packit Service 35cfd5
Indexing the given PATHs proceeds using multiple threads.  One thread
Packit Service 35cfd5
periodically traverses all the given PATHs logically or physically
Packit Service 35cfd5
(see the \fB\-L\fP option).  Duplicate PATHs are ignored.  You may use
Packit Service 35cfd5
a file name for a PATH, but source code indexing may be incomplete;
Packit Service 35cfd5
prefer using a directory that contains the binaries.  The traversal
Packit Service 35cfd5
thread enumerates all matching files (see the \fB\-I\fP and \fB\-X\fP
Packit Service 35cfd5
options) into a work queue.  A collection of scanner threads (see the
Packit Service 35cfd5
\fB\-c\fP option) wait at the work queue to analyze files in parallel.
Packit Service 35cfd5
Packit Service 35cfd5
If the \fB\-F\fP option is given, each file is scanned as an ELF/DWARF
Packit Service 35cfd5
file.  Source files are matched with DWARF files based on the
Packit Service 35cfd5
AT_comp_dir (compilation directory) attributes inside it.  Caution:
Packit Service 35cfd5
source files listed in the DWARF may be a path \fIanywhere\fP in the
Packit Service 35cfd5
file system, and debuginfod will readily serve their content on
Packit Service 35cfd5
demand.  (Imagine a doctored DWARF file that lists \fI/etc/passwd\fP
Packit Service 35cfd5
as a source file.)  If this is a concern, audit your binaries with
Packit Service 35cfd5
tools such as:
Packit 032894
Packit 032894
.SAMPLE
Packit 032894
% eu-readelf -wline BINARY | sed -n '/^Directory.table/,/^File.name.table/p'
Packit 032894
or
Packit 032894
% eu-readelf -wline BINARY | sed -n '/^Directory.table/,/^Line.number/p'
Packit 032894
or even use debuginfod itself:
Packit 032894
% debuginfod -vvv -d :memory: -F BINARY 2>&1 | grep 'recorded.*source'
Packit 032894
^C
Packit 032894
.ESAMPLE
Packit 032894
Packit Service 35cfd5
If any of the \fB\-R\fP, \fB-U\fP, or \fB-Z\fP options is given, each
Packit Service 35cfd5
file is scanned as an archive file that may contain ELF/DWARF/source
Packit Service 35cfd5
files.  Archive files are recognized by extension.  If \-R is given,
Packit Service 35cfd5
".rpm" files are scanned; if \-D is given, ".deb" and ".ddeb" files
Packit Service 35cfd5
are scanned; if \-Z is given, the listed extensions are scanned.
Packit Service 35cfd5
Because of complications such as DWZ-compressed debuginfo, may require
Packit Service 35cfd5
\fItwo\fP traversal passes to identify all source code.  Source files
Packit Service 35cfd5
for RPMs are only served from other RPMs, so the caution for \-F does
Packit Service 35cfd5
not apply.  Note that due to Debian/Ubuntu packaging policies &
Packit Service 35cfd5
mechanisms, debuginfod cannot resolve source files for DEB/DDEB at
Packit Service 35cfd5
all.
Packit 032894
Packit Service 35cfd5
If no PATH is listed, or none of the scanning options is given, then
Packit Service 35cfd5
\fBdebuginfod\fP will simply serve content that it accumulated into
Packit Service 35cfd5
its index in all previous runs, and federate to any upstream
Packit Service 35cfd5
debuginfod servers.
Packit 032894
Packit 032894
Packit 032894
.SH OPTIONS
Packit 032894
Packit 032894
.TP
Packit 032894
.B "\-F"
Packit Service 35cfd5
Activate ELF/DWARF file scanning.  The default is off.
Packit Service 35cfd5
Packit Service 35cfd5
.TP
Packit Service 35cfd5
.B "\-Z EXT" "\-Z EXT=CMD"
Packit Service 35cfd5
Activate an additional pattern in archive scanning.  Files with name
Packit Service 35cfd5
extension EXT (include the dot) will be processed.  If CMD is given,
Packit Service 35cfd5
it is invoked with the file name added to its argument list, and
Packit Service 35cfd5
should produce a common archive on its standard output.  Otherwise,
Packit Service 35cfd5
the file is read as if CMD were "cat".  Since debuginfod internally
Packit Service 35cfd5
uses \fBlibarchive\fP to read archive files, it can accept a wide
Packit Service 35cfd5
range of archive formats and compression modes.  The default is no
Packit Service 35cfd5
additional patterns.  This option may be repeated.
Packit 032894
Packit 032894
.TP
Packit 032894
.B "\-R"
Packit Service 35cfd5
Activate RPM patterns in archive scanning.  The default is off.
Packit Service 35cfd5
Equivalent to \fB\%\-Z\~.rpm=cat\fP, since libarchive can natively
Packit Service 35cfd5
process RPM archives.  If your version of libarchive is much older
Packit Service 35cfd5
than 2020, be aware that some distributions have switched to an
Packit Service 35cfd5
incompatible zstd compression for their payload.  You may experiment
Packit Service 35cfd5
with \fB\%\-Z\ .rpm='(rpm2cpio|zstdcat)<'\fP instead of \fB\-R\fP.
Packit Service 35cfd5
Packit Service 35cfd5
.TP
Packit Service 35cfd5
.B "\-U"
Packit Service 35cfd5
Activate DEB/DDEB patterns in archive scanning.  The default is off.
Packit Service 35cfd5
Equivalent to \fB\%\-Z\ .deb='dpkg-deb\ \-\-fsys\-tarfile\fP'
Packit Service 35cfd5
\fB\%\-Z\ .ddeb='dpkg-deb\ \-\-fsys\-tarfile'\fP.
Packit 032894
Packit 032894
.TP
Packit 032894
.B "\-d FILE" "\-\-database=FILE"
Packit 032894
Set the path of the sqlite database used to store the index.  This
Packit 032894
file is disposable in the sense that a later rescan will repopulate
Packit 032894
data.  It will contain absolute file path names, so it may not be
Packit 032894
portable across machines.  It may be frequently read/written, so it
Packit 032894
should be on a fast filesytem.  It should not be shared across
Packit 032894
machines or users, to maximize sqlite locking performance.  The
Packit Service 35cfd5
default database file is \%$HOME/.debuginfod.sqlite.
Packit 032894
Packit 032894
.TP
Packit 032894
.B "\-D SQL" "\-\-ddl=SQL"
Packit 032894
Execute given sqlite statement after the database is opened and
Packit 032894
initialized as extra DDL (SQL data definition language).  This may be
Packit 032894
useful to tune performance-related pragmas or indexes.  May be
Packit 032894
repeated.  The default is nothing extra.
Packit 032894
Packit 032894
.TP
Packit 032894
.B "\-p NUM" "\-\-port=NUM"
Packit Service 35cfd5
Set the TCP port number (0 < NUM < 65536) on which debuginfod should
Packit Service 35cfd5
listen, to service HTTP requests.  Both IPv4 and IPV6 sockets are
Packit Service 35cfd5
opened, if possible.  The webapi is documented below.  The default
Packit Service 35cfd5
port number is 8002.
Packit 032894
Packit 032894
.TP
Packit 032894
.B "\-I REGEX"  "\-\-include=REGEX"  "\-X REGEX"  "\-\-exclude=REGEX"
Packit 032894
Govern the inclusion and exclusion of file names under the search
Packit 032894
paths.  The regular expressions are interpreted as unanchored POSIX
Packit 032894
extended REs, thus may include alternation.  They are evaluated
Packit 032894
against the full path of each file, based on its \fBrealpath(3)\fP
Packit 032894
canonicalization.  By default, all files are included and none are
Packit 032894
excluded.  A file that matches both include and exclude REGEX is
Packit Service 35cfd5
excluded.  (The \fIcontents\fP of archive files are not subject to
Packit Service 35cfd5
inclusion or exclusion filtering: they are all processed.)  Only the
Packit Service 35cfd5
last of each type of regular expression given is used.
Packit 032894
Packit 032894
.TP
Packit 032894
.B "\-t SECONDS"  "\-\-rescan\-time=SECONDS"
Packit Service 35cfd5
Set the rescan time for the file and archive directories.  This is the
Packit Service 35cfd5
amount of time the traversal thread will wait after finishing a scan,
Packit 032894
before doing it again.  A rescan for unchanged files is fast (because
Packit 032894
the index also stores the file mtimes).  A time of zero is acceptable,
Packit 032894
and means that only one initial scan should performed.  The default
Packit 032894
rescan time is 300 seconds.  Receiving a SIGUSR1 signal triggers a new
Packit 032894
scan, independent of the rescan time (including if it was zero).
Packit 032894
Packit 032894
.TP
Packit 032894
.B "\-g SECONDS" "\-\-groom\-time=SECONDS"
Packit 032894
Set the groom time for the index database.  This is the amount of time
Packit 032894
the grooming thread will wait after finishing a grooming pass before
Packit 032894
doing it again.  A groom operation quickly rescans all previously
Packit 032894
scanned files, only to see if they are still present and current, so
Packit 032894
it can deindex obsolete files.  See also the \fIDATA MANAGEMENT\fP
Packit 032894
section.  The default groom time is 86400 seconds (1 day).  A time of
Packit 032894
zero is acceptable, and means that only one initial groom should be
Packit 032894
performed.  Receiving a SIGUSR2 signal triggers a new grooming pass,
Packit 032894
independent of the groom time (including if it was zero).
Packit 032894
Packit 032894
.TP
Packit 032894
.B "\-G"
Packit 032894
Run an extraordinary maximal-grooming pass at debuginfod startup.
Packit 032894
This pass can take considerable time, because it tries to remove any
Packit Service 35cfd5
debuginfo-unrelated content from the archive-related parts of the index.
Packit Service 35cfd5
It should not be run if any recent archive-related indexing operations
Packit 032894
were aborted early.  It can take considerable space, because it
Packit 032894
finishes up with an sqlite "vacuum" operation, which repacks the
Packit 032894
database file by triplicating it temporarily.  The default is not to
Packit 032894
do maximal-grooming.  See also the \fIDATA MANAGEMENT\fP section.
Packit 032894
Packit 032894
.TP
Packit 032894
.B "\-c NUM"  "\-\-concurrency=NUM"
Packit Service 35cfd5
Set the concurrency limit for the scanning queue threads, which work
Packit Service 35cfd5
together to process archives & files located by the traversal thread.
Packit Service 35cfd5
This important for controlling CPU-intensive operations like parsing
Packit Service 35cfd5
an ELF file and especially decompressing archives.  The default is the
Packit Service 35cfd5
number of processors on the system; the minimum is 1.
Packit 032894
Packit 032894
.TP
Packit 032894
.B "\-L"
Packit 032894
Traverse symbolic links encountered during traversal of the PATHs,
Packit 032894
including across devices - as in \fIfind\ -L\fP.  The default is to
Packit 032894
traverse the physical directory structure only, stay on the same
Packit 032894
device, and ignore symlinks - as in \fIfind\ -P\ -xdev\fP.  Caution: a
Packit 032894
loops in the symbolic directory tree might lead to \fIinfinite
Packit 032894
traversal\fP.
Packit 032894
Packit 032894
.TP
Packit Service 35cfd5
.B "\-\-fdcache\-fds=NUM"  "\-\-fdcache\-mbs=MB"  "\-\-fdcache\-prefetch=NUM2"
Packit Service 35cfd5
Configure limits on a cache that keeps recently extracted files from
Packit Service 35cfd5
archives.  Up to NUM requested files and up to a total of MB megabytes
Packit Service 35cfd5
will be kept extracted, in order to avoid having to decompress their
Packit Service 35cfd5
archives over and over again.  In addition, up to NUM2 other files
Packit Service 35cfd5
from an archive may be prefetched into the cache before they are even
Packit Service 35cfd5
requested.  The default NUM, NUM2, and MB values depend on the
Packit Service 35cfd5
concurrency of the system, and on the available disk space on the
Packit Service 35cfd5
$TMPDIR or \fB/tmp\fP filesystem.  This is because that is where the
Packit Service 35cfd5
most recently used extracted files are kept.  Grooming cleans this
Packit Service 35cfd5
cache.
Packit Service 35cfd5
Packit Service 35cfd5
.TP
Packit 032894
.B "\-v"
Packit 032894
Increase verbosity of logging to the standard error file descriptor.
Packit 032894
May be repeated to increase details.  The default verbosity is 0.
Packit 032894
Packit 032894
.SH WEBAPI
Packit 032894
Packit 032894
.\" Much of the following text is duplicated with debuginfod-find.1
Packit 032894
Packit 032894
debuginfod's webapi resembles ordinary file service, where a GET
Packit 032894
request with a path containing a known buildid results in a file.
Packit 032894
Unknown buildid / request combinations result in HTTP error codes.
Packit 032894
This file service resemblance is intentional, so that an installation
Packit 032894
can take advantage of standard HTTP management infrastructure.
Packit 032894
Packit 032894
There are three requests.  In each case, the buildid is encoded as a
Packit 032894
lowercase hexadecimal string.  For example, for a program \fI/bin/ls\fP,
Packit 032894
look at the ELF note GNU_BUILD_ID:
Packit 032894
Packit 032894
.SAMPLE
Packit 032894
% readelf -n /bin/ls | grep -A4 build.id
Packit 032894
Note section [ 4] '.note.gnu.buildid' of 36 bytes at offset 0x340:
Packit 032894
Owner          Data size  Type
Packit 032894
GNU                   20  GNU_BUILD_ID
Packit 032894
Build ID: 8713b9c3fb8a720137a4a08b325905c7aaf8429d
Packit 032894
.ESAMPLE
Packit 032894
Packit 032894
Then the hexadecimal BUILDID is simply:
Packit 032894
Packit 032894
.SAMPLE
Packit 032894
8713b9c3fb8a720137a4a08b325905c7aaf8429d
Packit 032894
.ESAMPLE
Packit 032894
Packit 032894
.SS /buildid/\fIBUILDID\fP/debuginfo
Packit 032894
Packit 032894
If the given buildid is known to the server, this request will result
Packit 032894
in a binary object that contains the customary \fB.*debug_*\fP
Packit 032894
sections.  This may be a split debuginfo file as created by
Packit 032894
\fBstrip\fP, or it may be an original unstripped executable.
Packit 032894
Packit 032894
.SS /buildid/\fIBUILDID\fP/executable
Packit 032894
Packit 032894
If the given buildid is known to the server, this request will result
Packit 032894
in a binary object that contains the normal executable segments.  This
Packit 032894
may be a executable stripped by \fBstrip\fP, or it may be an original
Packit 032894
unstripped executable.  \fBET_DYN\fP shared libraries are considered
Packit 032894
to be a type of executable.
Packit 032894
Packit 032894
.SS /buildid/\fIBUILDID\fP/source\fI/SOURCE/FILE\fP
Packit 032894
Packit 032894
If the given buildid is known to the server, this request will result
Packit 032894
in a binary object that contains the source file mentioned.  The path
Packit 032894
should be absolute.  Relative path names commonly appear in the DWARF
Packit 032894
file's source directory, but these paths are relative to
Packit 032894
individual compilation unit AT_comp_dir paths, and yet an executable
Packit 032894
is made up of multiple CUs.  Therefore, to disambiguate, debuginfod
Packit 032894
expects source queries to prefix relative path names with the CU
Packit 032894
compilation-directory, followed by a mandatory "/".
Packit 032894
Packit Service 35cfd5
Note: the caller may or may not elide \fB../\fP or \fB/./\fP or extraneous
Packit Service 35cfd5
\fB///\fP sorts of path components in the directory names.  debuginfod
Packit Service 35cfd5
accepts both forms.  Specifically, debuginfod canonicalizes path names
Packit Service 35cfd5
according to RFC3986 section 5.2.4 (Remove Dot Segments), plus reducing
Packit Service 35cfd5
any \fB//\fP to \fB/\fP in the path.
Packit 032894
Packit 032894
For example:
Packit 032894
.TS
Packit 032894
l l.
Packit 032894
#include <stdio.h>	/buildid/BUILDID/source/usr/include/stdio.h
Packit 032894
/path/to/foo.c	/buildid/BUILDID/source/path/to/foo.c
Packit 032894
\../bar/foo.c AT_comp_dir=/zoo/	/buildid/BUILDID/source/zoo//../bar/foo.c
Packit 032894
.TE
Packit 032894
Packit 032894
.SS /metrics
Packit 032894
Packit 032894
This endpoint returns a Prometheus formatted text/plain dump of a
Packit 032894
variety of statistics about the operation of the debuginfod server.
Packit 032894
The exact set of metrics and their meanings may change in future
Packit 032894
versions.  Caution: configuration information (path names, versions)
Packit 032894
may be disclosed.
Packit 032894
Packit 032894
.SH DATA MANAGEMENT
Packit 032894
Packit 032894
debuginfod stores its index in an sqlite database in a densely packed
Packit 032894
set of interlinked tables.  While the representation is as efficient
Packit 032894
as we have been able to make it, it still takes a considerable amount
Packit 032894
of data to record all debuginfo-related data of potentially a great
Packit 032894
many files.  This section offers some advice about the implications.
Packit 032894
Packit 032894
As a general explanation for size, consider that debuginfod indexes
Packit 032894
ELF/DWARF files, it stores their names and referenced source file
Packit Service 35cfd5
names, and buildids will be stored.  When indexing archives, it stores
Packit Service 35cfd5
every file name \fIof or in\fP an archive, every buildid, plus every
Packit Service 35cfd5
source file name referenced from a DWARF file.  (Indexing archives
Packit Service 35cfd5
takes more space because the source files often reside in separate
Packit 032894
subpackages that may not be indexed at the same pass, so extra
Packit 032894
metadata has to be kept.)
Packit 032894
Packit 032894
Getting down to numbers, in the case of Fedora RPMs (essentially,
Packit 032894
gzip-compressed cpio files), the sqlite index database tends to be
Packit 032894
from 0.5% to 3% of their size.  It's larger for binaries that are
Packit 032894
assembled out of a great many source files, or packages that carry
Packit 032894
much debuginfo-unrelated content.  It may be even larger during the
Packit 032894
indexing phase due to temporary sqlite write-ahead-logging files;
Packit 032894
these are checkpointed (cleaned out and removed) at shutdown.  It may
Packit 032894
be helpful to apply tight \-I or \-X regular-expression constraints to
Packit 032894
exclude files from scanning that you know have no debuginfo-relevant
Packit 032894
content.
Packit 032894
Packit 032894
As debuginfod runs, it periodically rescans its target directories,
Packit 032894
and any new content found is added to the database.  Old content, such
Packit 032894
as data for files that have disappeared or that have been replaced
Packit 032894
with newer versions is removed at a periodic \fIgrooming\fP pass.
Packit 032894
This means that the sqlite files grow fast during initial indexing,
Packit 032894
slowly during index rescans, and periodically shrink during grooming.
Packit 032894
There is also an optional one-shot \fImaximal grooming\fP pass is
Packit 032894
available.  It removes information debuginfo-unrelated data from the
Packit Service 35cfd5
archive content index such as file names found in archives ("archive
Packit Service 35cfd5
sdef" records) that are not referred to as source files from any
Packit Service 35cfd5
binaries find in archives ("archive sref" records).  This can save
Packit Service 35cfd5
considerable disk space.  However, it is slow and temporarily requires
Packit Service 35cfd5
up to twice the database size as free space.  Worse: it may result in
Packit Service 35cfd5
missing source-code info if the archive traversals were interrupted,
Packit Service 35cfd5
so that not all source file references were known.  Use it rarely to
Packit Service 35cfd5
polish a complete index.
Packit 032894
Packit 032894
You should ensure that ample disk space remains available.  (The flood
Packit 032894
of error messages on -ENOSPC is ugly and nagging.  But, like for most
Packit 032894
other errors, debuginfod will resume when resources permit.)  If
Packit 032894
necessary, debuginfod can be stopped, the database file moved or
Packit 032894
removed, and debuginfod restarted.
Packit 032894
Packit 032894
sqlite offers several performance-related options in the form of
Packit 032894
pragmas.  Some may be useful to fine-tune the defaults plus the
Packit 032894
debuginfod extras.  The \-D option may be useful to tell debuginfod to
Packit 032894
execute the given bits of SQL after the basic schema creation
Packit 032894
commands.  For example, the "synchronous", "cache_size",
Packit 032894
"auto_vacuum", "threads", "journal_mode" pragmas may be fun to tweak
Packit 032894
via \-D, if you're searching for peak performance.  The "optimize",
Packit 032894
"wal_checkpoint" pragmas may be useful to run periodically, outside
Packit 032894
debuginfod.  The default settings are performance- rather than
Packit 032894
reliability-oriented, so a hardware crash might corrupt the database.
Packit 032894
In these cases, it may be necessary to manually delete the sqlite
Packit 032894
database and start over.
Packit 032894
Packit 032894
As debuginfod changes in the future, we may have no choice but to
Packit 032894
change the database schema in an incompatible manner.  If this
Packit 032894
happens, new versions of debuginfod will issue SQL statements to
Packit 032894
\fIdrop\fP all prior schema & data, and start over.  So, disk space
Packit 032894
will not be wasted for retaining a no-longer-useable dataset.
Packit 032894
Packit Service 35cfd5
In summary, if your system can bear a 0.5%-3% index-to-archive-dataset
Packit 032894
size ratio, and slow growth afterwards, you should not need to
Packit 032894
worry about disk space.  If a system crash corrupts the database,
Packit 032894
or you want to force debuginfod to reset and start over, simply
Packit 032894
erase the sqlite file before restarting debuginfod.
Packit 032894
Packit 032894
Packit 032894
.SH SECURITY
Packit 032894
Packit 032894
debuginfod \fBdoes not\fP include any particular security features.
Packit 032894
While it is robust with respect to inputs, some abuse is possible.  It
Packit 032894
forks a new thread for each incoming HTTP request, which could lead to
Packit 032894
a denial-of-service in terms of RAM, CPU, disk I/O, or network I/O.
Packit 032894
If this is a problem, users are advised to install debuginfod with a
Packit 032894
HTTPS reverse-proxy front-end that enforces site policies for
Packit 032894
firewalling, authentication, integrity, authorization, and load
Packit 032894
control.  The \fI/metrics\fP webapi endpoint is probably not
Packit 032894
appropriate for disclosure to the public.
Packit 032894
Packit 032894
When relaying queries to upstream debuginfods, debuginfod \fBdoes not\fP
Packit 032894
include any particular security features.  It trusts that the binaries
Packit 032894
returned by the debuginfods are accurate.  Therefore, the list of
Packit 032894
servers should include only trustworthy ones.  If accessed across HTTP
Packit 032894
rather than HTTPS, the network should be trustworthy.  Authentication
Packit 032894
information through the internal \fIlibcurl\fP library is not currently
Packit 032894
enabled.
Packit 032894
Packit 032894
Packit 032894
.SH "ENVIRONMENT VARIABLES"
Packit 032894
Packit Service 35cfd5
.TP
Packit Service 35cfd5
.B TMPDIR
Packit Service 35cfd5
This environment variable points to a file system to be used for
Packit Service 35cfd5
temporary files.  The default is /tmp.
Packit Service 35cfd5
Packit Service 35cfd5
.TP
Packit 032894
.B DEBUGINFOD_URLS
Packit 032894
This environment variable contains a list of URL prefixes for trusted
Packit 032894
debuginfod instances.  Alternate URL prefixes are separated by space.
Packit 032894
Avoid referential loops that cause a server to contact itself, directly
Packit 032894
or indirectly - the results would be hilarious.
Packit 032894
Packit Service 35cfd5
.TP
Packit 032894
.B DEBUGINFOD_TIMEOUT
Packit 032894
This environment variable governs the timeout for each debuginfod HTTP
Packit Service 35cfd5
connection.  A server that fails to provide at least 100K of data
Packit Service 35cfd5
within this many seconds is skipped. The default is 90 seconds.  (Zero
Packit Service 35cfd5
or negative means "no timeout".)
Packit Service 35cfd5
Packit 032894
Packit Service 35cfd5
.TP
Packit 032894
.B DEBUGINFOD_CACHE_PATH
Packit 032894
This environment variable governs the location of the cache where
Packit 032894
downloaded files are kept.  It is cleaned periodically as this
Packit Service 35cfd5
program is reexecuted. If XDG_CACHE_HOME is set then
Packit Service 35cfd5
$XDG_CACHE_HOME/debuginfod_client is the default location, otherwise
Packit Service 35cfd5
$HOME/.cache/debuginfod_client is used. For more information regarding
Packit Service 35cfd5
the client cache see \fIdebuginfod_find_debuginfo(3)\fP.
Packit 032894
Packit 032894
.SH FILES
Packit 032894
.LP
Packit 032894
.PD .1v
Packit 032894
.TP 20
Packit 032894
.B $HOME/.debuginfod.sqlite
Packit 032894
Default database file.
Packit 032894
.PD
Packit 032894
Packit 032894
.TP 20
Packit Service 35cfd5
.B $XDG_CACHE_HOME/debuginfod_client
Packit 032894
Default cache directory for content from upstream debuginfods.
Packit Service 35cfd5
If XDG_CACHE_HOME is not set then \fB$HOME/.cache/debuginfod_client\fP
Packit Service 35cfd5
is used.
Packit 032894
.PD
Packit 032894
Packit 032894
Packit 032894
.SH "SEE ALSO"
Packit 032894
.I "debuginfod-find(1)"
Packit 032894
.I "sqlite3(1)"
Packit 032894
.I \%https://prometheus.io/docs/instrumenting/exporters/