Homebrew 是 macOS 命令安装工具,其核心库里的命令行在 github homebrew-core 仓库上维护。

核心库命令大概有 5000 条左右,大部分的命令行工具只保留了最新版本的 .rb 安装脚本。因此,如果想通过 brew 安装指定版本或命令的多个版本,需要借助 git 操作来实现。

接下来以同时安装 tmux 最新版本和 2.4 版本为例进行说明:

1、安装最新版 tmux

brew install tmux
tmux -V

安装完成后运行 tmux -V 查看到当前最新版本为 tmux 2.8

2、查找 tmux 2.4 指定版本的 commit hash

下载 homebrew-core 至本地,查找 tmux.rb 提交历史中 2.4 版本的 commit hash

git clone https://github.com/Homebrew/homebrew-core.git
cd homebrew-core
git log master --grep=2.4 Formula/tmux.rb

版本库比较大,查询一段时间后,命令行输出以下内容:

commit 04c280961f568c8fcd25aa35d58834e016ccbd64
Author: BrewTestBot <brew-test-bot@googlegroups.com>
Date: Thu Apr 20 13:27:39 2017 +0100 tmux: update 2.4 bottle. commit 2d2034afc6e4dfab0a1c48f5edd2c5478576293b
Author: ilovezfs <ilovezfs@icloud.com>
Date: Thu Apr 20 05:22:28 2017 -0700 tmux 2.4 Closes #12673. Signed-off-by: ilovezfs <ilovezfs@icloud.com>
(END)

由此可知,tmux 2.4 版本的 commit hash 为 04c280961f568c8fcd25aa35d58834e016ccbd64

3、切换 git 指定分支使用本地脚本安装 tmux

由于已经安装过最新版 tmux 了,执行以下命令可以临时删除环境变量里的 alias 软链

brew unlink tmux

在本地的 homebrew-core 目录中,切换 git 至指定分支,并使用本地相对路径,安装需要的命令行工具。

git checkout 04c280961f568c8fcd25aa35d58834e016ccbd64
brew install ./Formula/tmux.rb

4、切换至任意版本的 tmux

安装完成后,可以通过 ls 看到同时安装了 2.4 和 2.8 两个版本

ls /usr/local/Cellar/tmux

之后使用 brew switch 命令即可在多个不同版本之间进行切换

brew switch tmux 2.8
brew switch tmux 2.4

brew 安装指定版本命令行工具 tmux 多版本实现的更多相关文章

  1. kratos v2版本命令行工具使用

    使用 下载 go install github.com/go-kratos/kratos/cmd/kratos/v2@latest 查看是否安装成功 kratos -v kratos version ...

  2. Linux中安装传输的命令行工具

    创建lrzsz目录: mkdir /usr/local/lrzsz 进入lrzsz目录: cd /usr/local/lrzsz 下载lrzsz压缩包: wget http://www.ohse.de ...

  3. [Linux] tmux 终端复用命令行工具

    tmux 终端复用命令行工具 tmux 是一款终端复用命令行工具,通常用于 Terminal 的窗口管理.可以在终端软件重启后通过命令行恢复上次的 session. 安装运行 macOS 上使用 Ho ...

  4. windows下的命令行工具babun

    什么是babun babun是windows上的一个第三方shell,在这个shell上面你可以使用几乎所有linux,unix上面的命令,他几乎可以取代windows的shell.用官方的题目说就是 ...

  5. Gitbook 命令行工具

    1.Gitbook 简介 1.1 Gitbook GitBook 是一个基于 Node.js 开发的命令行工具,使用它可以很方便的管理电子书,GitBook 是目前最流行的开源书籍写作方案. 使用 G ...

  6. 利用VS自带的命令行工具查看和生产PublicKeyToken (转)

    使用VS2013(或其他版本)命令行工具,键入:SN -T C:\*****.dll 就会显示出该dll具体的PublicKeyToken数值. 如果该程序集没有强命 名,则不会有PublicKeyT ...

  7. 利用VS自带的命令行工具查看和生产PublicKeyToken

    使用VS2008(或其他版本)命令行工具,键入:SN -T C:\*****.dll 就会显示出该dll具体的PublicKeyToken数值. 如果该程序集没有强命 名,则不会有PublicKeyT ...

  8. 【Mac】Mac OS X 安装GNU命令行工具

    macos的很多用户都是做it相关的人,类unix系统带来了很多方面,尤其是经常和linux打交道的人. 但是作为经常使用linux 命令行的人发现macos中的命令行工具很多都是bsd工具,跟lin ...

  9. Windows2008安装组件命令行工具ServerManagerCmd用法介绍

    转自:http://blog.sina.com.cn/s/blog_537de4b5010128al.html Windows2008 安装组件服务等内容比原来复杂的多,用鼠标点来点去,既繁琐也缓慢, ...

随机推荐

  1. Java 架构师眼中的 HTTP 协议

    HTTP 协议的内容比较多,本文我们将分六部分来介绍. HTTP 协议的基本内容 什么是 HTTP 协议 首先我们来看协议是什么?协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守有规则的文 ...

  2. nodejs模板加载的问题

    JADE模板:http://jumplink.github.io/jade2html2jade/ HTML转JADE,跟imooc上一步步来就搞定了 直接加载HTML静态资源: var express ...

  3. java 基础之枚举

    问题:对象的某个属性的值不能是任意的,必须为固定的一组取值其中的某一个 解决办法: 1)  在setGrade方法中做判断,不符合格式要求就抛出异常 2)  直接限定用户的选择,通过自定义类模拟枚举的 ...

  4. 15.app后端怎么设计用户登录方案

    在很多app中,都需要用户的登录操作.登录,就需要用到用户名和密码.为了安全起见,暴露明文密码的次数越少越好.怎么能最大程度避免泄露用户的密码呢?在登录后,app后端怎么去验证和维持用户的登录状态呢? ...

  5. 如何最简便的利用Python实现数据可视化?当然离不开matplotlib!

    01|Figure和Subplot: matplotlib的图像全部在figure对象里面,就像是一片画布.figsize是figure的一个设置大小的属性.一个figure里面可以有无数个subpl ...

  6. Spring Boot中使用MyBatis注解配置详解(1)

    之前在Spring Boot中整合MyBatis时,采用了注解的配置方式,相信很多人还是比较喜欢这种优雅的方式的,也收到不少读者朋友的反馈和问题,主要集中于针对各种场景下注解如何使用,下面就对几种常见 ...

  7. java面向对象中四种权限(private,protected,public,友好型)详解

    转自http://blog.csdn.net/a1237871112/article/details/50926975 及http://blog.csdn.net/blackmanren/articl ...

  8. NOIP 2017 游记?

    Day -1 晚上被dg谈了谈人生,没有卵用 Day 0 早上又被老吕教训了一遍,想打板子,打印机还坏了,老吕又奶了一波题,后来发现一个都没中.之后就出发了,中午吃了点肯德基,妈妈来了,给我了个小袋子 ...

  9. LoadRunner接口测试方法

    实际上到目前为止,我所做过的几个关于性能测试的项目,都是在UI页面上能正常访问结束所有的前期功能测试而开始的性能测试.但loadrunner不仅仅只能靠录制回放修改脚本进行性能测试. 往往需要对发送报 ...

  10. Dropwizard入门及开发步骤

    Dropwizard介绍 Dropwizard结构的服务组成 开发步骤 Dropwizard介绍 Dropwizard是一个微服务框架, 是各项技术的一个集成封装.它包含了以下组件: 嵌入式Jetty ...