為什麼Linux下無法離線安裝軟體?

為什麼Linux下無法離線安裝軟體?

為什麼Linux(桌面)沒有像Windows一樣提供下載軟體然後雙擊安裝的功能。令人煩惱的是您必須在線上安裝所有軟體。

這在技術上是不可能的還是只是設計決定?

答案1

首先,如上所述,您的假設是錯誤的:您在 Ubuntu 或我知道的任何其他 Linux 變體中離線安裝軟體。 (邊緣情況可能存在,但據我所知。)

正確的問題是“為什麼我不應該…?”或“為什麼 Ubuntu 的 vlc 軟體包不完整?”兩者都依賴對方背後的基礎知識。那麼,讓我們從情況開始。

當您獲得要在 Windows 中安裝的軟體包時,它包括一切安裝該軟體包所需的:驅動程式、子系統、支援庫(DLL) 等。不是覆蓋使用的任何類似文件通過其他包。由於包含了所需的所有內容,因此一次下載即可完成所有操作。如果您的系統沒有安裝 VLC 所需的 MP3 編解碼器,則會安裝下載的軟體包中包含的編解碼器。即使您有不同的 MP3 編解碼器,但該 VLC 不是為使用而編寫的,您仍然可以從 VLC 安裝程式中獲得另一個。

當您獲得要在 Linux 中安裝的軟體包時,它只包含該程式。不包括它可能需要的其他東西。如果 VLC 播放器需要安裝 MP3 編解碼器,那麼您也必須安裝它,否則 VLC 將無法播放 MP3 檔案。這同樣適用於套件可能列出的任何其他依賴項。

如果您進行了適當的研究,例如檢查包依賴性,您下載.deb檔案(對於 Ubuntu,或.rpm對於 RedHat 檔案),然後離線安裝所有需要的軟體包。這是一項繁重的工作,如果您錯過了某些內容,則必須返回下載並安裝它。完成後,它仍然有效,而且都是離線安裝的。

所有這些工作都是發行版的套件管理器為您處理的。如果你需要安裝每一個該軟體包的依賴項,您必須先下載所有這些軟體包。在 Windows 中,如果要安裝軟體包,則必須在安裝之前下載其所有相依性。不同之處在於 Windows 安裝程式已將所有這些依賴項捆綁到一個下載的檔案中,而 Linux 將每個套件都放在自己的檔案中。

現在,如果您在 Windows 中安裝五個不同的媒體播放器會發生什麼?幾乎所有的媒體播放器都需要係統中相同的基本庫集,例如 MP3 編解碼器、聲音系統的介面、視窗管理器的介面以及從檔案系統讀取檔案的方法等。安裝所有這些助手,因為還沒有其他東西可以安裝它們。然後,當您安裝 Banshee 時,大多數幫助程式檔案都已安裝。因此,安裝程式除了找到它們並為該程式創建指向它們的連結之外幾乎不需要做任何事情。當您安裝最後一個播放器時,無論它是什麼,很有可能所需的每個幫助文件都已經存在,並且安裝速度非常快。

如果在 Linux 中安裝五個媒體播放器會發生什麼事?幾乎是一樣的事情。如果您使用套件管理器,並觀察它的進展,您甚至會看到第一個播放器安裝的幫助程式檔案的長列表,第二個播放器的列表要短得多,第五個播放器上可能沒有。

那麼,有什麼區別呢?沒有,對吧?錯誤的。所有五個 Windows 安裝程式都將保存所有幫助程式檔案。因此,您將下載MP3 編解碼器的五個副本、WMA 編解碼器的五個副本、FLAC 編解碼器的5 個副本、視窗管理器介面的五個副本等。您將下載每個幫助文件的副本,而不是五個,並且您的頻寬使用量將更少。如果您儲存安裝程式以供日後使用,那麼您使用的磁碟空間也會少很多。此外,許多幫助程式檔案可能已經安裝,因此您不會下載或儲存任何這些檔案。

查看具有 Unundu.deb和 Windows 的兩個軟體包.exe,或.msi進行直接比較,我們得到:

-rw-r--r-- 1 gypsy users 23052120 May 11 22:35 Banshee-2.4.0.msi
-rw-r--r-- 1 gypsy users 30533688 May 11 21:49 vlc-2.2.4-win32.exe
                         --------
                 Total = 53585808
-rw-r--r-- 1 gypsy users  2731866 May 11 22:36 banshee_2.9.0+really2.6.2-7ubuntu2_amd64.deb
-rw-r--r-- 1 gypsy users  2002764 May 11 21:52 vlc_2.2.4-4_amd64.deb
                         --------
                 Total =  4734630

比較這兩個播放器的軟體包大小,Windows 的下載量大約是 Linux 的十倍。顯然,有些程序會更糟,而有些程序會更好。例如,要在 Windows 上使用 Strawberry Perl 安裝 Perl,我下載了一個 84.3 MB 的.msi檔案。要在 Linux 中安裝,我可以下載 15.6 MB 的源代碼,這只是其大小的五分之一。

為什麼會有這些差異?主要是因為哲學。在裡面Linux哲學是從 Unix 繼承而來的概念做一件事,並且把它做好。因此,套件的安裝程式不必知道如何安裝、連結和測試它所需的所有幫助程式庫,只需檢查它們是否位於應有的位置。 Firefox 的安裝程式不必安裝 OpenSSL 來檢查 HTTPS 網站證書,它只需要知道它是否有權存取它。

Linux 哲學的另一部分是選擇。這就是為什麼有如此多的 Linux 發行版可供選擇,以及為什麼您可以安裝如此多不同的視窗管理器和其他程式的部分原因。您也可以選擇要使用的 MP3 編解碼器,並且有開源版本和專有版本可供選擇。

話雖如此,在某些情況下,有人創建了一個捆綁包來一步安裝某個包或其他包。馬上想到的一個是信箱郵寄。然而,即便如此,仍然需要在線安裝,因為它會像套件管理器一樣查找並根據需要下載使其工作的其他庫。它仍然沒有將所有內容「捆綁」到一個下載中。

底線

如果你必須離線安裝,使用套件管理器為您進行排序、篩選和選擇。只需告訴它不要安裝文件,只下載它們。然後您可以離線並自行安裝。如果您想在安裝中更具冒險精神,請下載原始來源 tarball 並編譯軟體包。作為獎勵,您可能會獲得更好的表現。如果您願意,您可以將節省的磁碟空間用於更多音樂、視訊和遊戲。要真正進入“狂野的一面”,請嘗試從頭開始創建自己的 Linux,包括編譯核心本身。從零開始的Linux就是這樣一個項目,所有的步驟都會為你解決。但是,請在備用計算機上執行此操作,因為它會不是這是一個夜間安裝,一旦完成,您仍然需要做更多的事情才能恢復您習慣的視窗 GUI。

答案2

「為什麼Linux不提供這個功能」的答案是

一個日語單字,據稱意思是「你的問題無法得到回答,因為它取決於不正確的假設」。

為了證明這個不尋常的答案是合理的:

很久以前,在各種版本的 Linux 中,您就可以自行下載和安裝軟體套件(或從原始碼建置)或使用某種管理器。後者是 Windows 世界中的新內容。如果任何系統讓你必須以一種方式安裝,而不是另一種方式,那麼它肯定不是Linux。

答案3

這當然是可能的。用於安裝軟體的儲存庫通常只不過是一個以檔案形式提供套件的 ftp/http 伺服器。對於基於 Debian 的發行版,這些是 .deb 檔案。您可以下載這些並離線安裝。

通常,套件管理器甚至提供“僅下載”選項。

通常,您在線上使用套件管理器,因為它會處理依賴項(需要安裝才能使實際想要的程式工作的程式/庫)並檢查簽名,以便沒有人可以為您提供修改過的、可能是惡意的、 包。

相關內容