在 Linux 系統中,安裝程式通常跟傳統的 Windows 安裝軟體方式有異。你可以採用預先建置軟體包進行安裝,也可以自行編譯程式。在那些日益普及的發行版中,預先建置軟體包通常是主要的解決方案。但有時,你也可能需要從原始碼上進行編譯。這也是 Linux 作業系統的特點之一。從原始碼編譯程式可以確保程式能夠在系統中正常運行,並且具有更多的靈活性和自訂性。無論你選擇哪一種方法,都需要根據你的需求,選擇最適合你的方式。
#在Linux上安裝程式通常與Windows上傳統的安裝軟體方式有所不同。而不是從供應商的網站上下載安裝程序,文件來自於一個程序倉庫,通常根據你的Linux發行版進行自訂。你可以使用Linux軟體套件管理器或應用程式商店來存取這個倉庫。
這些倉庫中的程式由多個文件組成,並以一個歸檔格式進行打包,以便於存取和分發。例如,Debian使用DEB格式儲存和分發程式。這些打包檔案被稱為二進位套件。
#你需要一個特殊的程式來提取這些檔案並將其安裝到電腦上,通常是你的軟體套件管理器或應用程式商店。這些工具還具有其他有用的功能,例如追蹤已安裝的檔案和管理軟體更新。
較新的軟體包格式,如Flatpak和Snap,適用於不同版本的Linux,但它們仍然由預先編譯的二進位程式組成。兩者都需要圖形化的應用程式商店或基於命令列的軟體包管理器進行安裝。
#所有軟體都由稱為原始碼的文字行組成,並以特定的程式語言編寫,例如C或C 。通常情況下,你不能只將這些原始碼打包成一個存檔檔案並稱之為軟體包。這些行需要被轉換為電腦可以理解和執行的語言。
這個過程稱為編譯,最終的結果是創建出電腦可以運行的二進位。軟體包和軟體的區別在於,軟體的二進位檔案與其他檔案(如設定檔)一起儲存在一個套件中。
#從原始碼安裝程式意味著不使用軟體包管理器進行安裝。你需要編譯原始碼,並將二進位檔案複製到電腦上。
大多數情況下,你可以從諸如GitHub、GitLab或Bitbucket等託管服務上下載專案的原始程式碼。較大的程式甚至可能在個人網站上託管原始程式碼。該程式碼通常以一個歸檔格式(也稱為原始碼包)進行壓縮。
一組特殊的工具幫助自動化建置流程。在Linux桌面上,通常以一個名為make的命令列程式的形式存在。用不同語言編寫的原始程式碼需要特定的編譯器和命令將其轉換為二進位。 make程式自動化了這個過程。
為了讓這個自動化運作起來,程式提供了一個名為Makefile的文件,告訴make應該做什麼和如何編譯。如今,Makefile通常會由特殊的軟體(如CMake)自動產生。這就是你需要介入的地方。從這裡開始,你可以指定想要編譯到軟體中的具體功能。
#例如,下面的指令使用CMake為Calligra辦公室套件產生一個設定檔。創建的檔案告訴make程式只編譯Calligra的Writer元件。
cmake -DPRODUCTSET=WORDS -DCMAKE_INSTALL_PREFIX=$HOME/kde/inst5 $HOME/kde/src/calligra
完成這一步驟後,使用者只需執行make工具來編譯並將結果複製到他們的電腦上。操作步驟如下:
make make install
雖然這是編譯程式的一般模式,但還有許多其他安裝原始碼套件的方法。例如,Gentoo Linux內建了一種處理原始碼套件的方法,使得該過程更快捷、更簡單。但是建置二進位包需要比上述命令更多的步驟。
#如果你使用Linux,很可能有人預先編譯了你已安裝的軟體。這比使用原始碼包更為常見。但是為什麼會這樣呢?
1、二進位版本更容易管理
二進位套件不僅包含已編譯的安裝文件,還儲存了其他信息,使得你的套件管理器能夠輕鬆追蹤所有程式。例如,DEB檔案(Debian及其衍生版的套件格式)還包含重要訊息,如程式運行所需的其他軟體以及當前版本。
這使得安裝套件變得更加簡單,因為你不需要擔心需要哪些其他檔案才能成功運行程式。你的套件管理器可以從套件本身讀取這些信息,並自動下載所有必要的依賴項。
而當從原始碼安裝程式時,除非將程式碼編譯為獨立的二進位包,否則你將需要負責管理該軟體。你需要記住你需要哪些其他程式來使其工作,並自行安裝它們。
2、二進位版本具有更好的穩定性
負責維護套件管理器倉庫的人員往往會對二進位進行測試,並盡力修復出現的問題。這可能導致提高穩定性,因為套件維護人員可能會發現安裝原始程式碼的人可能忽略的問題。
此外,套件通常必須遵守一套嚴格的規則,以確保它們能在你的系統上運作。例如,Debian和Ubuntu都有一個政策手冊,許多其他Linux發行版也有類似的手冊。
有些程式也依賴不同版本的相同軟體相依性來運作。軟體包倉庫會盡力解決這些衝突,以免給你帶來麻煩。
#從原始碼安裝程式並不是每個人都需要做的事情,因為如果堅持使用二進位包,通常更容易維護你的電腦。儘管如此,使用這種稍微複雜一些的方式安裝程式仍然有一些優點。
1、原始碼提供最新軟體
使程式更可靠的一個缺點是需要時間來改進和修復。有時可能有可用的二進位文件,但原始程式碼會稍後提供。對於希望擁有最新和最好的軟體的人來說,他們可能願意在交換較新軟體的同時稍微犧牲一些穩定性。
雖然有一些Linux作業系統可以滿足這種需求而無需編譯程序,但它們也有一些缺點。例如,那些不經常發布固定軟體包版本的軟體在儲存庫中難以保持最新。相比之下,從原始碼安裝則不受這些限制。
這是因為二進位套件通常是根據官方發布的程式版本製作的。因此,這些版本之間的變更通常不會被考慮在內。透過從原始碼編譯自己的軟體,你可以立即從這些變更中受益。
也有可能你的Linux作業系統沒有預先為你準備好你想要的軟體。過去,這將使得從原始碼安裝是唯一的選擇。通用的軟體包格式已經改變了這一點。 Flatpak和Snap軟體包通常也比系統儲存庫更快接收更新。但仍有時候編譯是獲得所需軟體的唯一途徑。
2、你可以自己選擇功能
FFmpeg的功能 使用原始碼套件的另一個好處是你可以更掌控你安裝的程式。當從二進位軟體庫安裝時,你在自訂軟體包方面受到限制。
以FFmpeg為例,它是一個基於命令列的音視頻轉換工具。預設情況下,它帶有大量的功能,其中一些你可能從未使用過。例如,FFmpeg支援JACK音頻,儘管這個軟體通常只在生產環境中使用。
透過編譯FFmpeg,你可以移除你不需要的功能,使其更加輕巧並符合你的需求。同樣的原理也適用於其他龐大的程序。
當資源有限時,移除功能可以有效減輕負荷。難怪許多低階電腦上都使用基於Gentoo Linux的ChromeOS。 Gentoo是基於原始碼的,它編譯了許多軟體,潛在地使這些系統運作得更輕巧。
#雖然你可能不會每天都想編譯軟體包,但這是一個有用的方法。儘管如此,隨著從Snap Store和Flathub等網站提供的新的通用軟體包格式,你更不太可能需要從原始碼建置以獲得最新的軟體。
以上是Linux 下二進位套件 vs 原始碼套件:你應該選擇哪一個?的詳細內容。更多資訊請關注PHP中文網其他相關文章!