介绍

包管理工具几乎已经成为现代操作系统或者开发平台不可或缺的工具软件,无论做开发,或是管理服务器,都免不了用到一些第三方依赖包。包管理工具的基本功能就是提供一个集中的平台,可以在这里找到大部分流行的组件,而不用费力的到每个软件自己的主页去下载安装。只需要输入简单的命令,就可以直接安装,并且包管理工具还会帮助用户管理所有这些包的版本,以及它们之间的依赖关系。包管理工具可以让安装和更新程序变得更方便,目前在 MacOS 系统中受欢迎的包管理工具是 Homebrew

Homebrew(可直译为家酿啤酒) 是一款 MacOS 平台下的软件包管理工具,是一个开源的 Ruby 脚本,最早的创建者是马克斯·霍威尔(max howell)。该工具拥有安装、卸载、更新、查看、搜索等很多实用的功能。简单的一条指令,就可以实现包管理,而不用关心各种依赖和文件路径的情况,十分方便快捷

优势

1、通过 Homebrew 下载安装的软件全部来自对应的软件官网,无需担心下载源的安全问题

2、依存于系统既有的库,减少了空间占用和冗余

3、使用 Git 进行管理和更新

4、易于定制

5、安装软件、软件包、软件都在一个目录/usr/local/Cellar下(cellar 是酒窖的意思),方便管理

安装

【xcode】

如果没有安装 Xcode.app,可能需要先下载并安装 Xcode。但实际上并不需要,只需要安装完成 Xcode 命令行工具(Xcode Command Line Tools )即可

xcode-select —install

然后,执行下面代码就可以安装 Homebrew 了,这是一个 ruby 脚本,执行这个安装脚本就可以完成 Homebrew 所有安装操作

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

将 /usr/local/bin 添加至 $PATH 环境变量中,要注意的是,.bash_profile中的内容会和其他shell共享,.bashrc中的内容仅仅bash会加载

echo 'export PATH="/usr/local/bin:$PATH"' >> ~/.bash_profile

运行以下命令,确保 Homebrew 运行正常

brew doctor

使用

brew install <package_name> # 安装包
brew uninstall <package_name> # 卸载包
brew upgrade <package_name> # 更新包
brew search <package_name> # 搜索包
brew update # 更新所有安装过的包(包括homebrew)
brew list --versions # 列出所有安装过的包(包括版本号)

cask

Homebrew 是下载源码解压,然后 ./configure && make install ,同时会包含相关依赖库,并自动配置好各种环境变量

Homebrew Cask 是在 Homebrew 基础上的一个增强工具,用来安装 Mac 上的 GUI 程序应用包(.dmg/.pkg)。它是下载程序包解压到统一的目录中(/opt/homebrew-cask/Caskroom),省掉了自己去下载、解压、拖拽(安装)等步骤,然后再软链到~/Applications/目录下, 非常方便,而且还包含很多在 AppStore 里没有的常用软件

所以,Homebrew 一般管理第三方库和命令行工具,而 Homebrew Cask 可以看作是 APP Store 的补充

使用 brew search 命令搜索 google-chrome 时

$ brew search google-chrome
==> Casks
google-chrome
homebrew/cask-versions/google-chrome-beta
homebrew/cask-versions/google-chrome-canary
homebrew/cask-versions/google-chrome-dev

表示 google-chrome 只能用 brew cask 命令来安装

cask 的常用命令如下,cask 只能更新所有包,而不能更新单个包

brew cask install <package_name> # 安装程序包
brew cask uninstall <package_name> # 卸载程序包
brew cask list # 列出安装过的程序包
brew cask upgrade # 更新所有安装过的包(包括homebrew)

两件逸事

一、算法面试失败

Homebrew 的创始人 Max Howell,在 2015 年初曾去 Google 面试,因为 “白板” 写算法题「翻转二叉树」失败,愤而发 twitter 讽刺

Google: 90% of our engineers use the software you wrote (Homebrew), but you can't invert a binary tree on a whiteboard so fuck off.

二、移除 MongoDB

MongoDB 在 2018 年 10 月宣布将开源 License 从 GNU AGPLv3 切换到 Server Side Public License(SSPL),以此回应 AWS 等云厂商将 MongoDB 以服务的形式提供给用户而没有回馈社区的行为。SSPL 明确要求托管 MongoDB 实例的云厂商要么获取商业许可证要么向社区开放其服务源码。

但是开源社区对此似乎有不少反对声音,许多人认为 SSPL 是具有针对性的,对特定类别的用户具有严重歧视性,这违反了开源的真谛,所以 Fedora 认定 SSPL 不是一个自由软件许可,红帽和 Debian 也宣布从发行版中删除 MongoDB

Homebrew core 列表目前已经将 MongoDB 移除,不再为其提供支持

所以,使用 brew doctor 命令时,会有一个如下的 warning

Warning: Some installed formulae are not readable:
mongodb: unknown version :mountain_lion

简明 homebrew的更多相关文章

  1. Mac 下使用homebrew 安装node后全局安装找不到问题

    Homebrew 是mac上的包管理工具,其官网: http://brew.sh/ 在使用brew安装node之后安装一些常见工具比如 gulp npm install -g gulp 提示安装成功之 ...

  2. MAC下Homebrew的安装

    1.Homebrew是啥东东? Homebrew的官方网站http://brew.sh/index.html上有这么一句“Homebrew installs the stuffyouneed that ...

  3. mac包管理器Homebrew安装命令

    ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

  4. Mac下的类似apt-get的包管理工具Homebrew(笔记)

    对于一个习惯了在 Ubuntu 的终端上通过 apt-get 来安装工具软件的我来说,也希望在Mac上找到类似的工具,能很方便的一条命令就能安装所需的软件,而不用手工的去查找下载编译,或者是折腾安装所 ...

  5. OS X 下不通过Homebrew安装ASP.NET 5开发环境

    在 ASP.NET 的 Home repo 里,推荐使用 Homebrew 安装开发环境,不过我的电脑里已经有 ports 了,这应该是当年用 rvm 安装 Ruby 时悄悄地装上的吧.不管怎样,作为 ...

  6. mac homebrew的用法

    与 MacPorts 类似,OS X 下还有款包管理工具为 Homebrew,安装方法也很简单. ruby -e "$(curl -fsSL https://raw.github.com/H ...

  7. homebrew update 出现Failure while executing: git pull --quiet origin refs/heads/master:refs/remotes/origin/master解决方案

    具体可以参考https://github.com/Homebrew/homebrew/issues/21002 cd /usr/local git status git reset --hard or ...

  8. 循序渐进做项目系列(5):制作安装包,谁人都可以!——VS制作安装包简明教程

    一开始让我做安装包的时候,其实我是拒绝的.因为我根本就不会做安装包.查了资料之后,我很懵,很晕,很乱,因为不清晰,不简明,不直白.然而经过一番彷徨的挣扎,我终于发现:制作安装包,谁人都可以!故挥狼毫, ...

  9. 2013 duilib入门简明教程 -- 第一个程序 Hello World(3)

    小伙伴们有点迫不及待了么,来看一看Hello World吧: 新建一个空的win32项目,新建一个main.cpp文件,将以下代码复制进去: #include <windows.h> #i ...

随机推荐

  1. POJ3252 Round Numbers 题解 数位DP

    题目大意: 求区间 \([x,y]\) 范围内有多少数的二进制表示中的'0'的个数 \(\ge\) '1'的个数. 解题思路: 使用 数位DP 解决这个问题. 我们设状态 f[pos][num0][n ...

  2. 1063 计算谱半径 (20 分)C语言

    在数学中,矩阵的"谱半径"是指其特征值的模集合的上确界.换言之,对于给定的 n 个复数空间的特征值 { a1+b​1​​ i,⋯,a​n​​ +b​n​​ i },它们的模为实部与 ...

  3. 《带你装B,带你飞》pytest修仙之路3 - setup/teardown

    1. 简介 学过unittest的都知道里面用前置和后置setup和teardown非常好用,在每次用例开始前和结束后都去执行一次.当然还有更高级一点的setupClass和teardownClass ...

  4. notepad++中cmd运行中文乱码?

    notepad++中有中文内容时,cmd运行时中文显示乱码,如何处理? 设置-->首选项-->新建-->选择ANSI编码(注意现在的文件不会被转换,要重新把代码拷入修建的文件中才可以 ...

  5. 从零开始Go语言-GoLand(编译器)-Windows(平台)

    本文章适合那些想入门Go语言,却又不知道如何搭建自己的第一个HelloWorld的同学. 推荐几个Go语言相关学习网站: C语言中文网: http://c.biancheng.net/golang/ ...

  6. 导出 CVS

    function ExportStoreInfoAction() { set_time_limit(0); $table = "xd_store"; $res = [[...].. ...

  7. 【转】安卓开发经验分享:资源、UI、函数库、测试、构建一个都不能少

    本文由 ImportNew - 唐尤华 翻译自 gigavoice.如需转载本文,请先参见文章末尾处的转载要求. 除了高超的武艺,每位黑忍者还需要装备最好的武器.在软件开发的世界里,好的工具能让我们的 ...

  8. 原生js里的offset、client、scroll三大家族

    offset家族 自己的,用于获取元素自身尺寸 offsetWidth 和 offsetHeight 获取元素自身的宽度和高度,包括内容+边框+内边距 offsetLeft 和 offsetTop 距 ...

  9. JS 通过url地址栏获取html页面名称

    有的时候需要获取页面名称,为此我在这里封装了一个方. 一.分别根据传递不同的参数,获取到html页面的名称. 通过传递参数,获取到html页面的名称:参数params 以下是参数解释说明 (1)par ...

  10. Spring Boot2 系列教程 (十三) | 整合 MyBatis (XML 版)

    前言 如题,今天介绍 SpringBoot 与 Mybatis 的整合以及 Mybatis 的使用,之前介绍过了 SpringBoot 整合MyBatis 注解版的使用,上一篇介绍过 MyBatis ...