Linux

在 $HOME 中安裝較新版本的應用程序,無需 root 訪問權限並連結到已安裝的應用程序

  • January 6, 2019

我有這個沒有 root 訪問權限的 linux 機器和一個非常舊的 emacs,所以我下載了最新版本並建構如下:

  • 下載到$HOME/SRC
  • $HOME/BLD配置和內置--prefix=$HOME
  • makemake install

所以這會bin在我的主目錄中創建一個文件夾,這是我所期望的。

現在,當我直接從終端輸入 emacs 時,它仍然會打開舊的(如預期的那樣)。所以,我必須這樣做~/bin/emacs。我將此添加alias emacs=$HOME/bin/emacs到我的.bash_profile哪個作品中。但我也可以添加~/bin$PATH. 但是,不太確定推薦哪一個。並且 2 個版本的 emacs 是否可以在沒有任何衝突的情況下工作,例如~/.emacs每次打開不同版本時都共享和覆蓋。

在已經存在舊版本的情況下,如果我遵循的步驟是正確的,那麼這是在沒有 root 訪問權限的情況下安裝新應用程序的最佳方法。

調整你的PATH. 它簡化了執行,按預期工作,並且一旦您使用$HOMEas 前綴安裝更多應用程序,它們都會按預期工作。我會在我的 RC 文件中做這樣的事情:

PATH=$HOME/bin:$PATH
LD_RUN_PATH=$HOME/lib:$LD_RUN_PATH
export PATH LD_RUN_PATH

設置LD_RUN_PATH應該允許本地安裝的 DSO 也可以工作。

到目前為止,您安裝 emacs 所做的工作與在多使用者環境中所做的工作幾乎相同。

澄清:Unix 中的路徑(以及其他使用它們的軟體,從 DOS 到 TeX)就像位置列表一樣,從左到右搜尋。在 Unix 上,我們使用冒號 ( :) 來分隔條目。如果您有一個PATHlike /usr/local/bin:/bin:/usr/bin,並且您正在尋找一個名為 的程序foo,則會按順序搜尋這些路徑:

  1. /usr/local/bin/foo
  2. /bin/foo
  3. /usr/bin/foo

使用找到的第一個。因此,根據您插入目錄的確切位置,您可以使已安裝的二進製文件“覆蓋”其他文件。從概念上講,傳統上的順序PATH是特定於泛型或本地到全域的。(當然,我們經常添加奇怪的路徑來支持自包含的第三方應用程序,這可以打破這個類比)

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