我有一个用 Rust 编写的 CLI 工具,我已经成功编译并上传到 GitHub 上,作为我自己的 Homebrew “tap”https://github.com/RandomStudio/homebrew-tether
安装非常简单,只需brew tap randomstudio/tether
按照 即可brew install tether
,太棒了!
该 repo 仅包含公式文件和发布版本,它们是.tar.gz
针对 MacOS(Apple Silicon / AARCH64)编译的单个二进制文件的档案。
我希望该可执行文件也能在 Linux 系统上运行 - x86_64 和 ARM(Raspberry Pi),可通过 homebrew 安装(除了 MacOS 之外,它在过去几年还支持 Linux)。
我已经搜索过文档并在谷歌上进行了大量搜索,但我无法弄清楚如何发布跨平台的“tap”(或“bottle”,因为我只想发布二进制文件?)。
你应该...吗
- 将针对不同架构的一堆不同二进制文件存档在同一个
.tar.gz
文件中? - 或者多个档案?
- 该公式应该是什么样
.rb
的,以及它如何区分目标架构所需的可执行文件?
我在任何地方都找不到这个信息。
作为参考,目前的情况./Formula/tether.rb
非常简单:
# Documentation: https://docs.brew.sh/Formula-Cookbook
# https://rubydoc.brew.sh/Formula
class Tether < Formula
desc "Tether CLI utilities"
homepage "https://github.com/RandomStudio/homebrew-tether"
url "https://github.com/RandomStudio/homebrew-tether/releases/download/v0.2.0/tether.tar.gz"
sha256 "639a351e33a285ea8a4feb1abfba21499361f00c93eecc573cbf366bbea2d23a"
version "0.2.0"
def install
bin.install "tether"
end
end
答案1
您的项目似乎是开源的。Homebrew 旨在编译正在安装的公式。您的公式下载的文件应该包含源代码。您的公式应该编译程序并安装它。如果您的公式只需要用于构建的依赖项,请将它们标记为仅构建依赖项。
要构建瓶子,您需要安装配方brew install --build-bottle tether
并在正确的目录中创建一个瓶子,brew bottle tether
它还将输出一个 dsl 以插入到您的配方中。使用您想要支持的目标操作系统执行此操作。
在将输出的 dsl 插入到公式之前,您需要对其进行修改。
例如,如果您的 dsl 是这样的:
bottle do
sha256 "4921af80137af9cc3d38fd17c9120da882448a090b0a8a3a19af3199b415bfca" => :yosemite
sha256 "c71db15326ee9196cd98602e38d0b7fb2b818cdd48eede4ee8eb827d809e09ba" => :mavericks
sha256 "85cc828a96735bdafcf29eb6291ca91bac846579bcef7308536e0c875d6c81d7" => :mountain_lion
end
您需要将其更改为:
bottle do
root_url *INSERT BASE URL WHERE BOTTLES STORED HERE*
sha256 "4921af80137af9cc3d38fd17c9120da882448a090b0a8a3a19af3199b415bfca" => :yosemite
sha256 "c71db15326ee9196cd98602e38d0b7fb2b818cdd48eede4ee8eb827d809e09ba" => :mavericks
sha256 "85cc828a96735bdafcf29eb6291ca91bac846579bcef7308536e0c875d6c81d7" => :mountain_lion
end
然后将其插入到你的公式中。
我建议阅读https://docs.brew.sh/Bottles了解更多信息。