Every upload is parsed and recorded with its name, version, release, architecture, format, targets, channels, and immutable UUID.
List and filter packages
packagehall-ctl package list --org=acme --repo=widgetNarrow large repositories with filters:
packagehall-ctl package list \ --org=acme \ --repo=widget \ --channel=stable \ --target=ubuntu/24.04 \ --architecture=amd64 \ --name=widgetUse --format=json for scripts and automation.
Show one package
Use the UUID returned by publishing or listing:
packagehall-ctl package show PACKAGE_UUID --org=acme --repo=widgetPublish from GitHub Actions
Publishing from the workflow that built the package is the normal path:
- name: Publish uses: pkgr/action/publish@v1 with: file: ${{ steps.package.outputs.package_path }} target: ${{ matrix.target }} repository: acme/widget channel: stable token: ${{ secrets.PACKAGER_PUBLISH_TOKEN }}This keeps the package, target, version, commit, and release policy together in one auditable run.
Upload manually
Use the CLI for backfills, locally built packages, and troubleshooting:
packagehall-ctl package upload \ --org=acme \ --repo=widget \ --file=./dist/widget_1.4.2_amd64.deb \ --target=ubuntu/24.04 \ --channel=testingThe target must exist and its expected package format must match the file. Repeat or comma-separate --target and --channel values when the same artifact applies to several destinations.
Yank a package
Yanking removes a package from selected channels without relying on a mutable filename:
packagehall-ctl package yank PACKAGE_UUID \ --org=acme \ --repo=widget \ --channel=stableSpecify --channel more than once to yank from multiple channels. Other channel associations remain intact.
Generate installer instructions
packagehall-ctl package install widget \ --org=acme \ --repo=widget \ --channel=stable \ --target=el/9The default output is a readable Markdown guide. Add --sh for an executable setup script:
packagehall-ctl package install widget \ --org=acme --repo=widget --channel=stable --target=el/9 --shSee Installing packages before distributing private-repository instructions.