An aurutils wrapper script for managing a custom local Arch Linux repository.
This script assumes that your custom repository is hosted on the local
filesystem at /var/cache/pacman/$DB where $DB is the name of the custom
repository.
After every operation, it syncs all repository files (.db, .pkg.tar.zst etc.) to the remote storage
location. This script supports syncing to:
- A remote filesystem with
rsyncand SSH - A Minio S3 bucket with
mcli
Note: This script performs
--deletefor rsync and--remove --overwritefor mcli when syncing, which can cause data loss!
Clients may download and install packages from the remote fileserver or S3
bucket (at https://example.xyz/) by adding the following to their
/etc/pacman.conf
[custom]
SigLevel = Optional TrustAll
Server = https://example.xyz/path/to/repo
A custom local repository should already be setup either via a static file server or S3 bucket. aura should only be run with this custom repository's user.
aura requires the following dependencies:
- aurutils
- rsync (by default)
- mcli and S3 alias setup for S3 syncing
- paccache
- fzf, awk (only for
aura search)
Set the following mandatory variables:
DB="<db-name>"
For non-S3 support, set the following variables:
SSH_USER=""
SSH_HOST=""
SSH_REMOTE_PATH=""
For S3 support, set the following variables:
S3_CONFIG_DIR=""
S3_ALIAS=""
S3_BUCKET=""
$ aura help
# add a package
$ aura add <package>
# remove a package
$ aura rm <package>
# list all installed packages
$ aura ls
# update one package
$ aura update <package>
# update all packages
$ aura sync
# ignore a package when syncing
$ aura ignore <package>
# check for updates
$ aura check- Prevent specific clients from adding or deleting packages (rsync auth, HTTP basic auth or SSH via SSH)
- Add
initsubcommand for new setup of custom repositories
Copyright (c) 2023-2025 kencx
Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.