本文前驅(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)的軟件安裝方式有兩種:
-
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)管理軟件,包括 B2D、Ubuntu、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)題的能力。
- APT 由幾個(gè)名字以
-
DPKG(Debian Packager)是由 Debian Linux 社區(qū)所開(kāi)發(fā)出來(lái)的,著名的
-
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、CenterOS、SUSE/openSUSE 等知名的 linux 發(fā)行版本都使用 RPM 作為軟件安裝的管理機(jī)制。
- RPM 包的封裝格式一般有兩種,分別是 RPM 和 SRPM。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。
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)用(文件夾)即可。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+pkgutil 或 Iceberg(an Integrated Packaging Environment (IPE) )來(lái)制作安裝包。-
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)。 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
- 執(zhí)行
man brew可查看詳細(xì)的 brew 幫助文檔。 - 執(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 install 示例
tree
linux 下的 tree 命令以樹(shù)形結(jié)構(gòu)顯示文件目錄結(jié)構(gòu),Mac 下默認(rèn)并沒(méi)有該命令,只有普通的 ls 命令??梢岳?brew 查找并安裝 tree 命令行工具:
- homebrew 下載已經(jīng)編譯好的二進(jìn)制包 tree 到緩存目錄
/Library/Caches/Homebrew/tree-1.7.0.el_capitan.bottle.1.tar.gz - 解壓
tree-1.7.0.el_capitan.bottle.1.tar.gz到/usr/local/Cellar/tree/目錄,根據(jù)版本存放到文件夾1.7.0下。 - 將
/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)系,然后安裝該工具:
- 從 homebrew 官方倉(cāng)庫(kù)
homebrew.bintray.com下載 axel 失敗后,自動(dòng)從鏡像源mirrors.ocf.berkeley.edu重新下載。下載的源碼緩存到目錄/Library/Caches/Homebrew/axel-2.4.tar.gz。 - 下載完成后,依次執(zhí)行
./configure、make和make install將軟件編譯安裝到/usr/local/Cellar/axel/目錄下,根據(jù)版本存放到文件夾2.4下。 - 將
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 cask 或 brew-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:
- 進(jìn)入應(yīng)用軟件的【關(guān)于】,手動(dòng)檢查是否可更新升級(jí),使用軟件自己的更新流程。
- 卸載重裝 (
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。