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. 关于checkpoint

    Ⅰ.Checkpoint 1.1 checkpoint的作用 缩短数据库的回复时间 缓冲池不够用时,将脏页刷到磁盘 重做日志不可用时,刷新脏页 1.2 展开分析 page被缓存在bp中,page在bp ...

  2. Sublime 3基于python环境的使用

    .Ctrl+Shift+R 自动调整格式 打开Sublime Text 新建一个Python的编译系统 { "cmd": ["C:\\python\\python.exe ...

  3. java集合框架之LinkedList

    参考http://how2j.cn/k/collection/collection-linkedlist/370.html LinkedList 与 List接口 与ArrayList一样,Linke ...

  4. Python并发编程之深入理解yield from语法(八)

    大家好,并发编程 进入第八篇. 直到上一篇,我们终于迎来了Python并发编程中,最高级.最重要.当然也是最难的知识点--协程. 当你看到这一篇的时候,请确保你对生成器的知识,有一定的了解.当然不了解 ...

  5. pyqt5将图片插入面板

    from PyQt5.QtWidgets import * from PyQt5 import QtCore,QtWidgets from PyQt5.QtGui import * import sy ...

  6. Promise原理—一步一步实现一个Promise

    promise特点 一个promise的当前状态只能是pending.fulfilled和rejected三种之一.状态改变只能是pending到fulfilled或者pending到rejected ...

  7. 最详细的div边距合并的问题和解决方法

    对于前端来说写页面是最基础的东西了,但是想不到还是有人不理解边距合并的问题,昨天有网友问我为什么设置的margin不是我设置的实际效果? 好吧,废话不多说,下面来说一下关于margin合并的问题. 解 ...

  8. 机器学习周志华 pdf统计学习人工智能资料下载

    周志华-机器学习 pdf,下载地址: https://u12230716.pipipan.com/fs/12230716-239561959 统计学习方法-李航,  下载地址: https://u12 ...

  9. spring JdbcTemplate 在itest 开源测试管理项目中的浅层(5个使用场景)封装

    导读: 主要从4个方面来阐述,1:背景:2:思路:3:代码实现:4:使用 一:封装背景, 在做项目的时候,用的JPA ,有些复杂查询,比如报表用原生的JdbcTemplate ,很不方便;传参也不方便 ...

  10. 【转】大白话讲解Promise(一)

    原文地址:https://www.cnblogs.com/lvdabao/p/es6-promise-1.html ES6 Promise 先拉出来遛遛 复杂的概念先不讲,我们先简单粗暴地把Promi ...