題:
安裝內容:brew vs.官方安裝程序-應該使用哪一個?
winklerrr
2020-08-31 18:10:02 UTC
view on stackexchange narkive permalink

我想知道應如何在Mac上安裝程序?通過Homebrew還是官方安裝程序(如果有)?

假設我要在Mac上安裝Node.js。 macOS官方安裝指南提供了不同的替代方法。 因此,首先,我通過其官方安裝程序文件進行了安裝。 然後,我切換到Homebrew並通過 brew install node 安裝了它。

所以現在看來我的系統上安裝了兩個Node。當我運行命令哪個節點時,它會輸出 / usr / local / bin 。因此,很明顯官方安裝在這裡很受支持(也許是因為我先安裝了它?我不知道)。來自Homebrew的節點安裝位於 / usr / local / Cellar 中。

所以我的問題是:

  1. 我應該使用Homebrew還是官方安裝程序?為什麼?對我來說,Homebrew似乎比安裝程序具有一些優勢,例如更輕鬆的卸載過程和更新已安裝軟件包的更好可能性。
  2. 如何將系統從使用 / usr / local / bin 節點的安裝切換到 / usr / local / Cellar 的安裝?
  3. ol>
我相信“官方”版本將安裝在`/ usr / bin /`中,因為只允許在這里安裝Apple認可的程序。如果您是我,我將打開Finder,然後查看`/ usr / local / bin /`文件夾。您可能會發現/ usr / local / bin / node是到/ usr / local / Cellar / node的符號鏈接。
另外,執行一個`node --version`和`/ usr / local / Cellar / node / node --version`(調整第二個版本以適合您計算機上的版本),並比較兩個版本號。通常,您需要版本號更高的版本
即使使用Node.js安裝程序,您通常也不會安裝到/ usr / bin(在macOS的最新版本中,您可能始終無法安裝)。自製程序通常鏈接到/ usr / local / bin,因此您可能需要檢查文件是否只是到地窖的符號鏈接。
七 答案:
Allan
2020-08-31 18:54:11 UTC
view on stackexchange narkive permalink

這裡的Ask Different有一個類似的問題- MacPorts,Fink和Homebrew的優缺點是什麼?-比較了不同的程序包管理器。這是一本很好的讀物,我鼓勵您閱讀它。

我應該使用Homebrew還是官方安裝程序?為什麼?

使用Homebrew和使用安裝程序包之間的主要區別是構建時間依賴性。 Homebrew(和MacPorts)在管理所有這些方面做得非常出色。但是,有了該軟件包,就沒有構建要求,並且軟件可以使用了。

卸載不再是問題。 Homebrew將管理卸載過程,並在需要時處理運行時相關項,以對其進行修剪。但是,對於 AppCleaner這樣的免費應用程序,徹底刪除應用程序不是問題。

因此,最重要的是它取決於您的工作流程。如果您只需要實用程序,請下載軟件包。如果您使用多個庫,並且有想要管理的共享庫,請使用Homebrew。

如何將系統從使用/ usr / local / bin Node安裝切換到/ usr / local / Cellar安裝?

您更改路徑。

根據您的shell(對於Bash為〜/ .bash_profile ,對於Zsh為〜/ .zprofile ),您只需添加新實用程序的目錄(請參見 ZSH :.zprofile,.zshrc,.zlogin-往哪裡去?了解更多信息)。為了確保在另一個(本機)應用程序之前 被選中,您首先將其放在path變量中。例如,默認路徑為(由 path_helper 設置)

  / usr / local / bin:/ usr / bin:/ bin:/ usr / sbin:/ sbin
 

在您的個人資料中,只需將行添加到二進製文件所在的位置即可。以您的示例為例,添加路徑:

  PATH = / usr / local / Cellar:$ PATH
 

您的新路徑會將您的Cellar目錄放在現有目錄的前面。因為它是您現有路徑的前綴(之前),所以它將首先在該目錄中查找。有關完整的詳細信息,請參見自製軟件文檔。我個人使用了MacPorts和“官方”安裝程序的組合,因此我使用了不同的目錄結構。YMMV。

PATH = / usr / local / Cellar:$ PATH應該是PATH = / usr / local / Cellar / package / version / bin:$ PATH而且實際上,它應該只是`PATH = / usr / local / bin:$ PATH`,其中包含symlinks brew安裝。
@anki我的目標是*教育* OP如何修改東西以滿足他們的需求,而不是給出有關Homebrew默認路徑的答案。最終結果是確定最有效的方法,而不是Homebew HOWTO
@Allan是一個很好的目標,但是我們還需要教育OP,以了解`PATH`中的查詢不是遞歸的,並且二進製文件不直接在`/ usr / local / Cellar`中。因此,即使在$ PATH中的/ usr / local / Cellar中有一個node目錄,該node命令也會埋在/ usr / local / Cellar / node / / bin中。找不到。
為什麼要專注於該特定路徑?我用你的例子*來直白地說,因為這是書面問題。您正在考慮這個問題,因為我從沒說過路徑搜索是遞歸的。實際上,我說過“使用二進製文件所在的路徑,並鏈接到Homebrew文檔。同樣,我要按要求解決問題,而不是寫Homebrew HOWTO
anki
2020-08-31 18:38:57 UTC
view on stackexchange narkive permalink

我應該使用Homebrew還是官方安裝程序?為什麼?

相對於不提供卸載程序的.pkg文件,我總是更喜歡brew或conda之類的軟件包管理器。

  • 一個人可以檢查要安裝哪些依賴項。
  • 輕鬆清理。
  • 無需記住標準macOS安裝隨附的內容或以後安裝的內容。
  • 無需輸入root密碼。

在brew上找不到的,我自己構建的工具是使用 CMAKE_INSTALL_PREFIX 構建的,並安裝在〜/ Applications 中。我從某個地方直接下載的二進製文件也保存在〜/ Applications

然後我通過〜/ .bash_profile 將安裝路徑添加到 PATH


brew將實際的二進製文件或庫保留在 / usr / local / Cellar / <package> / <version> / bin 中,並在 / usr / local / bin / usr / local / lib 或包含。並將路徑 / usr / local / bin 放入 PATH 變量中。

很顯然,這裡正式安裝是受青睞的(也許因為我先安裝了它?我不知道)

不,這是優先事項。在 PATH 變量中,默認情況下在 / usr / bin 之前提到 / usr / local / bin 。 (請參見 install.sh文件)。因此,當找到二進製文件時,不會檢查即將到來的位置。


您從網站下載的內容 是簡化的

  curl“ https://nodejs.org/dist/latest/node-${VERSION:-$(wget -qO- https://nodejs.org/dist/latest/ | sed -nE' s |。* >node-(。*)\。pkg< / a>。* | \ 1 | p')}。pkg“ \
>“ $ HOME / Downloads / node-latest.pkg” \
&& sudo安裝程序-store -pkg“ $ HOME / Downloads / node-latest.pkg” -target“ /”
 

我猜想 node 已安裝在 / usr / bin 中。


所以要清理東西

  • 運行 brew卸載節點
  • https://nodejs.org/dist/latest/獲取xz文件並檢查其內容。
  • 一個一個地找到與您下載的xz相匹配的所有文件夾和文件(如README和changelog),然後將其刪除。最有可能在 / usr / bin / usr / local / bin 中找到它們。在這裡有用的是使用查找器並按“添加日期”進行排序。
  • 釀造安裝節點

如何將系統從使用/ usr / local / bin Node安裝切換到/ usr / local / Cellar安裝?

完成上述步驟,並且brew安裝正確之後,即 echo $ PATH 包含 / usr / local / bin ,您就沒有了做任何額外的事情。

HomeBrew的佔地面積有多大?
git repo和一些已下載二進製文件的緩存約為350 MB。安裝的大小無論如何都不會改變,所以沒關係。
benwiggy
2020-08-31 19:24:31 UTC
view on stackexchange narkive permalink

如果您打算安裝很多東西,那麼您可能會發現軟件包管理器更有用;如果您只需要安裝少量東西,它們都有自己的安裝程序,並且更新容易,那麼安裝HomeBrew之類的東西可能只會增加另一層複雜性。

將所有雞蛋放在一個籃子裡也有安全隱患。 https://medium.com/@vesirin/how-i-gained-commit-access-to-homebrew-in-30-minutes-2ae314df03ab

Saaru Lindestøkke
2020-09-01 02:38:22 UTC
view on stackexchange narkive permalink

關於您的第一個問題我應該使用Homebrew還是官方安裝程序?我覺得有必要添加使用Homebrew的缺點,而我在這里或其他問題中沒有看到:長期兼容性。

以El Capitan為例,它安裝在無法進一步升級的Mac上。儘管這些Mac仍然可以正常運行,但 Homebrew(作為Apple)已經放棄了對該OS版本的支持。 現在,如果您嘗試在El Capitan上 brew install 某些東西,它可能會起作用,可能會失敗,或者可能會啟動冗長的編譯過程,然後然後會失敗。

我發現每次都值得嘗試一下此過程,因此現在我要在舊計算機上使用官方安裝程序進行安裝。

為什麼不能安裝公式的特定版本?參見:https://stackoverflow.com/questions/3987683/homebrew-install-specific-version-of-formula
@Allan這將不允許安裝相應二進製文件的新版本
我得到了@nohillside,,我希望通過指定它來安裝最新的兼容版本。
我將嘗試使用@Allan,但隨後開始搜尋與El Capitan兼容的自製軟件的最新版本。此外,我還記得一些有關El Capitan瓶的東西(那些是經過編譯的沖泡配方,對嗎?)從自製服務器中慢慢消失了。
除了我使用MacPorts之外,我無法說說Homebrew服務器上會發生什麼(主要是因為它基於BSD端口模型;請參閱[FreshPorts](https://freshports.org))。但是,我已經能夠找到舊版本,幾乎可以回溯到PPC機器上Lion所需的所有功能-pkg,端口和源。
Seamus
2020-09-01 05:03:51 UTC
view on stackexchange narkive permalink

我想知道應如何在Mac上安裝程序?通過Homebrew還是官方安裝程序(如果有)?

此處的其他答案已解決了許多具體問題。我將只回答這個問題,提出一些建議,並簡要解釋它們。

macOS中程序包管理器的作用

我認為,使用各種Linux和BSD發行版的大多數用戶已經開始意識到一個好的軟件包管理器的重要性。我主要使用基於Debian的發行版,並認為軟件包管理器( aptitude )與內核本身一樣重要。我的意思是,如果軟件包管理器不存在,或者它不可靠且容易出錯,那麼我就不會成為Linux用戶。

Apple選擇了not來提供程序包管理器本身。 Apple提供了一系列開源工具-它們與macOS發行版捆綁在一起,並由Apple酌情進行更新。但是,可用的開源軟件世界很大;它的大部分質量非常好,與封閉源軟件相比具有實質性優勢

對於2-3個以上的軟件包,我認為使用軟件包管理器可以為大多數用戶提供最佳服務。有些軟件包在macOS上很好地支持獨立安裝。有些甚至支持更新,還有一些支持刪除。但是,這些過程不可避免地會有所不同,唯一包裝程序,維護變得很耗時。

在macOS上廣泛使用的軟件包管理器的比較

我相信macOS上廣泛使用三種軟件包管理器:

有些人會不同意我指定 git 作為程序包管理器。從嚴格意義上講,我不會爭辯說 git 版本控制軟件,但是我認為,當 git huge結合使用時免費開放開源存儲庫的集合,這些差異似乎逐漸淡化了行話。

幾年前,我嘗試了 Homebrew ,而我的大部分意見都是基於這種經驗。簡而言之,儘管我初次嘗試 Homebrew 時曾在軟件包管理器方面有過一定的經驗,但我發現它很尷尬且不可靠。包裝位置,“反複使用 sudo ,引用啤酒製作的術語:“ brew = make?” ,什麼是“酒桶” ?,以及Ruby的使用(如果您是用戶,那很好,但我不是),這一切都導致它缺乏吸引力。但是有些人喜歡它,對於那些人,我只會說:“聚會,加思”!

此後不久,我決定試用一下 MacPorts ,此後我一直在使用它。我認為這主要是因為它使我感到理性,直接和易於使用。它為不時出現的異常情況提供了很多深度信息,但要使其富有成效,只需要幾分鐘和少量命令即可;幾個小時即可達到熟練程度。總之, MacPorts是我對純軟件包管理器的毫無保留的建議。

關於 git 的幾句話,以及為什麼我認為它是有用的“ package manager” 。作為版本控制工具, git 是一個複雜的軟件,需要花費很多精力才能掌握。您可以通過仔細閱讀 git 的許多 man 頁及其各個子公司來了解這一點。但是,使用它來“安裝”和更新託管在 git 存儲庫(例如, GitHub)上的軟件包僅需要幾個命令。我覺得它在兩種情況下主要有用:

  1. 對於MacPorts上不可用的軟件包(腳本,文檔等)
  2. 您希望對其進行編碼更改的軟件包&自己編譯
  3. ol>
Italian Philosophers 4 Monica
2020-09-02 01:29:17 UTC
view on stackexchange narkive permalink

出於安全考慮,我傾向於更多地使用macports / homebrew,而不是官方安裝程序。

在許多事件中,軟件提供商/供應商的服務器受到攻擊,惡意軟件被注入了下載文件中。

很有可能在macports / homebrew上也發生這種情況,但是區別主要在於,那些存儲庫的管理員期望持續不斷的惡意行為,並且可以期望他們有一定的專門知識來阻止壞人。也有很多眼球。如果情況變得更糟,由於流量大,其他人很有可能在我之前的macports / homebrew中遇到問題。

主要編寫某些軟件包的公司/開發人員將主要具有編寫其軟件而不是保護其下載服務器的專業知識。現在,儘管它們中的大多數可能仍然做得很好,但是您必須依靠所有它們正確地完成工作,而不是僅僅只有1-2個,macports和自製軟件。一旦受到威脅,它可能會在人們意識到這一點之前保持一段時間。

您還可以快速運行某種形式的端口過期報告,以捕獲需要修補的內容。

一天結束時,每次安裝某些東西時,您都會承受一定程度的風險。 @benwiggy的警告語在這裡完全正確。

mmmmmm
2020-09-02 23:42:09 UTC
view on stackexchange narkive permalink

這取決於我不會給出一個答案,除非不要混合自製軟件和個人安裝軟件。

但是,如果您使用Homebrew,則不能在node之類的情況下使用官方安裝程序。這是因為自製程序和節點都想使用/ usr / local,這是安裝第三方的最常見位置 Unix之類的軟件,例如操作系統。默認情況下,機架構建軟件(例如GNU的自動工具)安裝在此處,因此大多數安裝程序會將其放置在此處。如果您在該目錄中安裝了第三方軟件,自製軟件可能會引起混淆,請參閱此處有關brew doctor輸出的問題。

其他軟件包管理器安裝在其他目錄中,以便允許/ usr // local使用。Macports默認使用/ opt,但可以使用其他目錄。Fink使用/ sw



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 4.0許可。
Loading...