macos - 如何在新的 macOS 版本上为旧版本创建 Homebrew 瓶?

标签 macos homebrew zsh oh-my-zsh

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

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

该错误不仅阻止了 utf-8 多字节 ascii 字符的绑定(bind)(我使用了很多 Option 键组合),而且如果其他字符具有相同的初始字节,则它们甚至无法被输入。

我认为这是错误出现之前 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 的瓶子。方法如下:

首先,您需要从 homebrew-core 存储库下载所有提交,因为默认情况下它是一个浅存储库(并非所有提交都存在)。
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

build 瓶子
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 评论 ==

官方 Homebrew 瓶存储在 bintray.com 中。 Bintray 是一个带有 REST api 的分发平台。当您启动 brew install ,它首先检查那里是否有瓶子。 zsh 5.1.1 的瓶子存储在:https://bintray.com/homebrew/bottles/zsh/5.1.1#files .如您所见,有一个适用于 yosemite、mavericks 和 el capitan 的版本,但没有适用于 sierra 的版本。您可以在 github 上要求将 zsh-5.1.1 sierra 瓶放在那里。

关于macos - 如何在新的 macOS 版本上为旧版本创建 Homebrew 瓶?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40434367/

相关文章:

shell - 防止 TMUX 在 intellij 终端中启动

zsh - 如何在 zsh 中删除文件夹中的所有文件,但不删除文件夹本身?

timezone - 'US/Eastern' 和 'US/Central' 和 'US/Pacific' 是否不推荐用于 strftime 或只是 PHP?

macos - psql : FATAL: role "postgres" does not exist

node.js - 覆盖冲突文件链接node.js时出错

macos - 视网膜屏幕上的 IKImageBrowserView

macos - 特使 - 断言失败 : interface_index == 0

homebrew - Mac OS X 上更新 Brew 错误

c - 如何在 Xcode 中为命令行工具程序创建 .app 文件

macos - 监控 Thunderbolt 端口连接的变化