簡明 homebrew

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

[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

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

-Advertisement-
Play Games
更多相關文章
  • 常見的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 應用。入坑一個多星期,通過學習官方文檔以及手摸手的按教程敲官方的快速上手項目,很像後端,嗯,完美的契合了我這種後端開發人員。 對應官方文檔地址: 搭建本 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...