本文共 8793 字,大约阅读时间需要 29 分钟。
homebrew mac
项目的开始是作为Mac的非官方Linux风格的软件包管理器。 它的用户很快就因其友好的界面和有用的提示而爱上了它,而且,在命运似乎有些奇怪的情况下,它已移植到Linux。
最初,有两个针对macOS和Linux的独立项目(Homebrew和Linuxbrew),但是现在Homebrew的核心管理两个操作系统。 因为我一直在的旅途中,所以我一直在研究我最喜欢的macOS开源应用程序在Linux上的性能,并且我很高兴发现Homebrew对Linux的支持确实发光。
长期使用Linux的用户对Homebrew的一个合理的第一React是:“为什么不使用……”,下一个词是他们的首选Linux版本的软件包管理器。 基于Debian的系统已经具有apt
,而Fedora系统已经具有dnf
和yum
,并且Flatpak和AppImage之类的项目通过在两者上顺利运行来填补空白。 我在所有这些技术上花费了大量的时间,我不得不说每个技术都有其强大的功能。
那么,为什么我呢? 首先,它对我来说是难以置信的。 在过渡到过去的专有工具的更多开源替代方案时,我已经学到了很多东西,并且保持熟悉的东西(例如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,可以使用一个很棒的单行脚本在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 # review the script until you feel comfortable $ 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中打包的任何命令行实用程序。 这些程序包定义称为“公式”,它们通过“瓶”进行编译和共享。 在Homebrew领域中,还有许多其他面向啤酒的术语,但是软件包管理器的主要收获是使软件易于访问。
什么样的软件? 考虑一下适合像我这样的书呆子使用的东西(而且,由于您正在阅读本文,所以也许也是)。 例如,显示目录结构或pyenv
的方便的tree
命令,我用来 。
您可以使用search
命令查看所有可用的公式,并添加wc
命令以显示可用的公式:
# -l counts the number of lines $ brew search | wc -l 5087
迄今为止,有超过5,000个公式,这是数量惊人的软件。 需要注意的是,并不是每个公式都可以在Linux上运行。 brew search --help
输出中有一部分,显示用于根据其运行的操作系统筛选软件的标志。 它将每个操作系统的存储库列表启动到浏览器。 我正在运行Fedora,因此可以尝试一下:
$ brew search --fedora tree
浏览器将加载https://apps.fedoraproject.org/packages/s/tree
,其中显示了可用于Fedora的选项。 还有其他浏览方式。 公式被整理并集中到核心存储库中,这些存储库由操作系统( Mac和中的Linux )划分。 它们也可以通过Homebrew API获得,并 。
即使有所有这些选项,我仍然可以通过其他用户的推荐找到大多数新工具。 如果您正在寻找灵感,这是我的一些最爱:
pyenv
, rbenv
和nodenv
分别管理Python,Ruby和Node.js版本 imagemagick
用于脚本化图像编辑 pandoc
用于可脚本化的文档转换(我经常从.docx切换到.md或.html) hub
tldr
有关如何使用命令行实用程序的示例 要浏览Homebrew,请看一下 ,它是滚动应用程序手册页的一种用户友好选择。 通过运行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
标志,从源代码编译公式(即使存在瓶子)。
同样,引擎盖下的复杂性可能很有趣。 在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 ) / 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 )
在macOS上,Homebrew cask
子命令为用户提供了使用相同的强大命令行实用程序安装和管理整个应用程序的方法。 不幸的是, cask
尚未在任何Linux发行版上运行。 我在尝试安装开源工具时发现了这一点:
$ brew cask install tusk Error: Installing casks is supported only on macOS
我询问了并从其他用户那里得到了一些快速反馈。 简而言之,选项是:
最后一个对我来说最有趣。 Homebrew通过 (另一个受啤酒影响的术语)来管理第三方存储库。 当您更加熟悉系统并希望添加到生态系统中时,水龙头就值得探索。
我最喜欢的Homebrew功能之一是如何像任何其他一样备份安装。 对于此过程,Homebrew提供了bundle
子命令,该子命令包含可生成Brewfile的dump
子命令。 该文件是当前所有已安装工具的可重用列表。 要从安装中生成Brewfile,请进入要使用的任何文件夹并运行:
$ cd ~ / Development / dotfiles # This is my dotfile folder $ brew bundle dump $ ls Brewfile Brewfile
当我更换机器并想在上面设置相同的应用程序时,我进入带有Brewfile的文件夹,并使用以下命令重新安装它们:
$ ls Brewfile Brewfile $ brew bundle
它将在我的新计算机上安装所有列出的公式。
Brewfile是备份现有安装的好方法,但是如果Mac上的某些软件不能在Linux上运行,反之亦然呢? 我发现,无论是Mac还是Linux,Homebrew都会优雅地忽略在给定操作系统上不起作用的行。 当遇到不兼容的请求(例如要求brew在Linux上安装木桶)时,它会跳过它们并继续进行:
$ 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一直是我担任命令行实用程序的经理,而对它的熟悉使我的Linux使用体验更加愉悦。 Homebrew使我保持井井有条,并保持最新状态,我继续欣赏它在易用性和功能深度之间的平衡。 我更喜欢将软件包管理的详细信息保留在用户需要了解的最少信息量中,大多数人将从中受益。 如果您已经对Linux软件包管理器感到满意,那么Homebrew可能会变得很简单,但是更深入地了解就会发现它的高级选项远远超出了本文的范围。
Linux用户有很多软件包管理选项。 如果您来自macOS,那么Homebrew会像家一样。
翻译自:
homebrew mac
转载地址:http://kpdzd.baihongyu.com/