repogen is an easy way to generate a Debian repository.
repogen supports signing, generating a Contents index, overriding the Maintainer field on packages, a web interface, package search, automatically updating the repository, and more.
- Create a directory named
- Inside that folder, create a folder for each distribution, such as
- Inside each distribution folder, create a folder for each component, such as
- Place the deb packages in the component folders.
- Export a gpg private key in ascii-armour format (with no passphrase) to
repogen --generate-web --generate-contents ./private-key.asc ./in ./out
- Run a web server of your choice with the
outdirectory as the root. You will now be able to use this as your repository.
Note: for repositories with >50 packages, it is recommended to install nodejs on the server so the packages are not indexed client-side.
Usage: repogen [OPTIONS] PRIVATE_KEY_FILE INPUT_DIR OUTPUT_DIR Version: repogen Options: -d, --description string sets the description field used in the Release file (default "Generated by repogen") -c, --generate-contents generates the Contents index (makes repogen slower to load) -b, --generate-web generate a web interface for browsing the packages -h, --help show this help text -m, --maintainer-override string overrides the maintainer of all packages (format: First Last <firstname.lastname@example.org>) -o, --origin string sets the origin field used in the Release file (this field is used as a user-friendly way to identify the repository) (default "repogen") --version show the version -w, --watch watch the input directory for new packages -i, --watch-interval duration the interval to check for new packages (if watch is enabled) (default 1s) Arguments: PRIVATE_KEY_FILE is the path to a ascii-armoured gpg private key with no passphrase. It is used to sign the repository. INPUT_DIR is the path to the directory containing the deb packages. It should be in the following layout (and must not contain any unrelated files): INPUT_DIR/dist/component/*.deb OUTPUT_DIR is the path to place the generated repository in. It must not exist.
|Web Interface - Package|