紅聯Linux門戶
Linux幫助

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

發布時間:2018-03-22 15:44:05來源:linux.cn作者:MjSeven
目的
使用 GNU Stow 輕松管理從源代碼安裝的程序和點文件(注:點文件,即以 . 開頭的文件,在 *nix 下默認為隱藏文件,常用于存儲程序的配置信息。)
 
要求
root 權限
 
難度
簡單
 
約定
# - 給定的命令要求直接以 root 用戶身份或使用 sudo 命令以 root 權限執行
$ - 給定的命令將作為普通的非特權用戶來執行
 
介紹
有時候我們必須從源代碼安裝程序,因為它們也許不能通過標準渠道獲得,或者我們可能需要特定版本的軟件。 GNU Stow 是一個非常不錯的符號鏈接工廠程序,它可以幫助我們保持文件的整潔,易于維護。
 
獲得 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 幫助頁。
 
詳解如何用源代碼安裝軟件,以及如何卸載它:http://www.1851002.live/linux/33039.html
ubuntu16.04上用源代碼安裝ICE:http://www.1851002.live/linux/30098.html
手動編譯源代碼安裝GR GSM:http://www.1851002.live/linux/22728.html
CentOS 6.4用源代碼安裝LAMP環境:http://www.1851002.live/linux/11472.html
CentOS 6.4用源代碼安裝LNMP環境:http://www.1851002.live/linux/11471.html
贵州体彩11选5查询号码