标签 Homebrew 下的文章

用于 macOS(如果你需要的话,也包括 Linux)的附加软件包管理器。

如果你在 Mac 上的终端窗口工作,Homebrew 是一个方便的工具,它可以让你快速、轻松地安装广泛的 FOSS 世界中各种熟悉的工具。

这个附加的软件包管理器不需要超级用户权限,可以将程序安装到你的主目录中:它 “对 macOS 的作用就像 apt-get 对 Debian 的作用”。新版本 4.0.0 比以前更快,特别是在更新过程中。自动更新现在每天运行一次,而不是像 3.6 版那样每 5 分钟一次。虽然支持各种 Linux 发行版 —— 其基本要求非常宽松,内核 3.2 或更新版本,以及 Glibc 2.13 或更新版本 —— 但新版本不再正式支持 WSL1。

 title=

Homebrew 团队合影,包括 “冒泡啤酒” —— 项目负责人 Mike McQuaid

尽管 macOS 有 FOSS 的 基础,但苹果公司的产品是针对 Mac 用户设计的,他们倾向于生活在一个图形化的、点击式的世界里。这可能会让来自 Linux 的移民感到困惑:尽管 Mac 的终端环境继承了很多表面上看起来熟悉的来自 FreeBSD 的工具,但它们往往是过时的版本,或者有细微的不同。Linux 用户期望能够仅仅通过 apt 安装 python-3.11 或类似的工具。

这正是 Homebrew 被设计来解决的问题:安装 Homebrew 包,然后你输入 brew install [email protected] 就可以了。而且,至关重要的是,如果你在 macOS 上安装一个新版本的 Python,你可能会破坏操作系统的其他部分,而使用 Homebrew,你安装的任何东西都是你自己的 —— 它不会影响整个操作系统,也不会影响任何其他用户。

Homebrew 最初是为 macOS 建立的,但事实证明这个概念对 Linux 用户也很有用。你可能没有机器的 root 权限 —— 或者即使你有,那也可能只让你安装古老的版本,这些版本没有什么帮助,但你不能轻易更新。

该项目负责人 Mike McQuaid —— 当 Reg FOSS 部门的人在 FOSDEM 上见到他时,他正 穿着 华丽的衣服,像一杯冒泡的啤酒 —— 告诉我们:

Linux 上的 Homebrew 曾经是一个被称为 “Linuxbrew” 的独立复刻。但随着时间的推移,到了如今这些努力和我们已经完全是一个项目了,共享我们的团队和基础设施等等。

它最初的用途是在高端生物信息学机器上,用户没有 root 权限来使用系统的软件包管理器,但想在该机器上从软件包管理器安装新的软件。

以前独立的 Linuxbrew 复刻早在 2019 年就被 并入 了主项目的 1.9 版本。McQuaid 解释说,Homebrew 项目一些特异的 术语,例如,“ 酒桶 cask ” 和 “ 水龙头 tap ”,都源自于合并的各种项目:

Homebrew Cask 是一个独立的项目(现在基本上已经统一),允许 Homebrew 用于安装闭源软件的上游二进制包(相比之下,我们的主仓库 homebrew-core 只允许我们从源头构建自己的二进制的开源软件),例如 Chrome、Firefox 等。

Homebrew 的 “我们从源代码构建” 的描述文件被称为 “ 配方 formulae ”,我们用它构建我们的二进制包,“ 瓶子 bottle ”。

Homebrew 的 “分发上游二进制文件” 的描述文件被称为 “ 酒桶 cask ”。

Homebrew 也可以在 Windows 10 或 11 上的 WSL 内工作,尽管在版本 4 中只支持 WSL2。它支持 Debian 和 Red Hat 家族的发行版,包括 Ubuntu、CentOS 和 RHEL,可以运行在 x86-64 和 Arm 32/64 机器上。


via: https://www.theregister.com/2023/02/27/homebrew_version_4_is_here/

作者:Liam Proven 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

简介

Homebrew 是一个 macOS 的包管理器,用于在 macOS 上安装 UNIX 工具。但是,它也可以在 Linux(和 Windows WSL)上使用。它是用 Ruby 编写的,并提供主机系统(macOS 或 Linux)可能不提供的软件包,因此它在操作系统包管理器之外提供了一个辅助的包管理器。此外,它只以非 root 用户身份在前缀 /home/linuxbrew/.linuxbrew~/.linuxbrew 下安装软件包,不会污染系统路径。这个包管理器在 Fedora Linux 上也适用。在这篇文章中,我将尝试告诉你 Homebrew 与 Fedora Linux 包管理器 dnf 有什么不同,为什么你可能想在 Fedora Linux 上安装和使用它,以及如何安装。

免责声明

你应该经常检查你在系统上安装的软件包和二进制文件。Homebrew 包通常以非 sudoer 用户运行,并工作在专门的前缀的路径下,因此它们不太可能造成破坏或错误配置。然而,所有的安装操作都要自己承担风险。作者和 Fedora 社区不对任何可能直接或间接因遵循这篇文章而造成的损失负责。

Homebrew 如何工作

Homebrew 在底层使用 Ruby 和 Git。它使用特殊的 Ruby 脚本从源代码构建软件,这些脚本被称为 “ 配方 formula ”,看起来像这样(使用 wget 包作为例子):

(LCTT 译注:Homebrew 本身意思是“家酿”,在这个软件中,有各种类似于酿酒的比喻。)

class Wget < Formula
  homepage "https://www.gnu.org/software/wget/"
  url "https://ftp.gnu.org/gnu/wget/wget-1.15.tar.gz"
  sha256 "52126be8cf1bddd7536886e74c053ad7d0ed2aa89b4b630f76785bac21695fcd"

  def install
    system "./configure", "--prefix=#{prefix}"
    system "make", "install"
  end
end

Homebrew 与 dnf 有何不同

Homebrew 是一个包管理器,提供了许多 UNIX 软件工具和包的最新版本,例如 FFmpeg、Composer、Minikube 等。当你想安装一些由于某种原因在 Fedora Linux RPM 仓库中没有的软件包时,它就会证明很有用。所以,它并不能取代 dnf

安装 Homebrew

在开始安装 Homebrew 之前,确保你已经安装了 glibc 和 gcc。这些工具可以在 Fedora 上通过以下方式安装:

sudo dnf groupinstall "Development Tools"

然后,通过在终端运行以下命令来安装 Homebrew:

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

在安装过程中,你会被提示输入你的 sudo 密码。另外,你可以选择 Homebrew 的安装前缀,但默认的前缀就可以了。在安装过程中,你将成为 Homebrew 前缀目录的所有者,这样你就不必输入 sudo 密码来安装软件包。安装将需要数分钟。完成后,运行以下命令,将 brew 添加到你的 PATH 中:

echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> ~/.bash_profile
eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"

安装和检查软件包

要在 Homebrew 上使用“配方”安装一个软件包,只需运行:

brew install <formula>

<formula> 替换为你要安装的“配方”的名称。例如,要安装 Minikube,只需运行:

brew install minikube

你也可以用以下方式搜索“配方”:

brew search <formula>

要获得一个“配方”的信息,请运行:

brew info <formula>

另外,你可以用以下命令查看所有已安装的“配方”:

brew list

卸载软件包

要从你的 Homebrew 前缀中卸载一个软件包,请运行:

brew uninstall <formula>

升级软件包

要升级一个用 Homebrew 安装的特定软件包,请运行:

brew upgrade <formula>

要更新 Homebrew 和所有已安装的“配方”到最新版本,请运行:

brew update

总结

Homebrew 是一个简单的包管理器,可以与 dnf 一起成为有用的工具(两者完全没有关系)。尽量坚持使用 Fedora 原生的 dnf 包管理器,以避免软件冲突。然而,如果你在 Fedora Linux 软件库中没有找到某个软件,那么你也许可以用 Homebrew 找到并安装它。请看 “配方”列表 以了解有哪些可用的软件。另外,Fedora Linux 上的 Homebrew 还不支持图形化应用(在 Homebrew 术语中称为“ 酒桶 cask ”)。至少,我在安装 GUI 应用时没有成功过。

参考资料和进一步阅读

要了解更多关于 Homebrew 的信息,请查看以下资源:


via: https://fedoramagazine.org/using-homebrew-package-manager-on-fedora-linux/

作者:Mehdi Haghgoo 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Homebrew(家酿),也被称为 Brew,是一个主要为 macOS 创建的命令行包管理器。

Homebrew 在 macOS 用户中相当流行,因为更多的开发者创造了可以用 Homebrew 轻松安装的命令行工具。

这种流行导致了 Linuxbrew 的诞生,它是 Homebrew 的一个 Linux 移植版。由于它主要是 Git 和 Ruby 组成的,而 Linux 和 macOS 都是类 Unix 的系统,所以 Brew 在两种操作系统上都能很好地工作。

Linuxbrew 项目最终与 Homebrew 项目合并,现在只有一个 Brew 项目,叫做 Homebrew。

为什么我叫它 Brew,而不是 Homebrew?因为命令以 brew 开头。你会在后面的章节中看到它的详细内容。

当你已经有了 apt、dnf、snap 时,为什么还要在 Linux 上使用 Homebrew 包管理器?

我知道这种感觉。你已经有一个由你的发行版提供的好的 包管理器。除此之外,你还有 Snap、Flatpak 和其他通用软件包系统。

在你的 Linux 系统上你真的需要 Homebrew 包管理器吗?答案取决于你的需求。

你看,除了发行版的包管理器和通用包管理器,你会遇到需要其他包管理器的情况,比如 Pip (用于 Python 应用)和 Cargo (用于 Rust 软件包)。

想象一下,你遇到了一个很好的命令行工具,想试试。它的软件库提到它可以使用 brew 或源代码来安装。在这种情况下,在你的系统上有 brew 可能会有帮助。毕竟,都 2021 了,从源代码安装 并不时髦(也不舒服)。

换句话说,如果你遇到一些有趣的命令行工具只提供 brew 安装选项,你会有一个额外的选择。

在 Ubuntu 和其他 Linux 发行版上安装 Homebrew

安装是相当容易的。你只需要确保你已经有了所有的依赖项。

步骤 1:安装依赖项

你需要有相对较新版本的 gcc 和 glibc。你可以 在 Ubuntu 上安装 build-essential 包 来获得它们。除此之外,你还需要 安装 Git、Curl 和 procps(用于监控系统进程)。

在基于 Ubuntu 和 Debian 的系统中,你可以像这样一起安装所有这些东西:

sudo apt-get install build-essential procps curl file git

Iinstall dependencies for Homebrew in Ubuntu/Debian

对于其他发行版,请使用你的包管理器并安装这些依赖项。

步骤 2:安装 Homebrew

你可以看到为什么你需要 安装 Curl。它允许你 在终端下载安装脚本文件

只要输入这个命令:

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

当要求输入回车键时,请按下回车。

Installing Homebrew on Ubuntu

在脚本最后,它建议运行几个命令,将其添加到 PATH 变量中。Homebrew 实际上是安装在你的主目录中,然后软链接到 /usr/local 目录中。

Run the suggested command under Next steps to add Homebrew to PATh variable

你可以 在终端方便地复制和粘贴。只要选择它所建议的命令,按 Ctrl+Shift+C 复制,按 Ctrl+Shift+V 粘贴。

或者,你也可以直接复制粘贴这个命令:

echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> $HOME/.bash_profile

然后是这个:

eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"

Adding brew commands to the PATH

步骤 3:验证 brew 的安装

就快完成了。只需通过使用 brew doctor 命令来验证 brew 命令是否可以运行:

brew doctor

brew doctor 命令会告诉你是否有任何问题。

你可以通过安装示例 hello 项目再次验证:

brew install hello

如果你没有看到任何错误,你可以在 Linux 上享用家酿了。

使用 brew 命令来安装、删除和管理软件包

让我快速告诉你几个可以用来安装、删除和管理软件包的 brew 命令。

由于 Homebrew 安装在你的主目录中,你不需要 sudo 来运行它(就像 Pip 和 Cargo)。

要用 brew 安装一个软件包,请使用安装选项:

brew install package_name

这里没有自动完成软件包名称的功能。你需要知道确切的软件包名称。

要删除一个 brew 软件包,你可以使用 removeuninstall 选项。两者的作用是一样的。

brew remove package_name

你也可以用这个命令列出已安装的 brew 软件包:

brew list

你也可以用 autoremove 选项删除不需要的依赖:

brew autoremove

在下一张截图中,我只用 brew 安装了两个软件包,但它也显示了这些软件包的依赖关系。即使在移除软件包后,依赖关系仍然存在。autoremove 终于把它们删除了。

Listing and removing brew apckages

还有很多 brew 命令选项,但这不在本教程的范围内。你可以随时 翻阅它的文档 并进一步探索。

从 Linux 中删除 Homebrew

如果不加入从你的 Linux 系统中删除 Homebrew 的步骤,本教程就不完整。

根据 GitHub 仓库中提到的步骤,你必须下载并使用这个命令运行卸载脚本:

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

你会被要求输入 Y 键来确认删除。

Removing Homebrew from Linux

当 Homebrew 的卸载完成后,它会列出它所遗留的文件和目录:

Remaining files after Homebrew removal

让你自己去删除这些文件和目录。

总结

正如我前面解释的,Homebrew 为你已经有的东西提供了一个扩展。如果你偶然发现一个只有 brew 安装方式的应用,在你的 Linux 系统上安装 Homebrew 会很方便。

你对这个话题有什么要补充的,或者分享你的问题或意见?请在评论区留言。


via: https://itsfoss.com/homebrew-linux/

作者:Abhishek Prakash 选题:lujun9972 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

不管你是想要更舒服地从 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 一样,对用户如此友好。正如默认的帮助命令一样,命令井然有序:

$ brew -h
Example usage:
  brew search [TEXT|/REGEX/]
  brew info [FORMULA...]
  brew install FORMULA...
  brew update
  brew upgrade [FORMULA...]
  brew uninstall FORMULA...
  brew list [FORMULA...]

Troubleshooting:
  brew config
  brew doctor
  brew install --verbose --debug FORMULA

Contributing:
  brew create [URL [--no-fetch]]
  brew edit [FORMULA...]

Further help:
  brew commands
  brew help [COMMAND]
  man brew
  <https://docs.brew.sh>

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

$ brew --help | wc -l
23
$ brew install --help | wc -l
79

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

开始在 Linux 使用 Homebrew

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

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

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

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

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

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

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

$ brew install hello
==> Downloading https://linuxbrew.bintray.com/bottles/hello-2.10.x86_64_linux.bottle.tar.gz
######################################################################## 100.0%
==> Pouring hello-2.10.x86_64_linux.bottle.tar.gz
?  /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 命令看看一共有多少:

# -l 选项统计行数
$ brew search | wc -l
    5087

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

$ 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 命令确认你可以安装:

$ brew search tldr
==> Formulae
tldr ✔

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

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

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

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

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

从 Mac 到 Linux 的一点不足

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

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

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

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

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

备份 Homebrew 的安装记录

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

$ cd ~/Development/dotfiles # This is my dotfile folder
$ brew bundle dump
$ ls Brewfile
Brewfile

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

$ ls Brewfile
Brewfile
$ brew bundle

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

在 Mac 和 Linux 同时管理 Brewfile

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

$ brew bundle --file=Brewfile.example

Skipping cask licecap (on Linux)
Skipping cask macdown (on Linux)
Installing fish
Homebrew Bundle complete! 1 Brewfile dependency now installed.

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

使用 Homebrew 管理软件包

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

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


via: https://opensource.com/article/20/6/homebrew-linux

作者:Matthew Broberg 选题:lujun9972 译者:nophDog 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Homebrew 软件包管理器可以让你轻松地在 Mac 上安装和更新应用程序和实用程序。

在我追求“万物自动化”的过程中,我一直坚持走在用代码来管理我的 Mac 笔记本电脑的路上。与其用鼠标或触控板手动管理我的应用程序和实用程序,我更喜欢使用软件包管理软件来安装、更新和删除不需要的软件。

这对 Mac 用户来说是个挑战。Mac 的操作系统 macOS 始终落后于 Linux 的一个地方就是在包管理方面。Mac 用户没有默认的软件包管理器,而 Linux 用户则有很多选择 —— 从熟悉的 yumapt 到现代的 Flatpak。但 Mac 呢?

这就是 Homebrew 的作用。Homebrew(自酿)填补了 MacOS 事实上的软件包管理器的空白(它也是 Linux 上的又一个可选的包管理器)。它为任何熟悉命令行的人提供了令人难以置信的流畅而直接的体验,如果你是新手,它是学习命令行的好方法。

(LCTT 译注:Homebrew 系统中采用了大量针对自酿啤酒相关的比喻,大家在使用过程中会发现这些有趣的形容。)

如果你在 Mac 上还没有 Homebrew,你可以这样来安装:

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

该命令将执行 Homebrew 团队提供的安装程序脚本。如果你喜欢谨慎一点,可以 curl 下来这个文件,审核后再手动运行。

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

使用“酿造”来管理你的命令行实用程序

Homebrew 号称它“可以安装苹果(或你的 Linux 系统)默认没有安装的必需之物”。安装是通过 brew(酿造)命令进行的,它使我们能够访问成千上万的命令行实用程序,但不是更复杂的应用程序。

对于我们这些搞技术的人来说,符合“必需之物”类别的实用工具包括显示目录结构的方便的 tree 命令和我用来 管理多个 Python 版本pyenv

你可以用 search 子命令看到 Homebrew 中所有的“ 秘方 formula ”,我用 wc 命令显示有多少个“秘方”。

# -l 统计行数
$ brew search | wc -l
    5013

有 5000 多个“秘方”,这是一个不可思议的软件数量。所以,在搜索那个庞大的清单之前,最好先对自己想要的东西有个概念。值得庆幸的是,浏览起来很方便。“秘方”被编入并集中存储到核心库中,核心库按操作系统划分(Mac 在 Homebrew Core,Linux 在 Linux Core)。它们也可以通过 Homebrew API 和网站列出。

口碑是另一个寻找实用工具的好方法。考虑到这一点,如果你正在寻找灵感,这里有一些我的最爱:

  • pyenvrbenvnodenv 分别用于管理 Python、Ruby 和 Node.js 的版本
  • imagemagick 用于可脚本化的图像编辑
  • pandoc 用于可脚本化的文件转换(我经常从 .docx 切换到 .md 或 .html)
  • hub 为 GitHub 用户提供了更好的 Git 体验
  • tldr 提供了解如何使用命令行工具的例子

举个例子,看看 tldr 页面,这是一个用户友好的替代方式,可以滚动浏览应用程序的手册页。你可以通过再次运行 search 来确认它是否可用:

$ brew search tldr
==> Formulae
tldr ✔

成功了!这个对勾让你知道它是可用的。现在你可以安装它了:

$ brew install tldr
==> Downloading https://homebrew.bintray.com/bottles/tldr-1.3.0_2.catalina.bottle.tar.gz
Already downloaded: /Users/mbbroberg/Library/Caches/Homebrew/downloads/901bc14594a9283e9ab20aec942dc5a9a2befb7e96e1b0fcccb4e3257918813c--tldr-1.3.0_2.catalina.bottle.tar.gz
==> Installing tldr
==> Pouring tldr-1.3.0_2.catalina.bottle.tar.gz
?  /usr/local/Cellar/tldr/1.3.0_2: 6 files, 35.5KB

值得庆幸的是,Homebrew 预先构建了二进制文件,所以你不必在本地机器上从源代码构建。这样就节省了很多时间,并免除了 CPU 风扇的噪音。我对 Homebrew 赞赏的另一件事是,你可以在不完全了解其含义的情况下欣赏此功能。

但如果你喜欢,看看复杂的东西也是很有趣的。对 tldr 运行 info 子命令,你可以看到所有的依赖管理、源代码,甚至公共分析。

$ brew info tldr
tldr: stable 1.3.0 (bottled), HEAD
Simplified and community-driven man pages
https://tldr.sh/
Conflicts with:
  tealdeer (because both install `tldr` binaries)
/usr/local/Cellar/tldr/1.3.0_2 (6 files, 35.5KB) *
  Poured from bottle on 2020-05-20 at 15:12:12
From: https://github.com/Homebrew/homebrew-core/blob/master/Formula/tldr.rb
==> Dependencies
Build: pkg-config ✔
Required: libzip ✔
==> Options
--HEAD
        Install HEAD version
==> Analytics
install: 2,811 (30 days), 7,875 (90 days), 27,105 (365 days)
install-on-request: 2,806 (30 days), 7,860 (90 days), 27,080 (365 days)
build-error: 0 (30 days)

最后,和其他优秀的软件包管理器一样,Homebrew 的 brew uninstall 子命令可用于快速清理和删除未使用的实用程序。

用“酒桶”管理你的应用程序

命令行实用程序是一匹孤狼,但完整的应用程序呢?Homebrew 保持了其标准命令的简单性,只通过其默认的 brew 命令行界面安装单文件应用。而应用程序不符合这种结构。它们的目录层次比较复杂,比单一的二进制要复杂得多。

幸运的是,Mac 上的 Homebrew 包含了一个名为 cask(酒桶)的子命令,用于处理更复杂的多目录结构。特别好的是,cask 使用了与标准 brew 命令类似的命令结构,所以你可以使用类似的 searchinstallinfo 子命令:

brew search --cask | wc -l
    4772

哇,有近 5000 个应用程序,在 Homebrew 的网站上浏览更方便。

我将用我新喜欢的一款应用来引导你完成 caskMeld(我在 Opensource.com 上读到的)。这是一个功能丰富的编辑器,可以帮助管理合并冲突。在它的网站上有下载的链接,我可以运行安装程序,并将其拖放到我的应用程序文件夹中。但我不想再这样做了,我用的是 Homebrew。

首先,我可以通过稍微不同的语法确认它可以使用:

$ brew search --casks meld
==> Casks
meld

然后我使用 cask 子命令来安装它:

$ brew cask install meld
==> Downloading https://github.com/yousseb/meld/releases/download/osx-19/meldmerge.dmg
==> Downloading from https://github-production-release-asset-2e65be.s3.amazonaws.com/28624006/66cb25
######################################################################## 100.0%
==> Verifying SHA-256 checksum for Cask 'meld'.
==> Installing Cask meld
==> Moving App 'Meld.app' to '/Applications/Meld.app'.
==> Linking Binary 'meld.wrapper.sh' to '/usr/local/bin/meld'.
?  meld was successfully installed!

Homebrew 不仅安装了应用程序,而且还在我当前的路径 /usr/local/bin/ 下提供了它。现在,我可以从命令行运行 meld 或从应用程序文件夹中启动应用程序。

更新一切的“酿造升级”

我一直使用软件包管理器的主要原因是,我可以不断升级我的软件,以避免已知的安全漏洞,并确保我总是有最新的功能。如果我手工安装所有的东西,我必须关注每一个工具和应用程序,以了解它是否有自动更新程序,如果没有,就得自己拉回最新的版本。

升级功能是优秀的软件包管理的闪光点。由于我没有什么特殊的版本要求,所以我只需要运行一个命令就可以顺利更新一切:

$ brew upgrade
==> Upgrading 6 outdated packages:
helm 3.2.1 -> 3.2.2
[email protected] 3.8.2_4 -> 3.8.3
ipython 7.14.0 -> 7.15.0
go 1.14.2_1 -> 1.14.3
libzip 1.6.1 -> 1.6.1_1
sqlite 3.31.1 -> 3.32.1

如果你有更复杂的需求,或者想在安装升级前关注一下升级情况,有很多功能标志可供选择。例如,-n 提供了一个 “模拟运行”,列出了可用的升级,而不会进行安装。你也可以 “” 住应用程序版本来防止它升级。

备份你的安装

当该工具允许你像其它点文件的版本控制方案一样备份你的安装环境时,命令行实用程序和应用程序的管理就跳到了一个全新的水平。Homebrew 就有这样的功能,可以在 dump 子命令下使用。它会生成一个 Brewfile,这是一个可重复使用的当前所有安装的工具的列表。要从你的安装的环境中生成一个,进入你的合适的文件夹并运行:

$ cd ~/Development/dotfiles # 这是我的点文件的文件夹
$ brew bundle dump

当我换了机器,想用 Homebrew 安装相同的应用程序时,我就会进入装有 Brewfile 的文件夹并运行。

$ brew bundle

它将在我的新机器上安装所有列出的“秘方”和“酒桶”。

用 Homebrew 进行软件包管理

Homebrew 是我常用的命令行工具和应用程序的管理器。它可以让我保持有条理和及时更新,它的设计在易用性和功能深度之间取得了美丽的平衡。Homebrew 将软件包管理的细节最小化到只需要你知道的程度,大多数用户都会从中受益。

如果你对 Linux 软件包管理器已经驾轻就熟,你可能会认为 Homebrew 太简单了,但不要误以为 Homebrew 的易用性是功能的缺乏。稍微深入一点看,就会发现很多高级选项,远远超出了我在这里向你展示的范围。将 -h 添加到任何 brew 子命令中,会显示可用来升级、删除、故障排除,甚至使用模板贡献新 “秘方” 的丰富功能。

总的来说,Homebrew 可以让一个重度命令行的 Mac 用户变得很开心。此外,它是开源的,所以如果你愿意,你可以贡献代码。尝试一下它,让我知道你的想法,在下面留下评论。


via: https://opensource.com/article/20/6/homebrew-mac

作者:Matthew Broberg 选题:lujun9972 译者:wxy 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

我日常工作中使用的是OS X。我能容忍它很大程度上是因为它的终端。如果我不能在黑色背景绿色文字的终端下工作,我想我会疯了。不幸的是,OS X 没有我需要的全部命令行工具。Homebrew的到来拯救了我。

Homebrew扮演了OS X中所缺乏的包管理器的角色。命令的使用很像apt-get,它能够安装无数的应用。一个最好的例子是wget。我很惊讶OS X中没有包含wget,但是homebrew中有,很简单就安装上了。

最棒的是homebrew在/usr/local文件夹下安装软件。你不必担心homebrew会破坏你的系统,因为它不会访问/usr/local之外的其他文件。OSX系统更新不会覆盖你的程序,并且/usr/local/bin已经在PATH中,使用homebrew安装的程序可以直接工作。

homebrew使用ruby管理它的包和功能,但是使用它不需要任何编程知识。并且安装过程只需要在命令行中复制粘贴就好了。如果你使用的是OS X,但是你希望像在Linux中那样方便地安装,就试一试homrbrew吧:http://brew.sh


via: http://www.linuxjournal.com/content/non-linux-foss-homebrew

作者:Shawn Powers 译者:geekpi 校对:wxy

本文由 LCTT 原创翻译,Linux中国 荣誉推出