Homebrew:让你从Mac切换到Linux更轻松

不管你是想要更舒服地从 Mac 搬到 Linux,还是不满意常规的 Linux 包管理器,都可以试试 Homebrew。 2020-06-28 16:07:03 HomebrewMacLinux 在Ubuntu中使用轻量的Apt软件包管理器Synaptic 这周推荐的开源软件是 Synaptic。学习这个经过时光积淀的软件包管理器能做哪些现代软件管理器做不到的事情。 2020-06-28 13:56:01 UbuntuAptSynaptic 要问技术多牛,请问IO模型知多少? 同步异步I/O,阻塞非阻塞I/O是程序员老生常谈的话题了,也是自己一直以来懵懵懂懂的一个话题。 2020-06-28 11:44:02 IO模型计算机 Linux tree 命令详细使用说明 tree 命令是一个小型的跨平台命令行程序,用于递归地以树状格式列出或显示目录的内容。本文主要讲解Linux系统上的tree命令的详细使用方法。

不管你是想要更舒服地从 Mac 搬到 Linux,还是不满意常规的 Linux 包管理器,都可以试试 Homebrew

[[331471]]

不管你是想要更舒服地从 Mac 搬到 Linux,还是不满意常规的 Linux 包管理器,都可以试试 Homebrew。

Homebrew项目最初是为了给 Mac 用户提供一个非官方的 Linux 式的包管理器。用户很快就爱上了它友好的界面以及帮助性的提示,而且,它已经被移植到 Linux 系统 —— 这看起来像是一个奇怪的命运转折。

一开始,有两个分开的项目分别针对 macOS 和 Linux (Homebrew 与 Linuxbrew),但是现在是由 Homebrew 核心管理着这两个操作系统。由于我正从 Mac 切换到 Linux,所以一直在研究我在 macOS 最常用的开源软件在 Linux 表现如何,最终,我很高兴地发现 Homebrew 对 Linux 的支持太赞了!

为什么要在 Linux 使用 Homebrew 呢?

长期使用 Linux 的用户对 Homebrew 的第一反应是:“为什么不直接使用……呢”,省略号代表他们喜欢的某个 Linux 包管理器。基于 Debian 的系统早就有了apt,基于 Fedora 的系统则有dnfyum,并且像 Flatpak 跟 AppImage 这样的项目,在两种系统上都能流畅运行。我花了不少时间尝试这些技术,不得不说,它们都有其强大之处。

那我为什么还要坚持使用 Homebrew呢?首先,我对它非常熟悉。在为我过去使用的专有软件寻找开源替代品的过程中,我已经学会了许多使用方法,而保持一些熟悉的东西,比如 Homebrew,可以让我专注于一次学习一件事情,而不是被不同系统间的差异搞垮。

此外,我没有看到哪一个包管理器像 Homebrew 一样,对用户如此友好。正如默认的帮助命令一样,命令井然有序:

  1. $ brew -h
  2. Example usage:
  3. brew search [TEXT|/REGEX/]
  4. brew info [FORMULA...]
  5. brew install FORMULA...
  6. brew update
  7. brew upgrade [FORMULA...]
  8. brew uninstall FORMULA...
  9. brew list [FORMULA...]
  10. Troubleshooting:
  11. brew config
  12. brew doctor
  13. brew install --verbose --debug FORMULA
  14. Contributing:
  15. brew create [URL [--no-fetch]]
  16. brew edit [FORMULA...]
  17. Further help:
  18. brew commands
  19. brew help [COMMAND]
  20. man brew
  21. <https://docs.brew.sh>

过于简短的输出可能会被误解为它功能局限,但是你简单看看每一个子命令,都有很丰富的功能。虽然上面的列表只有短短 23 行,但对高级用户来说,光是子命令install就包含整整 79 行的帮助信息:

  1. $ brew --help | wc -l
  2. 23
  3. $ brew install --help | wc -l
  4. 79

它可以选择忽略或者安装依赖关系,也可以选择用源代码编译以及用什么编译器来编译某个确切的上游 Git 提交,或者选择应用的官方 “灌装” 版。总而言之,Homebrew 即适合新手,也同样能满足老鸟。

开始在 Linux 使用 Homebrew

如果你想要试着使用 Homebrew,可以用这个单行脚本在 Mac 或者 Linux 上进行安装:

  1. $ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

这条命令会立即开始安装 Homebrew。如果你比较谨慎,可以使用curl将该文件下载到本地,检查完毕之后再运行。

  1. $ curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh --output homebrew_installer.sh
  2. $ more homebrew_installer.sh # 审核该脚本,直到你觉得没问题了
  3. $ bash homebrew_installer.sh

对 Linux 的安装步骤还包括如何配置点文件,对于 Debian 系统来说是~/.profile,对于 Fedora 系统是~/.bash_profile

  1. $ test -d /home/linuxbrew/.linuxbrew && eval $(/home/linuxbrew/.linuxbrew/bin/brew shellenv)
  2. $ test -r ~/.bash_profile && echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.bash_profile
  3. $ echo "eval \$($(brew --prefix)/bin/brew shellenv)" >>~/.profile

为了确认已经安装好,Homebrew 团队提供一个空的hello“秘方” 供测试:

  1. $ brew install hello
  2. ==> Downloading https://linuxbrew.bintray.com/bottles/hello-2.10.x86_64_linux.bottle.tar.gz
  3. ######################################################################## 100.0%
  4. ==> Pouring hello-2.10.x86_64_linux.bottle.tar.gz
  5. 🍺 /home/linuxbrew/.linuxbrew/Cellar/hello/2.10: 52 files, 595.6KB

看起来安装毫无问题,让我来试试更多操作。

命令行工具 Brew

Homebrew 宣称自己是一款默认只 “安装你需要而 [Linux] 没有的东西”的应用程序。

你可以用brew命令安装任何打包在 Homebrew 中的命令行软件。这些包的定义文件叫做 “秘方formula”,而且它们通过“瓶子bottle”来编译并分享。在 Homebrew 的世界里,还有许多 “啤酒方面” 的术语,但这个包管理器主要目的是让软件便于使用。

都有些什么样的软件呢?对我这样的技术玩家(既然你已经在读这篇文章,估计你也是)来说最方便的东西。例如,便利的tree命令,可以展示目录结构,或者pyenv,我用它来在 Mac 管理不同版本 Python

你可以用search命令查看所有可以安装的“秘方”,在后面加上wc命令看看一共有多少:

  1. # -l 选项统计行数
  2. $ brew search | wc -l
  3. 5087

迄今为止,一共有 5000 多个 “秘方”,这囊括了很多软件。需要注意的是:并非所有 “秘方” 都能在 Linux 运行。在brew search --help输出中有一节提到可以按软件运行的操作系统来筛选软件。它会在浏览器打开用于每个操作系统的软件仓库。我运行的是 Fedora,所以我会用它来试一试:

  1. $ brew search --fedora tree

浏览器打开了网址https://apps.fedoraproject.org/packages/s/tree,向我展示了所有 Fedora 的可用选项。你也可以通过其它方法进行浏览。“秘方” 被集中整理到由操作系统划分的核心仓库当中(Mac 在Homebrew Core,Linux 在Linux Core)。同样也可以通过 Homebrew API在网页显示

即使有这些选择,我还是通过其它用户的推荐找到很多新工具。我列出一些我最喜欢的工具,你可以在里面找点灵感:

  • pyenvrbenvnodenv用来管理(相应的) Python、Ruby 和 Node.js 版本
  • imagemagick用于脚本化编辑图片
  • pandoc用于脚本化转换文档格式(我通常将 .docx 文件转成 .md 或者 .html)
  • hub为 GitHub 用户提供更好的 Git 体验
  • tldr展示了命令工具的使用范例

想要深入了解 Homebrew,可以去trldr 页面看看,比起应用的 man 页面,它要友好得多。使用search命令确认你可以安装:

  1. $ brew search tldr
  2. ==> Formulae
  3. tldr ✔

太好了!对勾说明你可以安装。那么继续吧:

  1. $ brew install tldr
  2. ==> Downloading https://linuxbrew.bintray.com/bottles/tldr-1.3.0_2.x86_64_linux.bottle.1.tar.gz
  3. ######################################################################## 100.0%
  4. ==> Pouring tldr-1.3.0_2.x86_64_linux.bottle.1.tar.gz
  5. 🍺 /home/linuxbrew/.linuxbrew/Cellar/tldr/1.3.0_2: 6 files, 63.2KB

Homebrew 提供了编译好的二进制文件,所以你不必在本地机器上从源码编译。这能节省很多时间,也不用听 CPU 风扇的噪声。我很欣赏 Homebrew 的另外一点是,你不完全理解每一个选项的含义也不会影响正常使用。若你想自己编译,可以在brew install命令后面加上-s或者--build-from-source标识,这样就能从源码编译 “秘方”(即便已经有一个 “瓶子” 存在)。

同样,软件底层的复杂性也很有意思。使用info可以查看tldr软件的依赖管理,“秘方” 的源代码存放在磁盘上的何处,甚至还能查看公开分析。

  1. $ brew info tldr
  2. tldr: stable 1.3.0 (bottled), HEAD
  3. Simplified and community-driven man pages
  4. https://tldr.sh/
  5. Conflicts with:
  6. tealdeer (because both install `tldr` binaries)
  7. /home/linuxbrew/.linuxbrew/Cellar/tldr/1.3.0_2 (6 files, 63.2KB) *
  8. Poured from bottle on 2020-06-08 at 15:56:15
  9. From: https://github.com/Homebrew/linuxbrew-core/blob/master/Formula/tldr.rb
  10. ==> Dependencies
  11. Build: pkg-config ✔
  12. Required: libzip ✔, curl ✔
  13. ==> Options
  14. --HEAD
  15. Install HEAD version
  16. ==> Analytics
  17. install: 197 (30 days), 647 (90 days), 1,546 (365 days)
  18. install-on-request: 197 (30 days), 646 (90 days), 1,546 (365 days)
  19. build-error: 0 (30 days)

从 Mac 到 Linux 的一点不足

在 macOS,Homebrew 的cask(“酒桶”)子命令可以让用户使用命令行安装、管理整个应用软件。不幸的是,cask还不能在任何 Linux 发行版上使用。我在安装一个开源工具时发现了这点:

  1. $ brew cask install tusk
  2. Error: Installing casks is supported only on macOS

我在论坛上问了一下,很快得到其他用户的反馈。总结一下,方案如下:

  • 复刻 Homebrew 项目,构建这个特性,然后像别人展示其价值
  • 给该软件写一个 “秘方”,然后从源代码编译
  • 为该软件创建一个第三方仓库

最后一个是我最感兴趣的。Homebrew 通过创建并维护 “水龙头tap(另一个受啤酒影响的术语)管理第三方仓库。随着你对系统越来越熟悉,并想加入生态系统, “水龙头” 是值得研究的。

备份 Homebrew 的安装记录

我最中意的 Homebrew 特性之一就是你可以像其它任何用版本控制工具来备份点文件一样备份你的安装记录。为了实现这个目的,Homebrew 提供bundle(“捆扎”)子命令,它可以控制一个叫dump(“倾倒”)的子命令生成一个Brewfile。这个文件包含你目前所有安装的工具列表,可以重复使用。进入你想使用的目录然后运行命令,它会根据你所安装的软件生成Brewfile

  1. $ cd ~/Development/dotfiles # This is my dotfile folder
  2. $ brew bundle dump
  3. $ ls Brewfile
  4. Brewfile

当我换了一台机器,想要安装一样的软件时,进入含有Brewfile的文件夹,然后重新安装:

  1. $ ls Brewfile
  2. Brewfile
  3. $ brew bundle

它会在我的新机器上安装所有列出的 “秘方”。

在 Mac 和 Linux 同时管理 Brewfile

Brewfile非常适合备份你目前的安装记录,但是如果某些在 Mac 上运行的软件无法运行在 Linux 呢?或者刚好相反?我发现不管是 Mac 还是 Linux,如果软件无法在当前操作系统运行,Homebrew 会优雅地忽略那一行。如果它遇到不兼容的请求(比如使用brew在 Linux 安装 “酒桶cask” 时),它会选择跳过,继续安装过程:

  1. $ brew bundle --file=Brewfile.example
  2. Skipping cask licecap (on Linux)
  3. Skipping cask macdown (on Linux)
  4. Installing fish
  5. Homebrew Bundle complete! 1 Brewfile dependency now installed.

为了保持配置文件的简洁,我在两个操作系统上使用同一份Brewfile,因为它只安装与操作系统相关的版本,所以我一直没有遇到任何问题。

使用 Homebrew 管理软件包

Homebrew 已经成了我必备的命令行工具,由于我很熟悉它,所以在 Linux 上的体验也充满乐趣。Homebrew 让我的工具井然有序,并且时刻保持更新,我愈发欣赏它在实用性与功能上找到的平衡点。我更喜欢将软件包管理的细节保持在用户需要了解的最小程度,大多数人都会从中受益。如果你已经很熟悉 Linux 包管理器了,Homebrew 可能会让你觉得很基础,但稍微深入一点看,就会发现它的高级选项远远超过本文的内容。

对 Linux 用户来说,他们有很多包管理器可以选择。如果你来自 MacOS,Homebrew 会让你宾至如归。

©本文为清一色官方代发,观点仅代表作者本人,与清一色无关。清一色对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。本文不作为投资理财建议,请读者仅作参考,并请自行承担全部责任。文中部分文字/图片/视频/音频等来源于网络,如侵犯到著作权人的权利,请与我们联系(微信/QQ:1074760229)。转载请注明出处:清一色财经

(0)
打赏 微信扫码打赏 微信扫码打赏 支付宝扫码打赏 支付宝扫码打赏
清一色的头像清一色管理团队
上一篇 2023年5月6日 10:10
下一篇 2023年5月6日 10:10

相关推荐

发表评论

登录后才能评论

联系我们

在线咨询:1643011589-QQbutton

手机:13798586780

QQ/微信:1074760229

QQ群:551893940

工作时间:工作日9:00-18:00,节假日休息

关注微信