Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/eagletmt/guzuta
Custom repository manager for ArchLinux pacman
https://github.com/eagletmt/guzuta
archlinux pacman
Last synced: 3 days ago
JSON representation
Custom repository manager for ArchLinux pacman
- Host: GitHub
- URL: https://github.com/eagletmt/guzuta
- Owner: eagletmt
- License: mit
- Created: 2017-01-09T13:04:26.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2024-11-03T10:17:25.000Z (about 2 months ago)
- Last Synced: 2024-12-16T19:11:42.856Z (10 days ago)
- Topics: archlinux, pacman
- Language: Rust
- Size: 522 KB
- Stars: 32
- Watchers: 3
- Forks: 4
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# guzuta
Custom repository manager for ArchLinux pacman## Usage
### Build a package and store it to a repository
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
Omakase mode supports a typical situation managing the custom repository.### Initialize a 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
```### Build a package
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
```### Publish the repository
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
```### Publish the repository (Amazon S3)
Configure .guzuta.yml for S3.```yaml
s3:
bucket: foo-packages
region: ap-northeast-1
```Each time you execute `guzuta omakase build`:
1. Download repository databases (not including packages)
2. Build a package
3. Upload the built package and repository databases.