歡迎光臨
每天分享高質量文章

如何使用 GNU Stow 來管理從原始碼安裝的程式和點檔案 | Linux 中國

有時候我們必須從原始碼安裝程式,因為它們也許不能透過標準渠道獲得,或者我們可能需要特定版本的軟體。 GNU Stow 是一個非常不錯的符號連結工廠(symlinks factory)程式,它可以幫助我們保持檔案的整潔,易於維護。
— Egidio Docile


致謝
編譯自 | https://linuxconfig.org/how-to-use-gnu-stow-to-manage-programs-installed-from-source-and-dotfiles 
 作者 | Egidio Docile
 譯者 | MjSeven ? ? 共計翻譯:12 篇 貢獻時間:50 天

目的

使用 GNU Stow 輕鬆管理從原始碼安裝的程式和點檔案(LCTT 譯註:點檔案dotfile,即以 . 開頭的檔案,在 *nix 下預設為隱藏檔案,常用於儲存程式的配置資訊。)

要求

◈ root 許可權

難度

簡單

約定

◈ # – 給定的命令要求直接以 root 使用者身份或使用 sudo 命令以 root 許可權執行
◈ $ – 給定的命令將作為普通的非特權使用者來執行

介紹

有時候我們必須從原始碼安裝程式,因為它們也許不能透過標準渠道獲得,或者我們可能需要特定版本的軟體。 GNU Stow 是一個非常不錯的符號連結工廠symlinks factory程式,它可以幫助我們保持檔案的整潔,易於維護。

獲得 stow

你的 Linux 發行版本很可能包含 stow,例如在 Fedora,你安裝它只需要:

  1. # dnf install stow

在 Ubuntu/Debian 中,安裝 stow 需要執行:

  1. # apt install stow

在某些 Linux 發行版中,stow 在標準庫中是不可用的,但是可以透過一些額外的軟體源(例如 RHEL 和 CentOS7 中的EPEL )輕鬆獲得,或者,作為最後的手段,你可以從原始碼編譯它。只需要很少的依賴關係。

從原始碼編譯

最新的可用 stow 版本是 2.2.2。原始碼包可以在這裡下載:https://ftp.gnu.org/gnu/stow/

一旦你下載了原始碼包,你就必須解壓它。切換到你下載軟體包的目錄,然後執行:

  1. $ tar -xvpzf stow-2.2.2.tar.gz

解壓源檔案後,切換到 stow-2.2.2 目錄中,然後編譯該程式,只需執行:

  1. $ ./configure

  2. $ make

最後,安裝軟體包:

  1. # make install

預設情況下,軟體包將安裝在 /usr/local/ 目錄中,但是我們可以改變它,透過配置指令碼的 --prefix 選項指定目錄,或者在執行 make install 時新增 prefix="/your/dir"

此時,如果所有工作都按預期工作,我們應該已經在系統上安裝了 stow

stow 是如何工作的?

stow 背後主要的概念在程式手冊中有很好的解釋:

Stow 使用的方法是將每個軟體包安裝到自己的目錄樹中,然後使用符號連結使它看起來像檔案一樣安裝在公共的目錄樹中

為了更好地理解這個軟體的運作,我們來分析一下它的關鍵概念:

stow 檔案目錄

stow 目錄是包含所有 stow 軟體包的根目錄,每個包都有自己的子目錄。典型的 stow 目錄是 /usr/local/stow:在其中,每個子目錄代表一個軟體包。

stow 軟體包

如上所述,stow 目錄包含多個“軟體包”,每個軟體包都位於自己單獨的子目錄中,通常以程式本身命名。包就是與特定軟體相關的檔案和目錄串列,作為一個物體進行管理。

stow 標的目錄

stow 標的目錄解釋起來是一個非常簡單的概念。它是包檔案應該安裝到的目錄。預設情況下,stow 標的目錄被視作是呼叫 stow 的目錄。這種行為可以透過使用 -t 選項( --target的簡寫)輕鬆改變,這使我們可以指定一個替代目錄。

一個實際的例子

我相信一個好的例子勝過 1000 句話,所以讓我來展示 stow 如何工作。假設我們想編譯並安裝 libx264,首先我們克隆包含其原始碼的倉庫:

  1. $ git clone git://git.videolan.org/x264.git

執行該命令幾秒鐘後,將建立 x264 目錄,它將包含準備編譯的原始碼。我們切換到 x264目錄中並執行 configure 指令碼,將 --prefix 指定為 /usr/local/stow/libx264 目錄。

  1. $ cd x264 && ./configure --prefix=/usr/local/stow/libx264

然後我們構建該程式並安裝它:

  1. $ make

  2. # make install

x264 目錄應該建立在 stow 目錄內:它包含了所有通常直接安裝在系統中的東西。 現在,我們所要做的就是呼叫 stow。 我們必須從 stow 目錄內執行這個命令,透過使用 -d 選項來手動指定 stow 目錄的路徑(預設為當前目錄),或者透過如前所述用 -t 指定標的。我們還應該提供要作為引數儲存的軟體包的名稱。 在這裡,我們從 stow 目錄執行程式,所以我們需要輸入的內容是:

  1. # stow libx264

libx264 軟體包中包含的所有檔案和目錄現在已經在呼叫 stow 的父目錄 (/usr/local) 中進行了符號連結,因此,例如在 /usr/local/ stow/x264/bin 中包含的 libx264 二進位制檔案現在符號連結在 /usr/local/bin 之中,/usr/local/stow/x264/etc 中的檔案現在符號連結在 /usr/local/etc 之中等等。透過這種方式,系統將顯示檔案已正常安裝,並且我們可以容易地跟蹤我們編譯和安裝的每個程式。要反轉該操作,我們只需使用 -D選項:

  1. # stow -d libx264

完成了!符號連結不再存在:我們只是“解除安裝”了一個 stow 包,使我們的系統保持在一個乾凈且一致的狀態。 在這一點上,我們應該清楚為什麼 stow 還可以用於管理點檔案。 通常的做法是在 git 倉庫中包含使用者特定的所有配置檔案,以便輕鬆管理它們並使它們在任何地方都可用,然後使用 stow 將它們放在適當位置,如放在使用者主目錄中。

stow 還會阻止你錯誤地改寫檔案:如果標的檔案已經存在,並且沒有指向 stow 目錄中的包時,它將拒絕建立符號連結。 這種情況在 stow 術語中稱為衝突。

就是這樣!有關選項的完整串列,請參閱 stow 幫助頁,並且不要忘記在評論中告訴我們你對此的看法。


via: https://linuxconfig.org/how-to-use-gnu-stow-to-manage-programs-installed-from-source-and-dotfiles

作者:Egidio Docile[2] 譯者:MjSeven 校對:wxy

本文由 LCTT 原創編譯,Linux中國 榮譽推出

贊(0)

分享創造快樂