我正在使用 Ubuntu,透過儲存庫安裝軟體包很容易,APT 會為你完成這一切,但有時我需要透過網路安裝一些東西。
99% 的情況下,這些包都是 tarball。我讀到的所有內容都告訴我在使用存檔管理器或 tar 命令本身提取存檔後,運行 configure,然後 make,然後 make install 來建置。
但是,到目前為止我下載的所有內容都沒有為其編寫的配置腳本。或者至少看起來是這樣。
例如,我剛剛從 Java 網站下載了 JRE,希望能夠使用瀏覽器插件。
所以,現在我的 /opt 目錄中有這個巨大的檔案。以下是其內容:
對我來說,感覺 bin、lib 等應該位於不同的目錄中,這是真的還是假的?
我下載的幾乎每個 tarball 都有相同的情況。這一個不適用,但對於其他文件,我希望將該程式作為桌面上的連結提供。但是,同樣,安裝說明僅涵蓋解壓縮並給我留下一個目錄,就像上面的目錄一樣。
如果我想要圖標,我是否只需要自己在桌面資料夾中建立相應文件的連結?
我是否應該假設需要進一步配置的檔案會在安裝說明中提及,或附帶配置腳本?
編輯:我知道 JRE 在儲存庫中可用,但它說明了問題,因此請查看一般問題,而不僅僅是有關 JRE 的部分。
答案1
了解何時使用簡單的 tarball 以及何時編譯(以及所有內容的作用)非常有用
配置腳本適用於您編譯的軟體,並且可能具有涉及其他程式庫的編譯選項或選擇前綴的選項。它還確保您擁有實際編譯腳本並產生 makefile 所需的一切。 make 使用 makefile 來編譯程式。傳統上make install 將編譯的程式和關聯檔案複製到正確的位置,但我使用 checkinstall,它建立一個 deb 並安裝它。這還可以讓您共享庫和其他巧妙的東西。 「deb」或「RPM」只是為特定發行版和版本編譯的軟體,具有一組合理的設置,以及您可以自動引入所需共享庫和依賴項的知識
如果您已經編譯了它,並且沒有任何選項,並且以普通用戶身份運行該軟體,您可以將所有內容打包,進行靜態編譯。它相當於 Linux 上的「便攜式」軟體(在拇指驅動器意義上,而不是一次編寫,幾乎在任何地方編譯的意義上)。它假設您的用戶不需要額外的選項,並且一切都正常(或者您懶得正確打包它。它發生了。
雖然 HFS 對於類 Unix 系統來說是強制性的,但並不是每個人都尊重這一點。在這個具體的在這種情況下,我懷疑這種打包風格允許簡單地使用相對文件路徑,並排安裝不同版本的 java,使用 JAVA_HOME 前綴等。這完全是故意的。