Compiling

為什麼使用者必須編譯原始碼才能在 Linux 上安裝應用程序?

  • May 4, 2018

我不明白為什麼我們這些 Linux 使用者必須編譯原始碼才能安裝應用程序?為什麼它不能像 Windows 平台一樣,一切都準備好作為二進制包服務?

當然,請大家不要誤會,我抱怨的是臉編譯執行。事實上我很喜歡它,它對我練習命令行,更深入地理解程式過程有很大幫助。但我的朋友和家人不這麼認為。好吧,他們的觀點是他們不是程序員。事實上,我們確實有一些發行版,例如 Ubuntu 及其家族,它們易於安裝應用程序。但並不是所有在網際網路上找到的應用程序都能做到這一點,即使是在 Ubuntu 或 Mint 上也是如此。

那麼,為什麼我們必須編譯原始碼來安裝應用程序呢?(如果我能對“編譯原始碼但不使用二進制包有什麼好處?”有一個額外的答案,那您將非常好意)

正如@ivanivan 回答的那樣,很少有發行版需要您從原始碼編譯(Gentoo 會自動執行該過程。)傳統上,首選原始碼的主要原因是 Unix 的風格和 Unix 系統之間存在的體系結構存在極大差異(系統V vs. BSD,或 MIPS vs. Intel 作為範例),但我不得不從頭開始編譯的最大原因是當我要安裝的程序不包含在儲存庫中或者有更新檔可以修復或添加時一個特定的功能。

即使程序不在儲存庫中,通常也有.deb可以.rpm在大多數發行版上下載和安裝的軟體包:這是 Java 的範例。然後,該發行版將努力追踪依賴關係(並在必要時更新它們。)在 Linux 和 Windows 中安裝這些軟體包的主要區別在於,安裝程序通常與 Linux 中的軟體包是分開的,並且在功能上是獨立的Windows(即使他們使用 Windows 安裝系統;MSI 安裝程序直接使用 Windows 的安裝程序。)

誰說必須的?好的,我會告訴你一些發行版需要它,主要是 Linux From Scratch 和 Gentoo。

但是 98% 的情況下,我可以通過我的發行版儲存庫和包管理器或從第 3 方儲存庫(即 Java 的 webupd8te 團隊等)獲得我想要的東西

為了您的獎勵 - 您可以編譯和定位特定架構(即 i686 與 i486 指令)或包含或刪除特定選項。或者,也許您希望自己的版本做一些特別的事情,所以您獲取原始碼,進行一些更改,編譯和安裝。

引用自:https://unix.stackexchange.com/questions/441812