如何在新的macOS版本上为旧版本创建自制瓶?

时间:2016-11-05 03:09:58

标签: macos homebrew zsh oh-my-zsh

我想为Sierra创建一瓶zsh 5.1.1,因为zsh 5.2有一个非常糟糕的错误,会破坏某些功能。

Sierra带有zsh 5.2,它因多字节bindkey键击而被破坏(参见:http://www.zsh.org/mla/users/2015/msg01400.html)。我已经设法在一台机器上从源代码获得5.1.1构建,但是为了更广泛的分发,在zsh的新版本发布之前,Sierra瓶的zsh 5.1.1会好得多。

这个bug不仅阻止了utf-8多字节ascii字符的绑定(我使用了很多Option键组合),而且如果它们具有相同的初始字节,则阻止其他字符进行输入。

我认为这是bug出现之前zsh配方的最后一个版本:https://github.com/Homebrew/homebrew-core/blob/1a4461ad2a0f1bc7074d9817db059147a31eeee6/Formula/zsh.rb

3 个答案:

答案 0 :(得分:6)

  

如何在新的macOS版本上为旧版本创建自制瓶?

我已经在macOS Sierra上成功构建了一个zsh 5.1.1瓶子。方法如下:

首先,您需要从homebrew-core存储库下载所有提交,因为通过defaut它是一个浅的存储库(并非所有提交都存在)。

cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core
git fetch --unshallow

然后,您必须使用

选择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

要安装瓶子,只需将其复制到/usr/local/Cellar中,然后用

提取
tar xzvf zsh-5.1.1.sierra.bottle.1.tar.gz 

并将其与

相关联
brew link zsh

==编辑以回答OP评论==

官方自制瓶子存放在bintray.com。 Bintray是一个使用REST api的分发平台。当您启动brew install时,首先检查那里是否有瓶子。 zsh 5.1.1瓶存储在:https://bintray.com/homebrew/bottles/zsh/5.1.1#files中。正如你所看到的,有一个优胜美地,小牛和el capitan的版本,但没有版本的山脉。您可以要求github将zsh-5.1.1 sierra瓶放在那里。

答案 1 :(得分:0)

我知道这是一个老问题,但是对于新手,我已经发布了一个自动生成工作流,以使用Azure Pipelines&Bintray为您的水龙头创建和发布瓶子。

您可以在此处找到更多信息:

  

https://github.com/ladislas/homebrew-greetings

一个真实的例子是我坚持认为的osx-cross / avr水龙头现在可以提供用于所有公式的瓶子,包括从9.1.0到4.x.x的所有版本的avr-gcc。

  

https://github.com/osx-cross/homebrew-avr/

答案 2 :(得分:0)

以下是一些自制软件维护者在有用的瓶子上维护自己的存储库的有用博客文章的链接:

https://jonathanchang.org/blog/maintain-your-own-homebrew-repository-with-binary-bottles/

从下面的部分中可以看到,为其他macOS版本创建瓶子就像修改.json文件一样简单(一旦完成其他设置):

https://jonathanchang.org/blog/maintain-your-own-homebrew-repository-with-binary-bottles/#bottling-for-multiple-systems