2

如何使用 ansible 安装特定版本的自制木桶公式?例如,vagrant 2.2.6 而最新可用的是 2.2.7。

4

4 回答 4

4

对于较新版本的 Homebrew,该cask命令已被删除并导致错误Error: Unknown command: cask

Homebrew 3.1.12我可以通过以下步骤安装特定版本:

  1. 按照https://stackoverflow.com/a/61552727/3302668中的步骤查找.rb您的包的文件

  2. 使用以下命令在本地下载文件:(curl -O -L https://raw.githubusercontent.com/Homebrew/homebrew-cask/<commit>/Casks/<package>.rb注意:YMMV 取决于curl版本)。

    前任:curl -O -L https://raw.githubusercontent.com/Homebrew/homebrew-cask/d81815ea27a778a312fa0e2bbef0d78f9767f45b/Casks/vagrant.rb

  3. brew install --cask <package>.rb

    前任:brew install --cask vagrant.rb

我按照这些步骤在 macOS 11.4 上将 vagrant 从 2.2.16 降级到 vagrant 2.2.15

于 2021-06-14T20:06:27.447 回答
3

编辑:此答案适用于brew支持cask子命令的旧版本,在新版本的brew. 留在这里用于存档目的。


$ brew cask install https://raw.githubusercontent.com/Homebrew/homebrew-cask/<git-hash>/Casks/<cask-ruby-file>.rb

/TL;博士

与 不同homebrew的是,木桶没有使用@#.#.# 进行版本控制。相反,除了要运行的 cask 本身的文件名之外,您还必须找到确切的 git commit hash 来安装,并传入一个 URL。

例如,要安装 ChefDK:

  • 知道你想安装 ChefDK 的确切版本(真的没有浏览)
  • 前往包含所有木桶的 git 仓库:https ://github.com/Homebrew/homebrew-cask
  • 使用搜索功能并找到要运行的 Ruby 文件(在本例中为/Casks/chefdk.rb)并输入版本。例如搜索字段中的“chefdk 2.5.3”
  • 点击那个 PR,然后打开它。在这种情况下,PR 编号在上面的屏幕截图中是 44655。
  • 在 PR 中找到最后一个提交,然后单击它(我们需要该提交的完整哈希,它仅在该提交消息中)。
  • 现在,获取完整的提交哈希。为此,它是“be76032ad4fd5b03036ebe3628a6294354017906”
  • 最后,我们可以构建 URL 并安装该特定版本。网址格式为:
https://raw.githubusercontent.com/Homebrew/homebrew-cask/<git-hash>/Casks/<cask-ruby-file>.rb

git hash所以我们需要用and填补空白cast-ruby-file

brew cask install https://raw.githubusercontent.com/Homebrew/homebrew-cask/be76032ad4fd5b03036ebe3628a6294354017906/Casks/chefdk.rb

这不好玩,但这是唯一的方法......

于 2020-05-02T00:08:30.583 回答
0

我找到了这个解决方案:

---
- hosts: all
  tasks:
  - name: Task 1 - Check vagrant 2.2.6 is installed
    stat: path=/usr/local/Caskroom/vagrant/2.2.6
    register: vagrant_installed
  - name: Task 2 - Install vagrant 2.2.6 if not yet installed
    block:
      - name: Create temporary directory to download vagrant formula
        tempfile:
          state: directory
        register: tempdir_vagrant_rb
      - name: Download formula vagrant.rb version 2.2.6
        get_url:
          url: https://raw.githubusercontent.com/Homebrew/homebrew-cask/ae2a540ffee555491ccbb2cefa4296c76355ef9f/Casks/vagrant.rb
          dest: "{{ tempdir_vagrant_rb.path }}/vagrant.rb"
      - name: Install vagrant 2.2.6
        command: brew cask install {{ tempdir_vagrant_rb.path }}/vagrant.rb

第一个任务通过转到默认的 cask 目录来检查是否已经安装了 vagrant 2.2.6。需要保持剧本幂等。

第二个任务使用公式版本 2.2.6 的直接原始 URL 安装 vagrant 2.2.6。为了找到 URL,我使用了这个分步文档。

于 2020-03-16T08:53:20.190 回答
0

1.创建一个可以存储具有特定版本公式的集合的水龙头。

brew tap-new [tap name]/local

2.提取特定版本的公式。

brew extract --force --version=[version] [formula name] [tap name]/local

3.如果上一步成功,可以直接安装。

brew install [formula name]@[version]

你可以使用我的工具。

bash <(curl -s -S -L https://raw.githubusercontent.com/2016321/Formula-Founder/main/install_specific_version_formula.sh) [formula name] [version] [specific tap, defaut is homebrew/cask]

4.但有时你无法提取你想要的公式。你应该使用 git。实际上,tap 是一个 git 存储库。

4_1.找到正确的水龙头有你想要的公式。比如我想安装2.18.0版本的xcodegen。Xcodegen 在 homebrew-core 中。

cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core/Formula

4_2.检查关于xcodegen的正确哈希。

git log xcodegen

在此处输入图像描述

git checkout 421359f4b3d6e8048e8660396d2fc6afb8557815

4_3.安装2.18.0版本的xcodegen。当 brew 自动更新时,您应该停止(control + c)。

brew install xcodegen

4_4.你不需要在brew的tap中签出master,因为下次安装新公式时,如果你没有在环境变量中设置[HOMEBREW_NO_AUTO_UPDATE=t​​rue],bre​​w会自动更新。

于 2021-07-16T04:17:36.133 回答