Linux中國

如何使用 GNU Stow 來管理從源代碼安裝的程序和點文件

目的

使用 GNU Stow 輕鬆管理從源代碼安裝的程序和點文件(LCTT 譯註: 點文件 dotfile ,即以 . 開頭的文件,在 *nix 下默認為隱藏文件,常用於存儲程序的配置信息。)

要求

  • root 許可權

難度

簡單

約定

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

介紹

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

獲得 stow

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

# dnf install stow

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

# apt install stow

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

從源代碼編譯

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

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

$ tar -xvpzf stow-2.2.2.tar.gz

解壓源文件後,切換到 stow-2.2.2 目錄中,然後編譯該程序,只需運行:

$ ./configure
$ make

最後,安裝軟體包:

# 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,首先我們克隆包含其源代碼的倉庫:

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

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

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

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

$ make
# make install

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

# stow libx264

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

# 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 譯者:MjSeven 校對:wxy

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


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的郵箱地址不會被公開。 必填項已用 * 標註

    這個站點使用 Akismet 來減少垃圾評論。了解你的評論數據如何被處理

    More in:Linux中國

    Linux中國

    捐贈 Let's Encrypt,共建安全的互聯網

    隨著 Mozilla、蘋果和谷歌對沃通和 StartCom 這兩家 CA 公司處罰落定,很多使用這兩家 CA 所簽發證書的網站紛紛尋求新的證書籤發商。有一個非盈利組織可以為大家提供了免費、可靠和安全的 SSL 證書服務,這就是 Let's Encrypt 項目。現在,它需要您的幫助
    Linux中國

    關於Linux防火牆iptables的面試問答

    Nishita Agarwal是Tecmint的用戶,她將分享關於她剛剛經歷的一家公司(印度的一家私人公司Pune)的面試經驗。在面試中她被問及許多不同的問題,但她是iptables方面的專家,因此她想分享這些關於iptables的問題和相應的答案給那些以後可能會進行相關面試的人。 所有的問題和相應的答案都基於Nishita Agarwal的記憶並經過了重寫。 嗨,朋友!我叫Nishita Agarwal。我已經取得了理學學士學位,我的專業集中在UNIX和它的變種(BSD,Linux)。它們一直深深的吸引著我。我在存儲方面有1年多的經驗。我正在尋求職業上的變化,並將供職於印度的P
    Linux中國

    Lets Encrypt 已被所有主流瀏覽器所信任

    旨在讓每個網站都能使用 HTTPS 加密的非贏利組織 Lets Encrypt 已經得了 IdenTrust的交叉簽名,這意味著其證書現在已經可以被所有主流的瀏覽器所信任。從這個裡程碑事件開始,訪問者訪問使用了Lets Encrypt 證書的網站不再需要特別配置就可以得到 HTTPS 安全保護了。 Lets Encrypt 的兩個中級證書 ...