Linux

如何在 Linux 上真正安裝 tar.gz 文件 - 如何管理手動安裝(或獨立)的應用程序?

  • November 8, 2018

我看到所有這些解釋包和.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 有它自己的說明,但我寧願以同樣的方式完成我所有的“手動包”。

  1. 經過一番研究,我決定將這些程序放入/usr/local/bin.
  2. 如何安裝 eclipse開始,我想在啟動器中顯示一些東西,我需要xxx.desktop~/.local/share/applications/. 這個 .desktop 文件的名稱重要嗎?
  3. 帶有自動工具的東西(我尋找一個configureunix/configure文件)會很好。我應該使用一些研究點CheckInstall來跟踪所有這些。
  4. 我應該update-alternatives用來註冊路徑。從這個java 執行緒,看起來我創建了一個來自/usr/bin/javato的連結/usr/lib/jvm/jdk...。當我安裝這些“獨立”應用程序(如 Eclipse 或 Firefox)時,我是否應該始終連結到/usr/bin/[app]?如果斷言 1 是真的,我會做類似的事情sudo update-alternatives --install "/usr/bin/[app]" "[app]" "/usr/local/bin/[app]" 1

這些說明是否正確/管理手動安裝的好方法?還有其他我應該遵循的步驟嗎?其他建議?

為什麼很多應用程序在包 repos 中不可用?

可能有很多原因:

沒有一個單一的原因。如果你想在你的發行版的包管理器中看到你最喜歡的應用程序,你應該分別對待每個案例。嘗試與開發人員聯繫(例如在 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

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