4 个版本

0.0.4 2020 年 1 月 5 日
0.0.3 2020 年 1 月 4 日
0.0.2 2020 年 1 月 4 日
0.0.1 2019 年 12 月 27 日

命令行工具 中排名第 2827

MIT 许可证

9MB
1K SLoC

pkger 📦🐳

利用 Docker 的打包工具。

pkger 的主要目的是自动化在多个操作系统、版本和架构上构建 .rpm.deb(也许未来更多)软件包。

配置

配置文件具有以下结构

images_dir = ""
recipes_dir = ""
output_dir = ""
  • images_dir - 存储镜像的目录
    • 每个镜像是一个目录,包含一个 Dockerfile 和与其一起导入的文件
    • 镜像名称是目录名称
  • recipes_dir - 存储配方文件的目录
    • 每个配方是一个目录,包含一个 recipe.toml 文件和源文件(如果不是远程的)
  • output_dir - 存储构建好的软件包的目录
    • pkger 完成构建软件包后,它将创建一个目录 $output_dir/$os/$ver/,其中它将放置构建的 .rpm.deb 软件包。
      • $os$ver 在构建过程中从容器中获取

配方

配方分为 3 部分

  • 信息

    • 构建所需的所有元数据和信息
    • pkger 将安装 depends 中列出的所有依赖项,为每个支持的发行版选择合适的包管理器。
    • 此配方将为所有 3 个镜像 centosfedoraubuntu_latest 构建。
    • pkger 将在 $images_dir/centos 等处查找镜像目录。
[info]
name = "curl"
description = "curl"
arch = "x86_64"
license = "null"
version = "7.67.0"
revision = "0"
source = "curl-7.67.0.tar.gz"
depends = ["gcc", "make", "patch", "binutils", "strace"]
exclude = ["share", "info"]
provides = ["curl"]
images = [
	"centos",
	"fedora",
	"ubuntu_latest",
]
  • 构建

    • 所有构建步骤以字符串列表的形式展示
[build]
steps = [
	"./curl-7.67.0/configure --prefix=/opt/curl/7.67.0",
	"make"
]
  • 安装

    • 所有安装步骤以字符串列表的形式展示
    • destdir 是安装文件的目录。所有 buildinstall 的步骤都必须在 destdir 中生成构建文件,然后将其归档并构建成软件包。
[install]
steps = ["make install"]
destdir = "/opt/curl/7.67.0"

用法

要安装 pkger,请运行 cargo install pkger 或使用 crago build --release 克隆并构建此仓库。

要使用 pkger,您需要一个在 tcp 端口上运行的 docker 守护进程。之后运行

  • pkger-d$docker_address -c$config_file [RECIPES]
  • $docker_address 替换为类似 http://0.0.0.0:2376 的地址
  • $config_file 替换为配置文件的路径
  • 在末尾添加任意数量的食谱,空格分隔

要获取一些信息输出,请使用设置了环境变量 RUST_LOG=pkger=trace

示例

示例配置、食谱和文件结构可以在 master 分支的 example 目录中找到

许可证

MIT

依赖关系

~17–30MB
~433K SLoC