Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

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

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.