在 Linux 環境下能用 Homebrew 嗎?

在mac平台上發現homebrew來管理包非常的方便,今天google一下,沒有發現類似於「linux下homebrew」的使用和安裝說明。想請教大家一下。linux centos下比較好用的包管理有哪些呢?linux下真的不能能使用homebrew嗎?

ps: homebrew : http://mxcl.github.com/homebrew/


在Linux下使用Homebrew意義不大。Homebrew之所以這麼設計,很大程度上是為了繞開Mac OS X系統設計中的問題。但是按Linux的標準來看,Homebrew是一個實現的很糟糕的包管理器:

  • 使用用戶本身許可權編譯軟體,而非fakeroot編譯環境,帶來安全隱患
  • 破壞/usr/local的許可權(和內容)
  • 和系統本身的軟體包常常衝突
  • 很多軟體仍然需要大量重編譯
  • 由於依賴OS X的庫,升級系統很容易帶來軟體包乃至homebrew自身的運行問題
  • 存在可以實現homebrew的軟體包管理器,沒有必要繼續重造輪子

根本原因是因為,OS X沒有內置的軟體包管理機制,所以任何其他的軟體包管理器都不得遷就OS X本身自帶的軟體版本,而在Linux下,一般系統中所有的軟體包版本,都由發行版本身的軟體包管理器分發和維護,這樣保證了系統的穩定、沒有衝突。

  • 對於CentOS來說,系統自帶的yum已經可以完成大部分的軟體管理工作 PackageManagement

  • CentOS是以『穩定』為第一考量的發行版,所以不建議重新編譯軟體,參見 PackageManagement/SourceInstalls
  • 你可以自己對軟體進行打包,然後安裝 HowTos/SetupRpmBuildEnvironment
  • 如果你喜歡最新的軟體版本,請嘗試Arch Linux
  • 如果你喜歡源碼編譯,類似ports的系統,請嘗試Gentoo Linux發行版

當然,安裝在userspace的軟體包管理器也有它的好處,如果你需要類似homebrew這樣,安裝在userspace的軟體包管理器,請參考nix(https://nixos.org/nix/)和GNU Guix


雖然Homebrew在Mac OSX下是個好選擇,但我不認為移植到Linux是個好主意。Homebrew用了超多的OSX特定特性(更關鍵的是缺乏類似gentoo-prefix的OS抽象層),即使想挪到越獄的iOS設備上都很困難。而且其本身設計相對其他OSX下的ports的亮點就是繞開osx下已經安裝的pkg包的——這個特性到了linux下將毫無必要,無論想作為chroot系統還是主系統都是如此。


Linux下通用的ports系統

* Gentoo-prefix [1]

* pkgsrc [2]

Homebrew移植到Linux下問題不大,不過估計沒人這麼蛋疼。另請參考[3]

[1]: http://www.gentoo.org/proj/en/gentoo-alt/prefix/

[2]: http://www.pkgsrc.org/

[3]: 干!我終於知道為什麼這麼多人用腳註這種裝逼寫法了!你妹的知乎的編輯器居然沒提供插入超鏈接功能!


主流的Linux版本都有自己的包管理工具,沒有必要把homebrew移植到Linux平台


幾乎每個 Linux 發行版都有自己的包管理器,RedHat 系的 yum,Debian 系的 apt,Gentoo 的 Portage 等,並不需要像在 Mac 上一樣用一個第三方的包管理器。CentOS 屬於 RedHat 系,用 yum 就好。

Homebrew 在 Mac 下很好用。但是和 Linux 下諸多包管理器相比,Homebrew 雖然是源代碼包管理器,但缺少同為源碼包的 Portage 的靈活性,安裝速度上也不如採用二進位包的 yum, apt 等,想不出什麼值得把 Homebrew 移植到 Linux 的理由。


linuxbrew

http://linuxbrew.sh


有了,Linuxbrew


Linux發行版應該都有對應的包管理器

而且應該都比homebrew做的好


幾乎所有的Linux都自帶了包管理器,沒有必要在Linux下使用Homebrew。另外這個Homebrew有一個問題就是會和系統自帶的軟體衝突,比如PHP。我曾被這個問題折騰了2天了。


好處就是繞開管理員許可權,這樣也相對安全,不會影響系統和別的用戶


在沒有root許可權的機器上,我只能用homebrew。。。


把Homebrew port到Linux上肯定是可以的,而且應該不難。但是你就失去了使用特定發行版的好處了,很多軟體在不用的發行版里配置管理的方式不同,使用原生的方式會讓你大多數時候更方便。

我也很喜歡Homebrow,它體現了在配置管理上的一些新潮流。使用Ruby可以更加快速的開發新功能,用C開發的包管理器很難跟上它的開發步伐。自身用Git管理版本和發布,有點Infrastructure as code 的意思。


今天試了下linuxbrew,還屬於半成品,很多跟Mac OSX有關的部分沒有被修改,或者想 @路痴所說的那樣沒有一個OS的抽象層,安裝gcc49就遇到不少問題。不過超喜歡Homebrew,我貢獻了不少Formula,可以很方便地在一台新的Mac上恢復計算環境,如果linuxbrew做成熟的話還是很有好的,因為linux自身的包管理器都太多保守,裡面軟體也舊落上一層厚灰。


推薦閱讀:

如何把VPS上的整個系統備份下來?
VPS上安裝centos7合適么?怎麼配置優化lnmp環境?
如何將centos桌面版下的網卡驅動拷到server版下?
為什麼運維(SA)普遍反對使用 CentOS 7 ?
CentOS 為何加入紅帽公司,會有何影響?

TAG:Mac | Linux | CentOS | Linux軟體 | Homebrew |