介绍

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

    存在的问题: 如标题,下图所示,启动tomcat时黑窗口中中文乱码,影响查看程序打印信息 解决方案: tomcat安装/解压目录中,conf 文件夹下 logging.properties 文件中,代 ...

  2. 基于GMC/umat的复合材料宏细观渐近损伤分析(一)

    近期在开展基于GMC/umat的复合材料宏细观渐近损伤分析,一些技术细节分享如下: 1.理论基础 针对连续纤维增强复合材料,可以通过离散化获得如下的模型: (a)(b)(c) 图1 连续纤维增强复合材 ...

  3. 爆破linux密码 $6$3uwqC9JI$d9iPRmTDAoXs/IbsplxS3iyeErHqw7fUycacXNHyZk1UCSwFEydl515/zXN7OEwHnyUaqYcNG

    #!/usr/bin/env python # -*- coding:UTF-8 -*- import crypt import sys # 哈希密码的前两位就是盐的前两位,这里我们假设盐只有两位. ...

  4. 理解TCP/IP协议栈之HTTP2.0

    1 前言 前面写了10多篇关于Redis底层实现.工程架构.实际应用的文章,感兴趣的读者可以进行阅读,如有问题欢迎交流: 1.Redis面试热点之底层实现篇-12.Redis面试热点之底层实现篇-23 ...

  5. 图解kubernetes调度器SchedulerCache核心源码实现

    SchedulerCache是kubernetes scheduler中负责本地数据缓存的核心数据结构, 其实现了Cache接口,负责存储从apiserver获取的数据,提供给Scheduler调度器 ...

  6. python命名空间(namespace)

    命名空间: 每一个作用域变量存储的位置,或者解释为 存储作用域中变量的字典. 作用: 获取想查看某个作用域中的变量名.变量值. 使用方法: locals()  #当前命名空间 1. 效果图: 2. 代 ...

  7. HTML中使用Vue+Dhtmlxgantt制作任务进度图

    HTML中使用Vue+Dhtmlxgantt制作任务进度图 Dhtmlxgantt官网: https://dhtmlx.com/docs/products/dhtmlxGantt/ 参考文章 甘特图配 ...

  8. 最短路变形题目 HDU多校7

    Mr.Quin love fishes so much and Mr.Quin’s city has a nautical system,consisiting of N ports and M sh ...

  9. Nginx作为web静态资源服务器——防盗链

    ​ 基于http_refer防盗链配置模块 Syntax:valid_referers none | blocked | server_names | string ...; Default:—— C ...

  10. 一次jvm调优过程

    jvm调优实战 前端时间把公司的一个分布式定时调度的系统弄上了容器云,部署在kubernetes,在容器运行的动不动就出现问题,特别容易jvm溢出,导致程序不可用,终端无法进入,日志一直在刷错误,ku ...