簡明 homebrew

来源:https://www.cnblogs.com/xiaohuochai/archive/2020/02/14/12306284.html

[1]介紹 [2]優勢 [3]安裝 [4]使用 [5]cask [6]逸事 ...


homebrew

介紹

包管理工具幾乎已經成為現代操作系統或者開發平臺不可或缺的工具軟體,無論做開發,或是管理伺服器,都免不了用到一些第三方依賴包。包管理工具的基本功能就是提供一個集中的平臺,可以在這裡找到大部分流行的組件,而不用費力的到每個軟體自己的主頁去下載安裝。只需要輸入簡單的命令,就可以直接安裝,並且包管理工具還會幫助用戶管理所有這些包的版本,以及它們之間的依賴關係。包管理工具可以讓安裝和更新程式變得更方便,目前在 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

您的分享是我們最大的動力!

更多相關文章
  • 常見的color, font-family, background 等css屬性都能夠設置鏈接的樣式,a鏈接的特殊性在於能夠根據它們所處的狀態來設置它們的樣式。a標簽與人交互的4個狀態屬於偽類狀態切換,常見的鏈接四種狀態為:a:link - 普通的、未被訪問的鏈接a:visited - 用戶已訪問的... ...
  • CSS文本屬性可定義文本的外觀,這是毫無疑問的,其次css可以通過以下屬性改變文字的排版,比方說letter-spacing實現字元間距text-indent: 2em;完成首行縮進2字元word-spacing改變了文字的間距,direction改變文本從左至右的閱讀順序,white-space處... ...
  • 對象的遍歷 對象可以當做數組處理,使用for in var person={}; person.name="cyy"; person.age=25; person.infos=function(){ alert(this.name+" "+this.age); } for(var i in pers ...
  • 前次用 electron-packager 打包成功,這次改用 electron-builder 打包,然後根據項目中實際需要進行選擇使用。 第一步:全局安裝 electron-builder,便於系統通用 npm install -g electron-builder 或 cnpm install ...
  • CSS 字體屬性定義文本的字體系列、大小、加粗、風格(如斜體)和變形(如小型大寫字母)font-family控制字體,由於各個電腦系統安裝的字體不盡相同,但是基本裝有黑體、宋體與微軟雅黑這三款字體,通常這樣寫font-family:"黑體", "宋體","Microsoft YaHei" font-... ...
  • jQuery初學者筆記 一 Mirror王宇陽 by jQuery語法 jQuery語法是通過選取HTML元素,並對選取的元素進行操作 基礎語法: 所有jQuery語句用“$”符號開始 jQuery函數位於一個document ready函數中,我們需要在js中載入該函數文檔 選擇器語法: jQue ...
  • JavaScript中的基本數據類型 在JS中,有6種基本數據類型: 1. string 2. number 3. boolean 4. null 5. undefined 6. Symbol(ES6) 除去這六種基本數據類型以外,其他的所有變數數據類型都是Object。基本類型的操作在JS底層中是 ...
  • 一、Overview angular 入坑記錄的筆記第一篇,完成開發環境的搭建,以及如何通過 angular cli 來創建第一個 angular 應用。入坑一個多星期,通過學習官方文檔以及手摸手的按教程敲官方的快速上手項目,很像後端,嗯,完美的契合了我這種後端開發人員。 對應官方文檔地址: 搭建本 ...
一周排行
  • 最近由於疫情緊張,遂在家辦公,在領導的帶領下,學習了一下.Net Core MVC。 一,構建web應用 1.選擇c#-所有平臺-web 找到ASP.NET Core web應用程式 2.項目命名之後轉至如下界面:選擇Web應用程式(模型視圖控制器)。 Ok點擊創建,這個項目的基本框架就生成了。 二 ...
  • 本筆記摘抄自:https://www.cnblogs.com/PatrickLiu/p/7792973.html,記錄一下學習過程以備後續查用。 一、引言 今天我們要講結構型設計模式的第六個模式--享元模式,先從名字上來看,“享元”可以這樣理解--共用“單元”。單元是什麼呢?舉例說明:對於圖形而言就 ...
  • 本筆記摘抄自:https://www.cnblogs.com/PatrickLiu/p/7814004.html,記錄一下學習過程以備後續查用。 一、引言 今天我們要講結構型設計模式的第七個模式,也是結構型設計模式中的最後一個模式--代理模式。先從名字上來看,“代理”可以理解為“代替”,代替“主人” ...
  • 本筆記摘抄自:https://www.cnblogs.com/PatrickLiu/p/7837716.html,記錄一下學習過程以備後續查用。 一、引言 今天我們要講行為型設計模式的第一個模式--模板方法模式,先從名字上來看。“模板方法”理解為有一個方法的名字叫“模板方法”,也可以換個理解方法: ...
  • 本筆記摘抄自:https://www.cnblogs.com/PatrickLiu/p/7873322.html,記錄一下學習過程以備後續查用。 一、引言 今天我們要講行為型設計模式的第二個模式--命令模式,又稱為行動(Action)模式或交易(Transaction)模式,先從名字上來看。“命令模 ...
  • 前面幾章介紹了處理適量適中的圖形內容的最佳方法。通過使用幾何圖形、圖畫和路徑,可以降低2D圖形的開銷。即使正在使用複雜的具有分層效果的組合形狀和漸變畫刷,這種方法也仍然能夠正常得很好。 然而,這樣設計不適合需要渲染大量圖形元素的繪圖密集型應用程式。例如繪圖程式、演示粒子碰撞的物理模型程式或橫向卷軸形 ...
  • Dubbo的服務暴露是一個重要的特性,瞭解其機制很重要。之前有很多人寫了有關的源代碼分析,在本文中不再重新分析。官方文檔中的一篇寫的就很好,本文主要是有關內容進行補充與總結。 傳送門: "服務導出" 為什麼要服務暴露 服務暴露分為遠程暴露和本地暴露。在遠程服務暴露中會將服務信息上傳到註冊中心。這時客 ...
  • 在上一篇文章 Dubbo之服務暴露分析 中介紹了當遠程暴露時,如果有註冊中心,需要在服務暴露後再將服務註冊到註冊中心。該篇將介紹該功能的有關步驟。 註冊的起點 在 方法包含了服務導出,註冊,以及數據訂閱等邏輯。其中服務註冊先調用 方法。 可以看出,服務註冊主要包括兩部分, 獲取註冊中心實例 和 向註 ...
  • 從今天開始,將會逐步介紹關於DUbbo的有關知識。首先先簡單介紹一下DUbbo的整體概述。 概述 Dubbo是SOA(面向服務架構)服務治理方案的核心框架。用於分散式調用,其重點在於分散式的治理。 簡單的來說,可以把它分為四個角色。服務提供方(Provider)、服務消費方(Consumer)、註冊 ...
  • [TOC] python是數據分析的主要工具,它包含的數據結構和數據處理工具的設計讓python在數據分析領域變得十分快捷。它以NumPy為基礎,並對於需要類似 for迴圈 的大量數據處理的問題有非常快捷的數組處理函數。 但是pandas最擅長的領域還是在處理表格型二維以上不同數據類型數據。 基本導 ...
x