Command-Line Interface

General

The repopulator module provides a simple command-line interface to create repositories.

You can invoke the command-line either via a script

$ repopulator

or as a module

$ python3 -m repopulator

The general form of the command line is:

$ repopulator TYPE -o DEST [options...] -p package1 package2 ...

where TYPE is one of: alpine, apt, freebsd, pacman, rpm, and DEST is the destination directory for the repository.

You can obtain overall help by using

$ repopulator -h/--help

and help about available options for each repository via:

$ repopulator TYPE -h/--help

Options and their effect for each repository type are described below.

Alpine

The general command-line form for an Alpine pkg repository is:

$ repopulator alpine -o DEST -d DESC -k KEY_PATH [-w KEY_PASSWORD] [-s SIGNER] \
     -p package1 package2 ... \
     -a ARCH1 -p package3 package4 ... \
     -a ARCH2 -p package5 package6 ...

Where:

-d DESC, --desc DESC
The repository description
-k KEY_PATH, --key KEY_PATH
The path to the private key for signing. If the -s/--signer option is not supplied, the stem of the private key filename is used as the name. So, for example, a key someone@someorg.com-123456.rsa will result in someone@someorg.com-123456 being used as a signer name.
-w KEY_PASSWORD, --password KEY_PASSWORD
The password for the private key, if needed
-s SIGNER, --signer SIGNER
The signer name that overrides automatic deduction from the key filename described above
-a ARCH, --arch ARCH
Forces the architecture of the following packages to be ARCH.
-p path ..., --package path...
.apk packages to add

By default, the internal architecture of the package is used to decide under which architecture to register it in the repo. Some packages (such as -doc-, -openrc-, etc.) do not have a specific architecture and are marked as noarch. All Alpine packages in a repo must belong to some architecture, so you need to use -a ARCH with them.

If you wish to "stop" the latest -a ARCH effect and revert to using the architecture of the package, use -a without an argument.

APT

The general command-line form for an APT repository is:

$ repopulator apt -o DEST -k KEY_NAME -w KEY_PASSWORD \
    -d DISTRO1 \
      [--origin ORIGIN] [--label LABEL] [--suite SUITE] \
        [--codename CODENAME] [--version VERSION] [--desc DESC] \
      [-c COMPONENT1] \
          -p package1 package2 ... \
      [-c COMPONENT2] \
          -p package3 package4 ... \
    -d DISTRO2 \
    ...

Where:

-k KEY_NAME, --key KEY_NAME
Name or ID of the GPG key for signing
-w KEY_PASSWORD, --password KEY_PASSWORD
GPG key password
-d DISTRO, --distro DISTRO
Starts a new distribution named DISTRO (e.g. jammy or focal). All subsequent arguments refer to this distribution until the next -d/--distro argument. The distribution name can be a path like stable/updates.
--origin ORIGIN
Optional Origin field for the distribution. See https://wiki.debian.org/DebianRepository/Format#Origin
--label LABEL
Optional Label field for the distribution. See https://wiki.debian.org/DebianRepository/Format#Label
--suite SUITE
Optional Suite field for the distribution. See https://wiki.debian.org/DebianRepository/Format#Suite. If omitted, defaults to the last component of the distribution path.
--codename CODENAME
Optional Codename field for the distribution. See https://wiki.debian.org/DebianRepository/Format#Codename. If omitted, defaults to the last component of the distribution path.
--version VERSION
Optional Version field for the distribution. See https://wiki.debian.org/DebianRepository/Format#Version. If omitted, defaults to the last component of the distribution path.
--desc DESC
Optional Description field for the distribution. See https://wiki.debian.org/DebianRepository/Format#Description. If omitted, defaults to the last component of the distribution path.
-c COMPONENT, --comp COMPONENT
Optional component of the following packages. If not specified or the component name is omitted, it defaults to main. You can specify multiple components for a distribution.
-p path ..., --package path...
.deb (or .udeb) packages to add to the current distribution and component

FreeBSD

The general command-line form for a FreeBSD repository is:

$ repopulator freebsd -o DEST -k KEY_PATH [-w KEY_PASSWORD] \
     -p package1 package2 ... 

Where:

-k KEY_PATH, --key KEY_PATH
The path to the private key for signing.
-w KEY_PASSWORD, --password KEY_PASSWORD
The password for the private key, if needed
-p path ..., --package path...
.pkg packages to add

Pacman

The general command-line form for a Pacman repository is:

$ repopulator pacman -o DEST -k KEY_NAME -w KEY_PASSWORD \
    -n name -p package1 package2 ...

Where:

-k KEY_NAME, --key KEY_NAME
Name or ID of the GPG key for signing
-w KEY_PASSWORD, --password KEY_PASSWORD
GPG key password
-n NAME, --name NAME
Repository name
-p path ..., --package path...
.zst packages to add. If a matching .sig file with the same name exists next to the package, it will be automatically used to supply the package signature.

RPM

The general command-line form for an RPM repository is:

$ repopulator rpm -o DEST -k KEY_NAME -w KEY_PASSWORD \
    -p package1 package2 ...

Where:

-k KEY_NAME, --key KEY_NAME
Name or ID of the GPG key for signing
-w KEY_PASSWORD, --password KEY_PASSWORD
GPG key password
-p path ..., --package path...
.rpm packages to add.