18个版本

0.5.0 2023年3月22日
0.4.1 2021年12月7日
0.4.0 2020年11月2日
0.3.0 2020年4月11日
0.2.4 2017年3月25日

#635 in Unix APIs

Download history 20/week @ 2024-03-10 80/week @ 2024-03-31

每月66次下载

MITLGPL-2.1

55KB
1.5K SLoC

guzuta

ArchLinux pacman的定制仓库管理器

用法

构建一个软件包并将其存储到仓库中

基本用法:为bar仓库构建foo x86_64软件包。

% 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

使用完整选项

% 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模式

Omakase模式支持管理自定义仓库的典型情况。

初始化仓库

另见 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

构建软件包

PKGBUILDs/#{pkgname} 目录中编写PKGBUILD文件。

% mkdir PKGBUILDs/bar
% vim PKGBUILDs/bar/PKGBUILD

然后构建软件包。

% 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

发布仓库

对于服务器,使用nginx或Apache等HTTP服务器提供foo目录下的文件。

对于客户端,将服务器的仓库配置添加到 /etc/pacman.conf 中,如下所示。

[foo]
SigLevel = Required
Server = http://example.com/$repo/os/$arch

发布仓库(Amazon S3)

为S3配置 .guzuta.yml。

s3:
  bucket: foo-packages
  region: ap-northeast-1

每次执行 guzuta omakase build

  1. 下载仓库数据库(不包括软件包)
  2. 构建软件包
  3. 上传构建好的软件包和仓库数据库。

依赖关系

~41–59MB
~1M SLoC