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
每月66次下载
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
- 下载仓库数据库(不包括软件包)
- 构建软件包
- 上传构建好的软件包和仓库数据库。
依赖关系
~41–59MB
~1M SLoC