介绍

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

    IntelliJ IDEA的常用设置及快捷键 基本设置 打开设置:ctrl+alt+s 修改主题.字体.字号 快捷键设置 创建项目和模块 标记源码文件 标记资源文件 设置jdk版本号 配置Tomcat ...

  2. 通俗易懂理清mybatis中SqlSessionSql、SqlSessionTemplate、SessionFactory和SqlSessionFactoryBean之间的关系

    我潇洒的灰大狼又回来啦.今天送大家的一句话是: 保持耐心,永远年轻,永远热泪盈眶. 前言 先容我哭一会儿,呜呜呜~昨晚写了一半的文章,还没保存就盖上盖子准备回家,拔下电源准备把电脑塞进书包带回家完成时 ...

  3. Java 多线程与并发(六):AQS

    我们前面几张提到过,JUC 这个包里面的工具类的底层就是使用 CAS 和 volatile 来保证线程安全的,整个 JUC 包里面的类都是基于它们构建的.今天我们介绍一个非常重要的同步器,这个类是 J ...

  4. 使用内存映射文件MMF实现大数据量导出时的内存优化

    前言 导出功能几乎是所有应用系统必不可少功能,今天我们来谈一谈,如何使用内存映射文件MMF进行内存优化,本文重点介绍使用方法,相关原理可以参考文末的连接 实现 我们以单次导出一个excel举例(csv ...

  5. python的break、continue、pass

    break break可以用来立即退出循环语句(包括else)continue continue可以用来跳过当次循环注意:break和continue都是只对离他最近的循环起作用 pass pass是 ...

  6. angularjs路由菜单强制刷新

    在开发过程中遇到使用路由控制单页加载页面时,点击菜单页面不重新刷新的情况,angularjs认为路由没有变化,而不会去刷新页面,解决办法: angular.module('myApp').direct ...

  7. idea 忽略不需要提交的文件

    1.打开git bash界面,进入到某个项目的根目录,执行下面命令 touch .gitignore 此时,再该项目的根目录里,会创建.gitignore文本,打开该文本,编辑需要忽略的文件(编辑规则 ...

  8. Django设置 DEBUG=False后静态文件无法加载解决

    前段时间调试一直是在Debug=True先运行的,没有什么问题.今天关闭了Debug后,出现了一个问题.就是静态文件找不到了,「img.css.js」都提示404,无法准确的访问 static 静态文 ...

  9. Nginx配置文件模板

    主配置文件nginx.conf user nginx; #设置nginx服务的系统使用用户 worker_processes 1; #工作进程数(和cpu核心数保持一致) error_log /var ...

  10. unbuntu18.04安装启用splash

    官网:https://splash.readthedocs.io/en/stable/ 1.安装Docker https://www.cnblogs.com/wt7018/p/11880666.htm ...