如何在 Linux 上真正安裝 tar.gz 文件 - 如何管理手動安裝(或獨立)的應用程序?
我看到所有這些解釋包和.debs的連結……我知道……並且有很多kludges可以讓tar.gz文件正常工作(例如:Java的update-alternatives或手動將文件放入/usr/local/ bin(或其他地方,我從幾個小時的搜尋中推斷出))。如果包如此智能,那麼包或 .debs/rpms 中可用的 Linux 應用程序怎麼這麼少?
我是以新使用者的身份發言;我知道專家可能更了解它(我想我可以下載 Eclipse 的可編譯版本?)。就像 netbeans 和 chrome 一樣
.sh
,eclipse 是一個普通的、可啟動的目錄,Java 需要這個update-alternatives
業務,但我認為它不會將自己註冊到 Ubuntu/Debian 的“程序列表”中(只是作為命令註冊)等等。(我知道這些是有時在儲存庫中可用,但我只是很困惑為什麼下載頁面沒有正確的解釋)。長話短說:如果下載或編譯 tar.gz 文件,我如何將其註冊到系統?
update-alternatives
似乎將其註冊為命令,在 Ubuntu 中,它沒有顯示在搜尋欄中。在 Debian 中,我可以手動添加 GNOME 2 啟動器的快捷方式。但我真的應該做什麼?編輯:
因此,在對新解決方案進行了更多嘗試之後,我可以細化我的“問題”:
我應該如何管理我手動安裝的程序?到目前為止,Firefox 和 Eclipse 是我唯一的例子(我沒有下載很多東西)。他們都可以用完我喜歡的盒子。除了,我應該在哪里安裝它們?我看到 Eclipse 有它自己的說明,但我寧願以同樣的方式完成我所有的“手動包”。
- 經過一番研究,我決定將這些程序放入
/usr/local/bin
.- 從如何安裝 eclipse開始,我想在啟動器中顯示一些東西,我需要
xxx.desktop
在~/.local/share/applications/
. 這個 .desktop 文件的名稱重要嗎?- 帶有自動工具的東西(我尋找一個
configure
或unix/configure
文件)會很好。我應該使用一些研究點CheckInstall
來跟踪所有這些。- 我應該
update-alternatives
用來註冊路徑。從這個java 執行緒,看起來我創建了一個來自/usr/bin/java
to的連結/usr/lib/jvm/jdk...
。當我安裝這些“獨立”應用程序(如 Eclipse 或 Firefox)時,我是否應該始終連結到/usr/bin/[app]
?如果斷言 1 是真的,我會做類似的事情sudo update-alternatives --install "/usr/bin/[app]" "[app]" "/usr/local/bin/[app]" 1
這些說明是否正確/管理手動安裝的好方法?還有其他我應該遵循的步驟嗎?其他建議?
為什麼很多應用程序在包 repos 中不可用?
可能有很多原因:
- 沒有人費心打包應用程序。
- 不允許任何人打包應用程序(如甲骨文堅持作為唯一分發 Java 的人)。
- 該軟體包是根據與發行版值相矛盾的許可證發布的。
- …
沒有一個單一的原因。如果你想在你的發行版的包管理器中看到你最喜歡的應用程序,你應該分別對待每個案例。嘗試與開發人員聯繫(例如在 IRC 頻道或郵件列表上)並詢問您如何幫助打包。
如何安裝壓縮包?
tarball(.tar.gz 包)可以包含任何內容。在您真正打開它之前,您無法假設如何安裝它。同樣,應該以不同的方式處理每個包。
**尋找文件!**任何(半)體面的軟體包都將提供有關如何安裝應用程序的說明。你的第一反應應該總是尋找一個名為 README、INSTALL 或類似的文本文件。查看出版商的網站也可能會有所幫助。
由於每個包都不同,因此沒有通用的方法來處理世界上的每個 tarball。這就像要求一個適用於世界上所有成分的食譜。沒有發生。
對您的系統、發行版和桌面環境有很好的了解會有所幫助,因此,如果這令人放心,那麼隨著您在 linux 世界中度過時間,事情看起來會越來越容易預測。
一個特例:Autotools
隨著項目變得越來越大,他們需要提供簡單的方法來從原始碼轉移到二進製文件,再到系統上的完整安裝。這就是為什麼他們附帶一個嵌入式建構系統,一組腳本來完成必要的工作。
在 Linux/開源/自由軟體世界中,一個建構系統得到了更廣泛的採用:GNU Autotools。如果您曾經處理過(n 個開放的)原始碼包,那麼您很有可能會使用 Autotools。
在最簡單的情況下,以下是如何安裝使用 autotools 打包的應用程序:
./configure
:將生成與您的系統相對應的 Makefile 的腳本(它還經常檢查依賴項的可用性)。make
: 根據前面生成的 Makefile 編譯原始碼。make install
:將二進製文件複製到適當的位置,創建符號連結以及開發人員定義的任何其他步驟。筆記
configure
腳本通常有很多選項,例如使用哪個編譯器或如何定義目標目錄。如果您需要靈活性,那麼值得一看./configure --help
。- 即使您確定它是 Autotools 並且您非常了解它,也請始終從閱讀文件開始(README、INSTALL、…)
回答問題中的更新
你所要求的沒有明確的答案。這裡的每個人都可能對什麼是“良好實踐”有意見,但歸根結底,只有你能找到適合你的。如果有一個簡單的答案,你就不會問這個問題。您的發行版會為您解答。
話雖這麼說,這裡有一些個人意見。
- 在我的系統上,我
/usr/local/bin
為我的包管理器安裝的包保留。我手動編譯/安裝的所有內容都進入/opt
. 這是一個細節,但它有助於避免在處理同一程序的多個版本時出現重大問題。xxx.desktop
和一般的 GUI 問題是特定於您使用的桌面環境的。如果它適用於您的系統,那就太好了。但它不能推廣到 Unix 上所有可用的環境。/usr/local/bin
具有已經在您的PATH中的優勢。如果您想使用另一個目錄(就像/opt
我建議的那樣),請務必將其包含在您的 PATH 中。如果您不知道該怎麼做,請打開終端並在終端中執行以下操作(不是最漂亮的方法,但對您的系統一無所知,我無法提出其他建議):echo 'export PATH=$PATH:/opt' >> ~/.bashrc