Mac生產(chǎn)力系列-Mac下的軟件安裝

本文前驅(qū)鋪墊梳理了從 linux 源碼安裝軟件到 DPKG/RPM 軟件包管理機(jī)制,闡述了 *UNX 平臺(tái)的軟件安裝包管理機(jī)制的演變和現(xiàn)代化。
后半部分介紹了 Mac 下的軟件安裝包格式 —— pkg & dmg,以及軟件包管理工具 —— brew 及 brew-cask,并梳理日常 Command Usage。

linux 軟件的安裝與管理

linux 是一套免費(fèi)使用和自由傳播的基于 POSIX 和 UNIX 的多用戶(hù)、多任務(wù)、支持多線(xiàn)程和多 CPU 的開(kāi)源的類(lèi) Unix 操作系統(tǒng)。
由于 linux 操作系統(tǒng)開(kāi)放源代碼,因而在其上安裝的大部分也都是開(kāi)源軟件。開(kāi)源軟件的開(kāi)發(fā)者往往僅需在開(kāi)源代碼托管平臺(tái)上發(fā)布一份源碼包,用戶(hù)即可自由下載源碼包到本地,基于源碼包編譯安裝軟件。這倒是非常符合 C 語(yǔ)言的設(shè)計(jì)哲學(xué):一次編寫(xiě),到處編譯。

基于源碼安裝軟件

基于源碼安裝軟件一般由以下幾個(gè)步驟組成:

  • 下載解壓源碼
  • 閱讀 README、INSTALL 等說(shuō)明文檔,這一步至關(guān)重要
  • 分析安裝平臺(tái)環(huán)境(ifconfigure)
  • 編譯安裝軟件(make,make install)

基于源代碼安裝軟件的好處是:用戶(hù)可以自由配置編譯選項(xiàng),按需編譯實(shí)現(xiàn)功能定制,極大地滿(mǎn)足個(gè)性化需求。此外,用戶(hù)還可以自己選擇安裝路徑,方便管理。卸載軟件也很方便,只需刪除對(duì)應(yīng)的安裝目錄即可。
但是,配置、編譯命令需要了解操作系統(tǒng)本身,并且依賴(lài)開(kāi)源項(xiàng)目所使用的編程語(yǔ)言對(duì)應(yīng)的工具鏈。為了使用一個(gè)應(yīng)用軟件,用戶(hù)需要熟悉 linux 系統(tǒng)的文件組織架構(gòu)和一堆 Shell 交互命令,還得解決編譯過(guò)程中可能涉及到的繁雜的依賴(lài)關(guān)系。一定的英文水平也是必需的,關(guān)鍵是要有折騰不息的精神和頑強(qiáng)的動(dòng)手能力!
English、OS、Linux、命令行交互方式、…,這些令人望而卻步的門(mén)檻足以將普通用戶(hù)拒之門(mén)外。安裝后,你可能都不知道安裝到哪里去了;甚至離開(kāi)了 Windows 桌面,你都不知道從哪里啟動(dòng)軟件。我依稀地記得剛接觸 linux 那會(huì)兒,為了能在 linux 上播放個(gè)視頻文件,廢了老大勁才安裝好一個(gè) MPlayer。當(dāng)時(shí)就森森地覺(jué)得 linux 真不是一般人能折騰得起,盡管現(xiàn)在已經(jīng)折騰慣了,但依然覺(jué)得費(fèi)腦傷神。
作為一個(gè)曾經(jīng)的計(jì)算機(jī)旁系學(xué)生(自動(dòng)化,別名計(jì)算機(jī)控制)、現(xiàn)在的半職業(yè)化軟件攻城獅(涉獵甚廣,淺顯浮泛)和偽自由軟件追崇者(用過(guò)盜版,不懂破解,從無(wú)貢獻(xiàn)),因?yàn)楣ぷ麝P(guān)系經(jīng)常穿梭于 Windows 和 Mac OS X 之間(游離其間,無(wú)所專(zhuān)精),不折騰下 Linux/Unix 都覺(jué)得沒(méi)法混 github。
盡管對(duì)于 vim 鍵盤(pán)型用戶(hù)(估計(jì)基本都是程序員吧),很喜歡那種游離于指尖的”自由感”,但對(duì)于普通鼠標(biāo)型 Windows 用戶(hù),若無(wú)力駕馭,自由便是負(fù)擔(dān)。

只有開(kāi)發(fā)人員才需要學(xué)習(xí)一個(gè)操作系統(tǒng)本身,用戶(hù)只需要學(xué)習(xí)操作系統(tǒng)里面的每個(gè)“應(yīng)用程序”怎么使用。
—— Linus Torvalds

DPKG / RPM

伴隨著 linux 的發(fā)展普及,linux 開(kāi)發(fā)商開(kāi)始在固定的硬件平臺(tái)與操作系統(tǒng)上將要安裝或升級(jí)的軟件編譯好,然后將這個(gè)軟件的所有相關(guān)文件打包成一個(gè)特殊格式的文件。在這個(gè)軟件內(nèi),還包含了預(yù)先檢測(cè)系統(tǒng)與依賴(lài)軟件(或動(dòng)態(tài)鏈接庫(kù))的腳本,并提供記載該軟件提供的所有文件信息等,最終將這個(gè)軟件發(fā)布。
客戶(hù)端取得軟件后,只要通過(guò)特定的命令來(lái)安裝,那么該軟件就會(huì)按照內(nèi)部的腳本來(lái)檢測(cè)相關(guān)的前驅(qū)軟件是否存在。若安裝的環(huán)境和條件符合要求,則開(kāi)始安裝。軟件在安裝完成后,還會(huì)將信息寫(xiě)入軟件管理機(jī)制中,以便完成未來(lái)的升級(jí)、刪除(反安裝)等操作。

目前,在 Linux 界最常見(jiàn)的軟件安裝方式有兩種:

  1. DPKG

    • DPKG(Debian Packager)是由 Debian Linux 社區(qū)所開(kāi)發(fā)出來(lái)的,著名的 package 概念由此被引入到 GNU/Linux 系統(tǒng)中。
    • 通過(guò) DPKG 機(jī)制,Debian 提供的軟件就能夠簡(jiǎn)單安裝起來(lái),同時(shí)還能提供安裝后的軟件信息。派生于 Debian 的其他 Linux Distributions 大多使用 dpkg 機(jī)制來(lái)管理軟件,包括 B2DUbuntu、Linux Mint 等。
    • Debian 為解決軟件包更新問(wèn)題,引入了 APT(Advanced Package Tool)在線(xiàn)升級(jí)機(jī)制,并在 /etc/apt/sources.list 文件列出了可獲得軟件包的鏡像站點(diǎn)地址。
      • APT 由幾個(gè)名字以 apt- 打頭的程序組成,apt-get、apt-cache 和 apt-cdrom 是處理軟件包的命令行工具。
      • apt 作為 dpkg 的前端工具,自動(dòng)管理關(guān)聯(lián)文件和維護(hù)已有配置文件,擁有出色的解決軟件依賴(lài)問(wèn)題的能力。
  2. RPM

    • RPM(RedHat Package Manager)是由 Red Hat 公司所開(kāi)發(fā)出來(lái)的軟件包管理程序。除了可以用來(lái)安裝(-i)外,還可以進(jìn)行查詢(xún)(-q)、驗(yàn)證(-V)、更新(-U)、刪除(-e)等操作,這些功能選項(xiàng)讓軟件的管理更加方便。包括 Fedora、CenterOSSUSE/openSUSE 等知名的 linux 發(fā)行版本都使用 RPM 作為軟件安裝的管理機(jī)制。
    • RPM 包的封裝格式一般有兩種,分別是 RPMSRPM。RPM 格式的文件 xxx.rpm 內(nèi)含已經(jīng)經(jīng)過(guò)編譯的二進(jìn)制包和配置文件等數(shù)據(jù)。SRPM(Source RPM)對(duì)應(yīng)的 RPM 文件類(lèi)似于 xxx.src.rpm 格式,它包含了源碼文件和一些編譯指定的參數(shù)文件。因而,在使用的時(shí)候,需要先以 RPM 管理的方式編譯為 RPM 文件(rpmbuild,再將編譯完成的 RPM 文件安裝到 Linux 系統(tǒng)中。
    • RPM 無(wú)法自動(dòng)解決軟件的依賴(lài)關(guān)系,使用與 APT 對(duì)應(yīng)的 YUM (Yellowdog Updater Modified) 機(jī)制可以解決屬性依賴(lài)問(wèn)題。YUM 作為基于 RPM 的 Shell 前端軟件包管理器,主要用于自動(dòng)升級(jí)、安裝/移除 RPM 軟件包。它能夠自動(dòng)查找并解決 RPM 包之間的依賴(lài)關(guān)系,而無(wú)需管理員逐個(gè)手工的去安裝每一個(gè) RPM 包。
Distribution 代表 包管理機(jī)制 使用命令 在線(xiàn)升級(jí)機(jī)制(命令)
Red Hat / Fedora RPM rpm,rpmbuild YUM(yum)
Debian / Ubuntu DPKG dpkg APT(apt-get)

linux 眾多發(fā)行版中,ubuntu 占領(lǐng)桌面,RHEL/CentOS 占領(lǐng)服務(wù)器,比較小眾的 Gentoo 采用獨(dú)特的 Portage 包管理系統(tǒng)。Gentoo 的軟件樹(shù)稱(chēng)為 Portage,對(duì)應(yīng)的包管理器是 emerge,包元文件稱(chēng)為 ebuild。
Gentoo 是個(gè)強(qiáng)調(diào)能自由選擇的分發(fā)版,它使用源碼來(lái)做包管理的方式。由于能自己編譯及調(diào)整源碼依賴(lài)等選項(xiàng),而獲得至高的自定義性及優(yōu)化的軟件,在源碼包也有相當(dāng)多新舊版本的選擇,因此吸引了許多狂熱愛(ài)好者以及專(zhuān)業(yè)人士。

RPM / SRPM

RPM 軟件包命名規(guī)范:name-version-release.arch.rpm。
其中,version 表示系統(tǒng)的發(fā)行版,如 fc18、el6 表明這個(gè)軟件包是在 Fedora 18、RHEL 6.x / CentOS 6.x 下使用的;arch 表示硬件平臺(tái),常見(jiàn)的有 i386、x86_64 等。

rp-pppoe-3.1-5.i386.rpm 是一個(gè)典型的 RPM 安裝包,它由幾個(gè)部分構(gòu)成:

  • rp-pppoe:名稱(chēng)
  • 3.1:版本信息
  • 5:發(fā)布次數(shù)
  • .i386:適合的硬件平臺(tái)
  • .rpm:擴(kuò)展名

RPM 文件必須要在相同的 linux 環(huán)境才能安裝,而 SRPM 是源代碼格式。我們可以通過(guò)修改 SRAM 內(nèi)的參數(shù),按需編譯生成適合我們 linux 環(huán)境的 RPM 文件,而不必與原作者打包的 Linux 環(huán)境相同。
通常一個(gè)軟件在發(fā)布的時(shí)候,都會(huì)同時(shí)釋放出該軟件的 RPM 與 SRPM。

文件格式 擴(kuò)展名格式 直接安裝與否 內(nèi)含程序類(lèi)型 可否修改參數(shù)并編譯
RPM xxx.rpm 已編譯 ×
SRPM xxx.src.rpm × 未編譯的源碼

RPM 建包的原理并不復(fù)雜,可以理解為按照標(biāo)準(zhǔn)的格式整理一些信息,包括:軟件基礎(chǔ)信息,以及安裝、卸載前后執(zhí)行的腳本,對(duì)源碼包解壓、打補(bǔ)丁、編譯,安裝路徑和文件等。我們可以基于標(biāo)準(zhǔn)規(guī)范,來(lái)使用 rpmbuild 制作自己的 RPM 包

Mac 軟件包管理工具

linux 平臺(tái)下的 apt-get 和 yum 命令行工具分別適用于 deb、rpm 包管理方式的發(fā)行版本,主要用于自動(dòng)從互聯(lián)網(wǎng)的軟件倉(cāng)庫(kù)中搜索、安裝、升級(jí)和卸載軟件。在 Mac OS X 平臺(tái)下,除了直接從 AppleStore 下載認(rèn)證上架的軟件進(jìn)行安裝外,還可以在系統(tǒng)偏好設(shè)置的【安全性與隱私】中允許從任何來(lái)源下載的應(yīng)用。

dmg & pkg

一些應(yīng)用會(huì)提供 dmg、pkg 安裝包,例如 git-2.5.3-intel-universal-mavericks.dmg、Subversion-1.9.2_10.10.x.pkg。

  1. dmg 是蘋(píng)果的壓縮鏡像文件(類(lèi)似 Windows 下的 iso ),它是 Mac 應(yīng)用軟件通用的打包格式(相當(dāng)于 ipa),里面一般包含 應(yīng)用程序.app 的圖標(biāo)和一個(gè)應(yīng)用程序文件夾(/Applications)快捷方式,直接將 應(yīng)用程序.app 拖曳至應(yīng)用程序文件夾即可完成安裝。卸載也同樣綠色,直接在 Launchpad 中或 cd 到 /Applications 目錄下刪除應(yīng)用(文件夾)即可。

  2. pkg 屬于系統(tǒng)級(jí)軟件的安裝程序,相當(dāng)于 iOS 越獄后裝的 deb,一般會(huì)修改系統(tǒng)配置,權(quán)限較高。pkg 安裝一般要求 sudo 授權(quán),卸載 pkg 安裝的應(yīng)用 也比較麻煩。pkg 類(lèi)似 Windows 下的安裝程序 Setup.exe 和 *.msi。
    Windows 下可以使用 Install Shield 來(lái) 制作安裝程序,可使用 Xcode 自帶的 PackageMaker 或打包命令行工具 pkgbuild+productbuild+pkgutilIceberg(an Integrated Packaging Environment (IPE) )來(lái)制作安裝包。

  3. mpkg:pkg 是單個(gè)應(yīng)用程序的安裝包,而 mpkg(multi pkg)是多個(gè) pkg 。我們來(lái)看一下從 AppleStore 下載的 OS X EI Capitan 安裝器文件——安裝 OS X EI Capitan.app/Contents/SharedSupport 目錄:

    <figure class="highlight" style="display: block; margin: 20px 0px; background-color: rgb(0, 36, 81); padding: 15px; overflow: auto; font-size: 13px; color: rgb(255, 255, 255); line-height: 1.6;">

    | |

    </figure>

    下載完 安裝 OS X EI Capitan.app 之后,可以使用 createinstallmedia 命令制作 U 盤(pán)安裝盤(pán),或恢復(fù)到 U 盤(pán)制作啟動(dòng)盤(pán)。

  4. dmg with pkg:像 git-2.5.3-intel-universal-mavericks.dmg 這種 dmg 打包的是 git command CLI 的安裝 pkg,需要使用 DiskImageMounter 掛載 dmg,然后打開(kāi) pkg(使用 Installer),按照引導(dǎo)一步步 next 即可安裝完成。當(dāng)然也可使用 命令行 完成掛載安裝操作。

除了使用 dmg、pkg 來(lái)安裝軟件外,Mac 下同樣有優(yōu)秀的軟件包管理工具,可以下載、安裝和管理大量 AppleStore 沒(méi)有提供、而又經(jīng)常會(huì)用到的開(kāi)源軟件。我們有兩種選擇 —— MacPorts 和 Homebrew。

MacPorts

MacPorts (DarwinPorts) 是由 FreeBSD 的 port 移植而來(lái)的軟件包管理系統(tǒng),,用來(lái)簡(jiǎn)化 Mac OS X和 Darwin 操作系統(tǒng)上軟件的安裝。在 Mac 中安裝 MacPorts 讓你在Mac 的 Shell 下更加游刃有余。
MacPorts 有個(gè)原則,對(duì)于軟件包之間的依賴(lài),都在 MacPorts 內(nèi)部(/opt/local)解決,無(wú)論系統(tǒng)本身是否包含了需要的庫(kù),都不會(huì)加以利用。這使得 MacPorts 龐大臃腫,導(dǎo)致系統(tǒng)出現(xiàn)大量軟件包的冗余,占用不小的磁盤(pán)空間,同時(shí)稍大型一點(diǎn)的軟件編譯時(shí)間都會(huì)難以忍受。

Homebrew

Homebrew(簡(jiǎn)稱(chēng) brew)是 Mac OS X 不可或缺的軟件管理工具(The missing package manager for OS X),讓 Mac 擁有類(lèi)似 apt-get 的功能,用以簡(jiǎn)化軟件的安裝、升級(jí)和卸載過(guò)程。

Homebrew is the easiest and most flexible way to install the UNIX tools.

Homebrew 是一款使用 Ruby 進(jìn)行開(kāi)發(fā)的托管于 GitHub 上的自由及開(kāi)放源代碼的軟件包管理系統(tǒng),通過(guò)用戶(hù)的貢獻(xiàn)擴(kuò)大對(duì)軟件包的支持。

MacPorts vs Homebrew

MacPorts 和 Homebrew 這兩種包管理系統(tǒng)的工作方式都是下載源代碼,然后在本地編譯。但是這兩種包管理系統(tǒng)還是存在很大差異的,主要差異有以下三點(diǎn):

  • MacPorts 的理念是盡量減少對(duì)系統(tǒng)現(xiàn)有庫(kù)的依賴(lài),編譯時(shí)間較長(zhǎng);而 Homebrew 則是盡量依賴(lài)系統(tǒng)現(xiàn)有庫(kù),編譯時(shí)間會(huì)顯著減少。
  • MacPorts 的 Package 是安裝到 /opt/local ,不會(huì)與系統(tǒng)現(xiàn)有的軟件發(fā)生沖突;而 Homebrew 的 Package 是安裝到 /usr/local,可能與系統(tǒng)自帶的軟件發(fā)生沖突。
  • Macports 使用 rsync 進(jìn)行同步(也可以使用svn),而 Homebrew 使用 git 進(jìn)行同步。

總體來(lái)說(shuō),Homebrew 使用簡(jiǎn)單,編譯時(shí)間短,比較適合新手使用。MacPorts 編譯時(shí)間長(zhǎng),命令還要帶上 sudo,易用性上沒(méi)有 Homebrew 好,但是比較干凈,適合有潔癖的人使用。

以上梳理了 Linux 和 Mac 下的包管理機(jī)制,下面重點(diǎn)介紹 Mac OS X 上的包管理 CLI 命令行工具 brew 及其增強(qiáng)工具 brew-cask。

brew (homebrew)

brew 是從軟件包倉(cāng)庫(kù)下載源代碼碼到本地進(jìn)行解壓,進(jìn)而執(zhí)行 ./configure && make install ,將軟件編譯安裝到單獨(dú)的目錄(/usr/local/Cellar)下,然后軟鏈(symlink)到 /usr/local 目錄下,同時(shí)會(huì)自動(dòng)檢測(cè)下載相關(guān)依賴(lài)庫(kù),并自動(dòng)配置好各種環(huán)境變量。
這個(gè)對(duì)程序員來(lái)說(shuō)簡(jiǎn)直是福音,使用簡(jiǎn)單的指令就能快速安裝、升級(jí)和卸載本地的各種開(kāi)發(fā)環(huán)境。

安裝 brew

brew 的安裝很簡(jiǎn)單,使用一條 ruby 命令調(diào)用 curl 下載安裝即可。

1.Mac OS X 上默認(rèn)已安裝 ruby

<figure class="highlight cpp" style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none; display: block; margin: 20px 0px; background-color: rgb(0, 36, 81); padding: 15px; overflow: auto; font-size: 13px; color: rgb(255, 255, 255); line-height: 1.6; font-family: Lato, "PingFang SC", "Microsoft YaHei", sans-serif; text-align: justify;">

| |

</figure>

2.Mac OS X 上默認(rèn)已內(nèi)置了 curl(Command Line URL Viewer):

說(shuō)明:

curl 是基于跨平臺(tái)網(wǎng)絡(luò)協(xié)議庫(kù) libcurl 的利用 URL 語(yǔ)法在命令行方式下工作的開(kāi)源文件傳輸工具。
curl常用命令 可參考 curl 詳解、curl網(wǎng)站開(kāi)發(fā)指南

舊的安裝

很早之前,homebrew 的安裝 url 是 https://raw.github.com/Homebrew/homebrew/go/install

首次執(zhí)行 brew install 安裝軟件時(shí),將提示不能創(chuàng)建 /usr/local/Cellar 目錄,原因是沒(méi)有 /usr/local 的寫(xiě)權(quán)限。

解決方法

執(zhí)行 chown 命令改變 /usr/local 的所有者為 whoami ,-R 表示遞歸(Recursive)。

<figure class="highlight" style="font-style: normal; font-variant-caps: normal; font-weight: normal; letter-spacing: normal; orphans: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; text-decoration: none; display: block; margin: 20px 0px; background-color: rgb(0, 36, 81); padding: 15px; overflow: auto; font-size: 13px; color: rgb(255, 255, 255); line-height: 1.6; font-family: Lato, "PingFang SC", "Microsoft YaHei", sans-serif; text-align: justify;">

| |

</figure>

新的安裝

可以在 brew 的官網(wǎng)首頁(yè)的末尾看到最新的安裝代碼:

最新的安裝過(guò)程中將會(huì)要求輸入密碼授權(quán) sudo chown ${whoami} /usr/local/*

brew help

brew -v / –version

安裝完 brew,執(zhí)行 brew -v 命令可以查看安裝的 brew 版本信息:

brew 常用命令

執(zhí)行 brew 查看幫助概要(Example usage、Troubleshooting、Brewing):

-h / –h / –help / help

  1. 執(zhí)行 man brew 可查看詳細(xì)的 brew 幫助文檔。
  2. 執(zhí)行 man home 可調(diào)用瀏覽器打開(kāi) brew 官方網(wǎng)站。
命令 說(shuō)明
brew update 更新 brew
brew search FORMULA 查找軟件包,可使用正則表達(dá)式
brew info FORMULA 顯示軟件的信息
brew deps FORMULA 顯示包依賴(lài)
brew install FORMULA 安裝軟件包
brew uninstall FORMULA 卸載軟件包
brew list 列出已安裝的軟件包,可指定 FORMULA
brew outdated 列出可升級(jí)的軟件包
brew upgrade 更新已安裝的軟件包,可指定 FORMULA
brew doctor 診斷 homebrew 環(huán)境
brew prune 刪除 /usr/local 下的無(wú)效鏈接(remove broken symlinks)

brew info

brew info 顯示軟件包信息,一般包括:

  • 軟件概要信息
  • 本地是否已安裝:Not installed / Poured from bottle
  • 依賴(lài)包:==> Dependencies,Build、Required、Recommended、Optional
  • 編譯、安裝選項(xiàng): ==> Options
  • 預(yù)警信息:==> Caveats

brew info 查看 plist 文件

brew install 示例

tree

linux 下的 tree 命令以樹(shù)形結(jié)構(gòu)顯示文件目錄結(jié)構(gòu),Mac 下默認(rèn)并沒(méi)有該命令,只有普通的 ls 命令??梢岳?brew 查找并安裝 tree 命令行工具:

  1. homebrew 下載已經(jīng)編譯好的二進(jìn)制包 tree 到緩存目錄 /Library/Caches/Homebrew/tree-1.7.0.el_capitan.bottle.1.tar.gz
  2. 解壓 tree-1.7.0.el_capitan.bottle.1.tar.gz/usr/local/Cellar/tree/ 目錄,根據(jù)版本存放到文件夾 1.7.0 下。
  3. /usr/local/Cellar/tree/1.7.0/bin/tree 軟鏈到 /usr/local/bin/tree,后者是前者的替身,執(zhí)行 tree 命令時(shí),真正調(diào)用的是其在 Cellar 中的真身。

Axel

以下示例查找比 wget 下載速度高幾倍的支持斷點(diǎn)續(xù)傳多線(xiàn)程下載 CLI 命令行工具 axel,并顯示軟件包信息和依賴(lài)關(guān)系,然后安裝該工具:

  1. 從 homebrew 官方倉(cāng)庫(kù) homebrew.bintray.com 下載 axel 失敗后,自動(dòng)從鏡像源 mirrors.ocf.berkeley.edu重新下載。下載的源碼緩存到目錄 /Library/Caches/Homebrew/axel-2.4.tar.gz。
  2. 下載完成后,依次執(zhí)行 ./configure、makemake install 將軟件編譯安裝到 /usr/local/Cellar/axel/ 目錄下,根據(jù)版本存放到文件夾 2.4 下。
  3. usr/local/Cellar/axel/2.4/bin/axel 軟鏈到 /usr/local/bin/axel,后者是前者的替身,執(zhí)行 axel 命令時(shí),真正調(diào)用的是其在 Cellar 中的真身。

subversion

search-info-deps-install 過(guò)程日志參考 brew install subversion.log。

brew cask

Homebrew 作為 Ruby 社區(qū)極富想象力的作品,使得 Mac 下安裝 Mysql 等常用包不再困難。那么,是否也可以通過(guò) brew install mysql 這樣簡(jiǎn)單的方式來(lái)安裝 Google Chrome 瀏覽器呢?為解決這一問(wèn)題,phinze 的作品 homebrew-cask 應(yīng)運(yùn)而生。

about

Homebrew 可以管理 Mac 下的命令行工具(wget、node),brew cask 則是一套建立在 brew 上的增強(qiáng)命令行工具,支持管理 Mac 下的 GUI 程序,例如 qq、 google-chrome、evernote 等。
cask 從鏡像源下載已經(jīng)編譯好了的應(yīng)用軟件二進(jìn)制包(.dmg/.pkg)到本地解壓到單獨(dú)的目錄(/opt/homebrew-cask/Caskroom)下,然后軟鏈(symlink)到 /Applications 目錄下。
cask 包含了很多在 AppStore 里沒(méi)有的常用軟件,省掉了手動(dòng)下載、解壓、拖拽(安裝)等步驟,且卸載也相當(dāng)容易與干凈,使用起來(lái)非常方便。

假設(shè)你已安裝好了 Homebrew,執(zhí)行以下命令查找 cask 包并顯示軟件包信息和依賴(lài)關(guān)系:

install

安裝 cask 極其簡(jiǎn)單,打開(kāi)終端輸入:

brew tap phinze/homebrew-cask

由于 brew 和包含的包源都是通過(guò) github 來(lái)管理,人為的維護(hù)管理。除了默認(rèn)的倉(cāng)庫(kù),還允許別人的源添加進(jìn)來(lái)。通過(guò) brew tap 指定第三方包源:

$ brew tap

默認(rèn)的源是 caskroom/cask,以下顯式 tap 原作者的源(phinze/homebrew-cask):

brew install brew-cask

本機(jī)已經(jīng)安裝了 brew-cask 的依賴(lài)軟件 emacs :

如果沒(méi)有安裝 emacs,則 brew 在安裝 cask 之前會(huì)自動(dòng)幫我們下載安裝 emacs

brew cask

執(zhí)行 brew caskbrew-cask 可查看幫助概要(首次需輸入 sudo 密碼):

執(zhí)行 brew-cask --version 命令可以查看安裝的 brew-cask 版本信息:

command usage

brew cask 大部分命令和 brew 保持一致,新增了以下幾條命令:

命令 說(shuō)明
brew cask audit 查詢(xún)指定 Cask 的可安裝性
brew cask cat 查看指定 Cask 安裝源信息
brew cask zap 打包指定 Cask
brew cask cleanup 清理緩存及軟鏈

安裝了 cask 之后,就可以像 brew 一樣來(lái)搜索安裝軟件,以下示例 google-chrome :

搜索安裝包

查詢(xún)安裝性

查詢(xún)包信息

1.執(zhí)行 brew-cask cat 查詢(xún)指定 Cask 的源信息:

2.執(zhí)行 brew-cask info 查詢(xún)指定 Cask 的包信息:

安裝/卸載 應(yīng)用

brew-cask 安裝和卸載的命令同 brew ,都是使用 install / uninstall 。

1.執(zhí)行 brew cask install google-chrome 命令安裝 google-chrome:

2.執(zhí)行 brew cask uninstall google-chrome 命令卸載 google-chrome:

uninstall 命令將刪除 /opt/homebrew-cask/Caskroom/google-chrome 及其在 ~/Applications/ 下的軟鏈(symlink)。
我們也可手動(dòng)刪除 homebrew 下載目錄中緩存的 google-chrome 安裝包 /Library/Caches/Homebrew/google-chrome-latest.dmg 及其軟鏈 /Library/Caches/Homebrew/Casks/google-chrome-latest.dmg

升級(jí)更新軟件

brew-cask 并沒(méi)有提供 brew 的 upgrade 命令,升級(jí)更新軟件只能通過(guò) DIY:

  1. 進(jìn)入應(yīng)用軟件的【關(guān)于】,手動(dòng)檢查是否可更新升級(jí),使用軟件自己的更新流程。
  2. 卸載重裝 (brew cask uninstall && brew cask install) ,實(shí)現(xiàn)間接升級(jí)。

brew-cask install 示例

文件預(yù)覽插件

有些插件可以讓 Mac 上的文件預(yù)覽更有效,比如語(yǔ)法高亮、markdown 渲染、json 預(yù)覽等等。通過(guò) brew cask install命令可以安裝這些插件:

Visual Studio Code

Wireshark

search-info-cat-audit-install 過(guò)程日志參考 brew-cask install wireshark.log。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容