Mac OS X - 透過 DMG 與 *nix 命令列風格安裝軟體

Mac OS X - 透過 DMG 與 *nix 命令列風格安裝軟體

這裡是 Mac 新用戶,但也是 Linux 的長期用戶。誰能向我描述從 .dmg 映像安裝一個軟體(例如 Subversion)與在命令列上從原始碼編譯和安裝之間的差異?該軟體最終是否位於同一位置?還存在哪些其他差異,例如卸載過程?您認為一種方法相對於另一種方法的優缺點是什麼?

答案1

A.dmg只是一個虛擬磁碟(「磁碟映像」),本身與安裝無關。

當磁碟映像僅包含一個應用程式時(通常會有一些解釋性文字要求您將其拖曳到「應用程式」資料夾中),則所有程式碼和支援檔案都包含在該檔案中。該應用程式負責在首次啟動時進行任何設置,並負責提供卸載機制(如果有)稍後安裝。許多開發人員正在使用火花尋找和安裝更新的框架。

如果磁碟映像包含一個套件(.pkg.mpkg),那麼它就是一個安裝程式。運行它可以在系統上的任何位置安裝文件並運行安裝前和安裝後腳本,並且沒有內置的卸載或升級機制(不過,系統確實會保留已安裝軟體包的日誌,因此如果您稍後運行安裝程序套件對於較新版本的軟體,其行為可能與首次安裝時有所不同)。在這種情況下,開發人員也負責卸載和回應更新。負責任的開發人員將安裝到標準目錄(/Applications/Library~/Library/usr等)

對於通常從原始程式碼安裝的命令列軟體,我建議使用像這樣的套件管理器Mac埠(我的偏好)或芬克超過使用安裝程式套件。這兩個套件管理器都設定了一個獨立的目錄(分別為/opt/sw),其中包含它們安裝的軟體的所有支援檔案和可執行程式碼(並且大多數套件都尊重它),並將其自身添加到您的$PATH.使用套件管理器的一個巨大優勢是,它可以追蹤已安裝的軟體,並讓您能夠升級或卸載它。

答案2

從 .dmg 安裝通常只需拖放到 /Applications 即可。在我看來,卸載是 Mac 體驗中的一大痛點。您可以從應用程式中刪除該文件,但只有封裝在 .app 包裝器中的內容才會消失。任何其他設定檔都不會消失。

您應該考慮的另一個安裝路徑是Mac埠和/或芬克。這些有點類似 Linux 世界中的 apt-get 或 yum。它們提供了用於抓取、編譯和安裝常用軟體的命令列實用程式。它通常很簡單:

$ sudo port install svn

(macport 範例)

答案3

這有點複雜,因為 DMG 內部可能有一個簡單的拖放解決方案,或者一個.PKG,可以將東西安裝在任何位置。.pkg 通常會留下收據(通常在 /Library/Receipts 中),儘管 OS X 沒有提供管理這些收據的簡單方法。

Pacifist 是一個有用的應用程序,可以在安裝前檢查 .pkg 檔案(許多命令列應用程式將其用於自訂安裝位置),以便您可以準確地了解可能安裝的位置。然後您可以確定您的自編譯版本是否會安裝在同一位置,以及它們是否會與系統版本衝突:

http://www.charlessoft.com/

具體來說,您需要確保它們是否安裝到不同的位置,您的路徑反映了您希望使用的所需版本。我懷疑 subversion 在安裝多個版本時應該不會有問題...對於 Ruby,我使用 ruby​​19 名稱作為 ruby​​ 可執行檔來阻止不相容程式碼的任何路徑問題。

有一個功能較弱但免費的 .pkg 檔案 Quicklook 插件,它可以完成顯示安裝位置的基本工作:

http://www.mothersruin.com/software/SuspiciousPackage/

相關內容