无论你是想更舒适地从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的系统有dnf和yum,Flatpak和AppImage等项目在这两个系统上运行顺利。我花了很多时间试验这些技术,我不得不说,它们各有长处。那么,为什么我坚持使用Homebrew?首先,我对它非常熟悉。在寻找我过去使用的专有软件的开源替代品的过程中,我学到了很多关于如何使用它的知识,并且保持熟悉的东西,比如Homebrew,让我可以一次专注于学习一件事时间而不是被不同系统之间的差异搞砸了。此外,我没有看到像Homebrew这样用户友好的包管理器。与默认帮助命令一样,命令按顺序排列:$brew-h用法示例:brewsearch[TEXT|/REGEX/]brewinfo[FORMULA...]brewinstallFORMULA...brewupdatebrewupgrade[FORMULA...]brewuninstallFORMULA...brewlist[FORMULA...]故障排除:brewconfigbrewdoctorbrewinstall--verbose--debugFORMULA贡献:brewcreate[URL[--no-fetch]]brewedit[FORMULA...]进一步帮助:brewcommandsbrewhelp[COMMAND]manbrew简短的输出可能会被误解为它的功能有限,但是如果你简单地看每个子命令,有很多丰富的特征。虽然上面的列表只有短短的23行,但对于高级用户来说,仅子命令install就包含了整整79行的帮助信息:$brew--help|wc-l23$brew安装--help|wc-l79它可以选择忽略或安装依赖项,可以选择从源代码编译以及使用什么编译器编译某个上游Git提交,也可以选择应用程序的官方“罐装”版本。总而言之,Homebrew适合新手和老手。在Linux上开始使用Homebrew如果你想尝试Homebrew,你可以在Mac或Linux上用这个单行安装它:$/bin/bash-c"$(curl-fsSLhttps://raw.githubusercontent.com/Homebrew/install/master/install.sh)"这个命令会立即开始安装Homebrew。如果比较谨慎,可以使用curl将文件下载到本地,检查后运行。$curl-fsSLhttps://raw.githubusercontent.com/Homebrew/install/master/install.sh--outputhomebrew_installer.sh$morehomebrew_installer.sh#审核脚本直到你觉得没问题$bashhomebrew_installer.sh安装Linux的步骤还包括如何配置点文件,Debian系统是~/.profile,Fedora系统是~/.bash_profile。$test-d/home/linuxbrew/.linuxbrew&&eval$(/home/linuxbrew/.linuxbrew/bin/brewshellenv)$test-r~/.bash_profile&&echo"eval\$($(brew--prefix)/bin/brewshellenv)">>~/.bash_profile$echo"eval\$($(brew--prefix)/bin/brewshellenv)">>~/.profile为了确认已安装,Homebrew团队提供了一个用于测试的空hello“配方”:$brewinstallhello==>下载https://linuxbrew.bintray.com/bottles/hello-2.10.x86_64_linux.bottle.tar.gz########################################################################100.0%==>浇注hello-2.10.x86_64_linux.bottle.tar.gz🍺/home/linuxbrew/.linuxbrew/Cellar/hello/2.10:52个文件,595.6KB似乎安装没有问题,让我尝试更多操作。命令行工具BrewHomebrew自称是一个默认情况下只“安装你需要的[Linux]没有的东西”的应用程序。您可以使用brew命令安装任何与Homebrew一起打包的命令行软件。这些包的定义文件称为“公式”,它们通过“瓶子”编译和共享。在Homebrew世界中,有很多“啤酒明智”的术语,但这个包管理器的主要目的是让软件易于使用。你有什么样的软件?对于像我这样的技术人员来说最方便的事情(既然你正在阅读这篇文章,你可能就是这样)。例如,显示目录结构的方便的树命令,或我用来在Mac上管理不同版本的Python的pyenv。可以使用search命令查看所有可以安装的“秘方”,添加wc命令查看总共有多少:#-l选项统计行数$brewsearch|wc-l5087到目前为止,总共有5000多个“食谱”,涵盖了很多软件。注意:并非所有“秘方”都适用于Linux。brewsearch--help输出中有一个部分提到您可以按软件运行的操作系统过滤软件。它在浏览器中打开每个操作系统的软件存储库。我正在运行Fedora,所以我会试一试:$brewsearch--fedoratree浏览器打开urlhttps://apps.fedoraproject.org/packages/s/tree并向我显示所有Fedora可用选项.您还可以浏览其他方法。“秘方”集中组织成按操作系统划分的核心存储库(HomebrewCore中的Mac,LinuxCore中的Linux)。它也可以通过HomebrewAPI显示在网络上。即使有这些选项,我仍然通过其他用户的推荐找到了许多新工具。我列出了一些我最喜欢的工具来获得一些灵感:pyenv、rbenv和nodenv用于管理(分别)Python、Ruby和Node.js版本imagemagick用于脚本图像编辑pandoc用于脚本转换文档格式(我通常将.docx文件转换为.md或.html)hub为GitHub用户提供更好的Git体验tldr显示使用命令工具的示例从应用程序的手册页开始,它更友好。使用搜索命令确认您可以安装:$brewsearchtldr==>Formulaetldr?太棒了!打勾表示可以安装。所以继续:$brewinstalltldr==>下载https://linuxbrew.bintray.com/bottles/tldr-1.3.0_2.x86_64_linux.bottle.1.tar.gz##########################################################################100.0%==>浇注tldr-1.3.0_2.x86_64_linux.bottle.1.tar.gz🍺/home/linuxbrew/.linuxbrew/Cellar/tldr/1.3.0_2:6个文件,63.2KBHomebrew提供已编译的二进制文件,因此您不必从本地计算机上的源代码进行编译。这样可以节省很多时间,也不必去听CPU风扇的噪音。我对Homebrew的另一点欣赏是,即使您不完全理解每个选项的含义也没关系。如果你想自己编译,你可以在brewinstall命令后加上-s或--build-from-source标志,这样你就可以从源代码编译“配方”(即使已经有“bottle”存在)。同样,软件的潜在复杂性也很有趣。使用信息查看tldr软件的依赖管理,其中“秘方”的源代码驻留在磁盘上,甚至查看公共分析。$brewinfotldrtldr:stable1.3.0(bottled),HEADSimplifiedandcommunity-drivenmanpageshttps://tldr.sh/Conflictswith:tealdeer(becausebothinstall`tldr`binaries)/home/linuxbrew/.linuxbrew/Cellar/tldr/1.3.0_2(6个文件,63.2KB)*于2020-06-0815:56:15从瓶子中倒出来自:https://github.com/Homebrew/linuxbrew-core/blob/master/Formula/tldr.rb==>DependenciesBuild:pkg-config?Required:libzip?,curl?==>Options--HEADInstallHEADversion==>Analyticsinstall:197(30天),647(90天),1,546(365天))按要求安装:197(30天)、646(90天)、1,546(365天)构建错误:0(30天)从Mac到Linux在macOS、Homebrew的cask(“cask”)上有点不足子命令允许用户使用命令行安装和管理整个应用软件。不幸的是,cask还没有在任何Linux发行版上可用。我在安装开源工具时发现了这个:$brewcaskinstalltuskError:InstallingcasksissupportedonlyonmacOS我在论坛上询问并很快得到了其他用户的反馈。综上所述,解决方案如下:ForkHomebrew项目,构建这个功能,然后向其他人展示它的价值为软件写一个“秘方”,然后从源代码编译它创建一个第三方仓库软件最后一个是我最感兴趣的。Homebrew通过创建和维护“taps”(另一个受啤酒影响的术语)来管理第三方存储库。随着您对系统越来越熟悉并想加入生态系统,Faucet值得关注。备份您的Homebrew安装历史记录我最喜欢的Homebrew功能之一是您可以备份您的安装历史记录,就像任何其他备份点文件的版本控制工具一样。为了实现这一点,Homebrew提供了bundle(“bundle”)子命令,它可以控制一个名为dump(“dump”)的子命令来生成一个Brewfile。此文件包含您当前安装的所有工具的列表,可以重复使用。进入你要使用的目录,运行命令,它会根据你安装的软件生成Brewfile:$cd~/Development/dotfiles#这是我的dotfile文件夹$brewbundledump$lsBrewfileBrewfile当我换一台机器时,我想安装相同的软件,进入包含Brewfile的文件夹并重新安装:$lsBrewfileBrewfile$brewbundle它将安装我的新机器上列出的所有“配方”。同时管理Mac和Linux上的BrewfileBrewfile很适合用来备份你当前的安装记录,但是如果有些在Mac上运行的软件在Linux上运行不了怎么办?或者恰恰相反?我发现在Mac和Linux上,如果软件不能在当前操作系统上运行,Homebrew会优雅地忽略该行。如果遇到不兼容的请求(比如在Linux上使用brew安装“winecask”时),它会选择跳过并继续安装过程:$brewbundle--file=Brewfile.exampleSkippingcasklicecap(onLinux)Skippingcaskmacdown(在Linux上)安装fishHomebrewBundle完成!1Brewfile依赖项现已安装。为了保持配置文件简单,我在两个操作系统上都使用同一个Brewfile,因为它只安装与操作系统相关的版本,所以我一直没有遇到问题。使用Homebrew管理包Homebrew已经成为我必备的命令行工具,自从熟悉之后,在Linux上的体验一直是一种享受。Homebrew使我的工具井井有条并保持最新状态,而且我已经逐渐意识到它所达到的可用性和功能之间的平衡。我更愿意将包管理的细节保持在用户需要知道的最低限度,大多数人都会从中受益。如果您已经熟悉Linux包管理器,Homebrew对您来说可能看起来很基础,但是深入挖掘一下,您会发现它的高级选项远远超出本文所涵盖的范围。对于Linux用户,他们有很多包管理器可供选择。如果您使用的是MacOS,Homebrew会让您有宾至如归的感觉。