The Charm Store will undergo scheduled database maintenance on July 5, 2026 22:00 to July 6, 02:00 UTC. During this time, you may be unable to access charm and bundle metadata or publish updates. No user action is required and services will automatically resume once maintenance is complete.

Ubuntu Debuginfod

Jonas Jelten Publisher

Platform:

Ubuntu
24.04
Channel Revision Published Runs on
latest/edge 11 28 Apr 2026
Ubuntu 24.04
juju deploy ubuntu-debuginfod --channel edge

A charm for deploying ubuntu-debuginfod to serve Ubuntu package's debugging symbols to gdb.

ubuntu-debuginfod Operator

Charmhub package: ubuntu-debuginfod

Deploy ubuntu-debuginfod and debuginfod to serve debugging symbols of Ubuntu's distribution packages to debuggers like GDB.

About

Entrypoint: src/charm.py.

When the Charm is installed, it:

  • adds the ubuntu-debuginfod PPA
  • installs ubuntu-debuginfod
  • installs and sets up systemd services
    • debuginfod.service: provides files to debuggers via http (port 8002 default)
    • ubuntu-debuginfod-launchpad-poller.service & .timer: asks launchpad about new packages
    • ubuntu-debuginfod-celery.service: processes jobs and downloads debug symbols from archive

Other resources

GitHub integration

We use some GitHub actions to test and release the charm code.

To retrieve the needed "CHARMHUB_TOKEN" for authentication (used by charmcraft via env CHARMCRAFT_AUTH), run:

charmcraft login --export /tmp/charmcreds.auth --charm ubuntu-debuginfod --permission=package-view --permission=package-manage-revisions --permission=package-manage-releases --channel "latest/edge" --channel "latest/stable" --ttl $((10 * 365 * 24 * 60 * 60))

Store the exported output text as a GitHub project secret under CHARMHUB_TOKEN (because that name is hardcoded in several "included" workflows).

Ingress integration

To integrate into enterprise-style infrastructure landscapes, this charm provides the debuginfod-http-ingress relation (interface: ingress). This allows dynamically routing traffic via proxies to the debuginfod service.

In production, this is typically wired through an ingress provider chain (for example ingress-configurator -> offered machine-ingress).

To test locally with a simple ingress provider:

% charmcraft pack
% juju deploy ./ubuntu-debuginfod_*.charm ubuntu-debuginfod --config testmode=true

% juju deploy haproxy --channel 2.8/edge --config external-hostname=debuginfod.local
% juju deploy self-signed-certificates --channel 1/edge
% juju integrate haproxy:certificates self-signed-certificates:certificates

# ingress relation (auto-matched by ingress interface)
% juju integrate ubuntu-debuginfod haproxy

# proxy relay test for debuginfod API path
# you'll get a 404 not found for this unknown build id
% curl -i -k -H "Host: debuginfod.local" "https://$haproxy_ip/$model_name-ubuntu-debuginfod/buildid/0000000000000000000000000000000000000000/debuginfo"