如何在新的 macOS 版本上为旧版本创建自制软件瓶?
How do I create homebrew bottle for old version on a new macOS version?
我想为 Sierra 创建一瓶 zsh 5.1.1,因为 zsh 5.2 有一个严重的错误,会破坏某些功能。
Sierra 附带 zsh 5.2,它因多字节绑定键击键而损坏(参见:http://www.zsh.org/mla/users/2015/msg01400.html)。我已经设法让 5.1.1 在一台机器上从源代码构建,但为了更广泛的分发,在 zsh 的新版本发布之前,一瓶 zsh 5.1.1 的 Sierra 会更好。
该错误不仅会阻止 utf-8 多字节 ascii 字符的绑定(我使用了很多 Option 键组合),而且还会阻止其他具有相同初始字节的字符甚至无法输入。
我认为这是 bug 出现之前 zsh 配方的最后一个版本:https://github.com/Homebrew/homebrew-core/blob/1a4461ad2a0f1bc7074d9817db059147a31eeee6/Formula/zsh.rb
How do I create homebrew bottle for old version on a new macOS version?
我已经在 macOS Sierra 上成功构建了一个 zsh 5.1.1 bottle。方法如下:
首先,您需要从 homebrew-core 存储库下载所有提交,因为默认情况下它是一个浅存储库(并非所有提交都存在)。
cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core
git fetch --unshallow
然后您必须 select zsh 5.1.1 的最后一次提交
brew log zsh
这里是提交 1a4461ad2a0f1bc7074d9817d
,检查此提交的 zsh 公式
git checkout 1a4461ad2a0f1bc7074d9817d -- Formula/zsh.rb
使用 --build-bottle
安装 zsh
brew install --build-bottle zsh
并建造瓶子
brew bottle zsh
然后你得到瓶子文件 zsh-5.1.1.sierra.bottle.1.tar.gz
不要忘记用
恢复zsh.rb
的原始状态
git checkout -- Formula/zsh.rb
安装bottle,直接复制到/usr/local/Cellar
,用
解压
tar xzvf zsh-5.1.1.sierra.bottle.1.tar.gz
和link它与
brew link zsh
== 编辑以回答 OP 评论 ==
官方自制酒瓶存储在 bintray.com。 Bintray 是一个带有 REST api 的分发平台。当您启动 brew install
时,它首先检查那里是否有瓶子。 zsh 5.1.1 bottles 存储在:https://bintray.com/homebrew/bottles/zsh/5.1.1#files。如您所见,有 yosemite、mavericks 和 el capitan 的版本,但没有 sierra 的版本。您可以在 github 上要求将 zsh-5.1.1 sierra bottle 放在那里。
我知道这是一个老问题,但对于新手来说,我已经发布了一个自动构建工作流来使用 Azure Pipelines 和 Bintray 为您的水龙头创建和发布瓶子。
您可以在此处找到更多信息:
https://github.com/ladislas/homebrew-greetings
一个现实生活中的例子是我维护的 osx-cross/avr 水龙头,它现在为所有配方提供瓶子,包括从 9.1.0 到 4.x.x 的所有 avr-gcc 版本。
编辑 (2021/03/15) - Homebrew 大大改进了对自定义水龙头瓶的支持,请参阅:
osx-cross/avr 现在通过 Github 操作充分利用了这一点,您可以查看 .github/workflows
了解详情。
这里有一个 link 到一个有用的博客 post,由一位自制软件维护者撰写,内容是关于使用 bottles 维护您自己的存储库:
https://jonathanchang.org/blog/maintain-your-own-homebrew-repository-with-binary-bottles/
从下面的部分可以看出,为其他 macOS 版本创建瓶子就像修改 .json
文件一样简单(一旦完成其他设置):
我想为 Sierra 创建一瓶 zsh 5.1.1,因为 zsh 5.2 有一个严重的错误,会破坏某些功能。
Sierra 附带 zsh 5.2,它因多字节绑定键击键而损坏(参见:http://www.zsh.org/mla/users/2015/msg01400.html)。我已经设法让 5.1.1 在一台机器上从源代码构建,但为了更广泛的分发,在 zsh 的新版本发布之前,一瓶 zsh 5.1.1 的 Sierra 会更好。
该错误不仅会阻止 utf-8 多字节 ascii 字符的绑定(我使用了很多 Option 键组合),而且还会阻止其他具有相同初始字节的字符甚至无法输入。
我认为这是 bug 出现之前 zsh 配方的最后一个版本:https://github.com/Homebrew/homebrew-core/blob/1a4461ad2a0f1bc7074d9817db059147a31eeee6/Formula/zsh.rb
How do I create homebrew bottle for old version on a new macOS version?
我已经在 macOS Sierra 上成功构建了一个 zsh 5.1.1 bottle。方法如下:
首先,您需要从 homebrew-core 存储库下载所有提交,因为默认情况下它是一个浅存储库(并非所有提交都存在)。
cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core
git fetch --unshallow
然后您必须 select zsh 5.1.1 的最后一次提交
brew log zsh
这里是提交 1a4461ad2a0f1bc7074d9817d
,检查此提交的 zsh 公式
git checkout 1a4461ad2a0f1bc7074d9817d -- Formula/zsh.rb
使用 --build-bottle
brew install --build-bottle zsh
并建造瓶子
brew bottle zsh
然后你得到瓶子文件 zsh-5.1.1.sierra.bottle.1.tar.gz
不要忘记用
恢复zsh.rb
的原始状态
git checkout -- Formula/zsh.rb
安装bottle,直接复制到/usr/local/Cellar
,用
tar xzvf zsh-5.1.1.sierra.bottle.1.tar.gz
和link它与
brew link zsh
== 编辑以回答 OP 评论 ==
官方自制酒瓶存储在 bintray.com。 Bintray 是一个带有 REST api 的分发平台。当您启动 brew install
时,它首先检查那里是否有瓶子。 zsh 5.1.1 bottles 存储在:https://bintray.com/homebrew/bottles/zsh/5.1.1#files。如您所见,有 yosemite、mavericks 和 el capitan 的版本,但没有 sierra 的版本。您可以在 github 上要求将 zsh-5.1.1 sierra bottle 放在那里。
我知道这是一个老问题,但对于新手来说,我已经发布了一个自动构建工作流来使用 Azure Pipelines 和 Bintray 为您的水龙头创建和发布瓶子。
您可以在此处找到更多信息:
https://github.com/ladislas/homebrew-greetings
一个现实生活中的例子是我维护的 osx-cross/avr 水龙头,它现在为所有配方提供瓶子,包括从 9.1.0 到 4.x.x 的所有 avr-gcc 版本。
编辑 (2021/03/15) - Homebrew 大大改进了对自定义水龙头瓶的支持,请参阅:
osx-cross/avr 现在通过 Github 操作充分利用了这一点,您可以查看 .github/workflows
了解详情。
这里有一个 link 到一个有用的博客 post,由一位自制软件维护者撰写,内容是关于使用 bottles 维护您自己的存储库:
https://jonathanchang.org/blog/maintain-your-own-homebrew-repository-with-binary-bottles/
从下面的部分可以看出,为其他 macOS 版本创建瓶子就像修改 .json
文件一样简单(一旦完成其他设置):