PPA(1)

πŸ“¦ version 0.7.0, in ubuntu resolute, ubuntu stonking

ppa πŸ’… β€” the Launchpad PPA bestie manual

okay so you found the ppa page from the PPA Dev Tools Manual, section 1. pull up a chair, grab a boba, we're doing this. πŸ§‹


✨ NAME ✨

ppa β€” the way you talk to Launchpad's Personal Package Archive (PPA) service. yes, that PPA. the one with all your builds. πŸŽ€


🌸 SYNOPSIS 🌸

ppa [-h | --help] [-A | --credentials <credentials_filename>] [-C |
--config <config_filename>] [-D | --debug] [-V | --version] [--dry-run]
[-q | --quiet] [-v | --verbose] <command> [<args>]

πŸ’– DESCRIPTION πŸ’–

ppa-dev-tools is literally a whole collection of commands for hanging out with Launchpad's Personal Package Archive (PPA) service. and the vibe is: every single one of these commands is meant to be useful and usable independently, on any PPA, no matter your usage style or your config. no gatekeeping. 🫢

one little family of commands is basically "the Launchpad website but make it terminal" β€” creating PPAs, deleting PPAs, listing them, configuring them, and querying various properties about them. iconic behavior.

then there's the ppa wait command, which is giving something the website literally cannot do: it polls and blocks until the PPA build system has finished and published your uploaded packages. like, it waits for you. bestie behavior fr fr. 😭

third capability: running autopkgtest(1) on one or more packages in the PPA, and then checking the results. slay.

and here's the thing β€” ppa-dev-tools does not impose a workflow on you. it gives you building blocks so you can craft your own workflows for your own use cases. you're the main character, the tools are just the supporting cast. πŸ‘‘


⭐ OPTIONS ⭐

these ones are common to all ppa sub-commands, so memorize them, they're free.

  • -h, --help β€” prints the synopsis and a list of the most commonly used commands. the "help me bestie" button. πŸ™ˆ
  • -A, --credentials <credentials_filename> β€” where your oauth credentials file lives. this lets you manage Launchpad access without logging in through a web browser, which is highkey a lifesaver for automation, or if you're running ppa-dev-tools on a host that just cannot run a browser because of graphical or other limitations. peek at ppa credentials(1) for how to create this file and the alternative ways of managing it. πŸ¦‹
  • -C, --config <config_filename> β€” where the ppa-dev-tools config file lives. optional, but you can use it to change defaults or to specify values that should always be used when running its commands, like credentials. scroll to FILES (below) for the details on the file and a few parameters worth setting. πŸ’œ
  • -D, --debug β€” turns on general debugging. ngl this is more for development purposes than for figuring out your usage problems, and the output may vary significantly from release to release. πŸ’€
  • -V, --version β€” version information. the receipts. πŸŽ€
  • --dry-run β€” simulate the command without modifying anything. > heads up bestie: be aware not all commands support this yet. 😭
  • -q, --quiet β€” minimize output during processing. shhh. 🀫
  • -v, --verbose β€” makes ppa verbose. useful for debugging usage problems and for seeing what underlying commands are actually being run. the tea. β˜•

πŸ‘‘ PPA DEV TOOLS COMMANDS πŸ‘‘

ppa-create(1)

registers a brand new PPA in Launchpad. most of the settings you can configure on the Launchpad website can be passed as arguments to this command, because the whole intent is to make creating and customizing PPAs straightforward in a single command line. periodt. those configured parameters can totally be changed later via the website or the ppa set command (below), whenever you feel like it.

the command will then display some information on using the PPA. and if you're not in the mood for it, that info display can be suppressed via the --quiet argument. πŸ™ˆ

ppa-credentials(1)

credentials can be created using the ppa credentials create command. it'll open a browser to an authorization page, and upon completion the credentials get written to the file credentials.oauth by default. then you can use that credentials file with all your other commands. ✨

ppa-desc(1)

sets the PPA's publicly visible description text. this is effectively the same as ppa set --description <text>, but plot twist β€” it also accepts description text from STDIN, which unlocks stuff like this:

apt-cache show figlet | grep -E "^Package|^Description-en|^ " |
ppa desc my-figlet-ppa

ppa-destroy(1)

deletes the given PPA from Launchpad. it removes the record from Launchpad and all source and binary packages contained in it. gone. πŸ’€

typically the PPA's name will stay unavailable for some minutes or (sometimes) hours until Launchpad has finished processing things β€” but once it has, you can create a fresh new PPA with the same name. rebirth era. πŸ¦‹

ppa-list(1)

lists the canonical addresses of PPAs belonging to user. short, sweet, iconic.

ppa-show(1)

displays config info about a PPA. the info includes a link to the PPA, its sources and binaries, and the total number of downloads. the full vibe check. πŸ”

ppa-tests(1)

provides clickable links (or URLs) for triggering DEP8 autopkgtest runs for package(s) in the PPA. it also shows currently in-process tests, and summarizes the results once they've completed. 🌈

note that running autopkgtests is restricted to those with package upload capabilities, so if that's not you, you'll need to print the URLs (via the --show-urls argument) and then ask a core dev or another uploader to trigger them for you. teamwork makes the dream work. 🫢

πŸ’€ EXIT STATUS πŸ’€

ppa exits with status 0 if a command completes successfully, and nonzero on errors. that's it, that's the rule.


πŸŽ€ FILES πŸŽ€

~/.config/ppa-dev-tools/config.yml

many of the command line options can be listed in this optional config file to make them apply globally as default values. and don't worry β€” these settings can still be overridden via the command line options. your config isn't holding you hostage. πŸ’…

some specific settings that may prove handy in certain cases:

  • architectures=<arch,...> β€” several commands assume the user will wish to operate on all available architectures if not otherwise specified. specifying this setting in the config file overrides that default behavior with a given comma-delimited list of desired architectures. this can be useful to avoid provisioning new PPAs to include problematic or low performance architectures, for example. lowkey a glow-up for your build times.
  • owner_name=<lp-username> β€” when a PPA is given by name rather than address, e.g. "my-ppa" instead of "ppa:me/my-ppa", the owner name gets inferred from the currently logged-in Launchpad user. setting this value in the config file overrides that, which may be useful if the tools will be used without a Launchpad login. another use case is if the user typically works with PPAs belonging to one of their teams, rather than to their own user. team player energy. 🫢
  • pocket=<release|security|updates|proposed|backports> β€” this configuration value corresponds to the --pocket argument, allowing the default for the 'Ubuntu dependencies' form to be changed. by default new PPAs are set to "updates", which excludes the -proposed and -backports pocket. by specifying it in the config file rather than on the commandline it makes this the default for all ppa commands β€” notably including both ppa create and ppa set, the latter of which may be undesirable, so it is recommended to specify this as a command-specific configuration setting (see below). πŸ™ˆ

see the --pocket options' documentation in ppa create for more details about the values.

  • show_urls=<true|false> β€” by default, the ppa tests(1) command will display triggers as clickable hyperlinks in the terminal window. not all terminal windows support ANSI links, and some users may just prefer seeing the full URLs. setting this parameter in the config file overrides that default and results in the URLs always being displayed. no cap.
  • wait_seconds=<N> β€” the time between polling by the ppa wait(1) command can be changed from its default value of 10 seconds, to customize the granularity or to minimize the load on the Launchpad service. be kind to the servers bestie. 🌸

Command-specific Configuration

some commands share the same arguments, most notably ppa create(1) and ppa set(1), however one may wish certain custom values to apply by for calls to the former but not the latter. to differentiate this, in the "config.yml" use the YAML dict-in-dict style notation. for example:

### config.yaml ### credentials: ~/.config/ppa-dev-tools/credentials.oauth

create:
  architectures: amd64,ppc64el,s390x
  pocket: proposed

tests:
  show_urls: True

wait:
  wait_seconds: 60

πŸ› REPORTING BUGS πŸ›

report bugs at https://bugs.launchpad.net/ppa-dev-tools . we wanna know. fr fr. πŸ’œ


πŸ’– AUTHORS πŸ’–

ppa-dev-tools was originally created by Bryce Harrington for supporting X.org maintenance work on Canonical's Desktop Team, and later revised and significantly expanded as part of Canonical's Server Team to support Ubuntu distro maintenance more generally. numerous contributions have been made by other Canonical engineers and Ubuntu community members. see the AUTHORS for their credits. absolute legends, all of them. πŸ‘‘


πŸ¦‹ SEE ALSO πŸ¦‹


🌈 PPA 🌈

part of the ppa-dev-tools(1) suite.


and that's the whole page bestie β€” Ppa-Dev-Tools 0.7, dated 2024-05-23. now go build something iconic. mwah. πŸ’…βœ¨πŸŽ€

πŸ“¦ where this page comes from