Custom repository manager for ArchLinux pacman
Basic usage: build foo x86_64 package for bar repository.
% ls foo
PKGBUILD
% mkarchroot chroot/root base-devel
% mkdir -p repo/x86_64
% guzuta build foo --repo-dir repo/x86_64 --repo-name bar --arch x86_64 --chroot-dir chroot
(snip)
% ls repo/x86_64
bar.db bar.files foo-1.0.0-1-x86_64.pkg.tar.zst
With full options:
% guzuta build --chroot-dir /var/cache/guzuta/chroot-x86_64 --repo-dir repo/x86_64 --repo-name bar --arch x86_64 --package-key $GPGKEY --repo-key $GPGKEY --srcdest sources --logdest logs foo
(snip)
% ls repo/x86_64
bar.db bar.db.sig bar.files bar.files.sig foo-1.0.0-1-x86_64.pkg.tar.zst foo-1.0.0-1-x86_64.pkg.tar.zst.sig
% ls sources
foo-1.0.0.tar.gz
% ls logs
foo-1.0.0-1-x86_64-build.log foo-1.0.0-1-x86_64-package.log
Omakase mode supports a typical situation managing the custom repository.
See also https://wiki.archlinux.org/index.php/DeveloperWiki:Building_in_a_Clean_Chroot#Classic_Way
% sudo mkarchroot -C /path/to/pacman.conf -M /path/to/makepkg.conf /path/to/chroot-x86_64/root base base-devel
% cat > .guzuta.yml
name: foo
package_key: C48DBD97
repo_key: C48DBD97
srcdest: sources
logdest: logs
pkgbuild: PKGBUILDs
builds:
x86_64:
chroot: /path/to/chroot-x86_64
% mkdir foo sources logs PKGBUILDs
Write a PKGBUILD in PKGBUILDs/#{pkgname}
directory.
% mkdir PKGBUILDs/bar
% vim PKGBUILDs/bar/PKGBUILD
Then build the package.
% guzuta omakase build bar
(snip)
% tree foo
foo
`-- os
`-- x86_64
|-- bar-1.0.0-1-x86_64.pkg.tar.zst
|-- bar-1.0.0-1-x86_64.pkg.tar.zst.sig
|-- foo.db
|-- foo.db.sig
`-- foo.files
For the server, serve files under the foo directory by HTTP server like nginx or Apache.
For clients, add the server's repository configuration to /etc/pacman.conf like below.
[foo]
SigLevel = Required
Server = http://example.com/$repo/os/$arch
Configure .guzuta.yml for S3.
s3:
bucket: foo-packages
region: ap-northeast-1
Each time you execute guzuta omakase build
:
- Download repository databases (not including packages)
- Build a package
- Upload the built package and repository databases.