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ù)臭蚁、支持多線程和多 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)管理軟件,包括 B2D畦攘、Ubuntu霸妹、Linux Mint 等。
    • Debian 為解決軟件包更新問(wèn)題知押,引入了 APT(Advanced Package Tool)在線升級(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溯革、CenterOS贞绳、SUSE/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ī)制 使用命令 在線升級(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ù)傳多線程下載 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)系作者
  • 序言:七十年代末浅辙,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子阎姥,更是在濱河造成了極大的恐慌记舆,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,490評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件呼巴,死亡現(xiàn)場(chǎng)離奇詭異氨淌,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)伊磺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,581評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)盛正,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人屑埋,你說(shuō)我怎么就攤上這事豪筝。” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,830評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵续崖,是天一觀的道長(zhǎng)敲街。 經(jīng)常有香客問(wèn)我,道長(zhǎng)严望,這世上最難降的妖魔是什么多艇? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,957評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮像吻,結(jié)果婚禮上峻黍,老公的妹妹穿的比我還像新娘。我一直安慰自己拨匆,他們只是感情好姆涩,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,974評(píng)論 6 393
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著惭每,像睡著了一般骨饿。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上台腥,一...
    開(kāi)封第一講書(shū)人閱讀 51,754評(píng)論 1 307
  • 那天宏赘,我揣著相機(jī)與錄音,去河邊找鬼黎侈。 笑死置鼻,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蜓竹。 我是一名探鬼主播,決...
    沈念sama閱讀 40,464評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼储藐,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼俱济!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起钙勃,我...
    開(kāi)封第一講書(shū)人閱讀 39,357評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蛛碌,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后辖源,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體蔚携,經(jīng)...
    沈念sama閱讀 45,847評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,995評(píng)論 3 338
  • 正文 我和宋清朗相戀三年克饶,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了酝蜒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,137評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡矾湃,死狀恐怖亡脑,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤霉咨,帶...
    沈念sama閱讀 35,819評(píng)論 5 346
  • 正文 年R本政府宣布蛙紫,位于F島的核電站,受9級(jí)特大地震影響途戒,放射性物質(zhì)發(fā)生泄漏坑傅。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,482評(píng)論 3 331
  • 文/蒙蒙 一喷斋、第九天 我趴在偏房一處隱蔽的房頂上張望唁毒。 院中可真熱鬧,春花似錦继准、人聲如沸枉证。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,023評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)室谚。三九已至,卻和暖如春崔泵,著一層夾襖步出監(jiān)牢的瞬間秒赤,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,149評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工憎瘸, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留入篮,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,409評(píng)論 3 373
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親夕吻。 傳聞我的和親對(duì)象是個(gè)殘疾皇子反璃,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,086評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容