2 releases
0.7.8 | Apr 1, 2024 |
---|---|
0.7.2 | Jan 1, 2024 |
#132 in Command line utilities
162 downloads per month
160KB
3K
SLoC
Repman
Custom repositories are personal Arch Linux repositories that can contain packages from the Arch Linux user repository (AUR) or other packages (local packages, for example, where the PKGBUILD file is stored in the local file system). repman (REPository MANager) helps to manage them, whether they are local or remote.
repman replaces crema which is no longer under development and adds new features. It can run on x86_64/AMD64 and AArch64/ARM64 and thus can manage repositories for these architectures.
Some use cases for custom repositories:
- During the installation of Arch Linux you want to pacstrap AUR packages. Therefore, these packages must be provided by a repository.
- You want to use self-defined meta packages to make an Arch Linux installation more efficient
- You want to deploy your packages to a repository automatically as part of a CI/CD pipeline
- You are running Arch Linux on multiple machines in your local network and want to provide all of them with packages / package updates from a custom repository in your local network
Features
repman supports different storage locations for repositories (check Optional dependencies):
- Local file system
- Remote servers which are accessible via SSH
- AWS S3
- Google Cloud Storage
It can be used for the following tasks:
- Adding (this includes also building) packages
- Removing packages
- Updating packages
A very important goal of repman is to keep the local system - i.e., the system that is used to manage custom repositories - as clean as possible. Therefore, packages are built in chroot containers via makechrootpkg per default.
Installation
From AUR
There are AUR packages for repman: repman and repman-git. They can be installed with AUR helpers such as trizen. These packages are available as binaries via the nerdstuff repository.
Manually from Sources
Another option is a manual installation. For this execute:
$ git clone https://gitlab.com/mipimipi/repman.git
$ cd repman
$ make
$ sudo make install
Docker
There are Docker images for x86_64 and AArch64 architectures that contain repman. These images can be used in CI pipelines, for example. To download the latest image execute:
$ docker pull mipimipi/repman:latest
Optional dependencies
Depending on what repman is used for and how, some additional dependencies are required:
- To handle packages from AUR, git is required
- To sign packages or repository databases, GnuPG is required
- To manage remote repositories, depending on the type of the server/the access to the server, specific tools are required:
- Access via SSH requires rsync and OpenSSH
- AWS S3 requires s3cmd (for x86_64, for AArch64)
- Google Cloud Storage requires google-cloud-cli
- In case distributed builds are used, distcc is required
Configuration
repman requires information about the repositories, such as name and (remote) path. This is stored in the configuration file $XDG_CONFIG_HOME/repman/repos.conf
in TOML format. See repman’s man page for details.
Usage
Execute repman help
to get information about how to call repman. repman’s man page contains comprehensive documentation: $ man repman
Troubeshooting
See the troubleshooting chapter in repman’s man page.
Details
repman utilizes tools like makechrootpkg, makepkg, repo-add, and repo-remove. rsync, or vendor-specific tools such as s3cmd or gsutil are used to transfer repositories between remote locations and the local file system. The local copies are manipulated with the above-mentioned tools.
License
Dependencies
~15–34MB
~546K SLoC