Software-Installation

跟踪程序

  • July 19, 2017

當我安裝一個簡單的程序時,它經常使用它make && make install甚至沒有解除安裝目標。

如果我想升級一個程序,假設它只是無縫重寫舊程序是標準協議嗎?

我如何跟踪這些程序;大多數人只是“解僱並忘記”,如果沒有給出解除安裝目標,我是否必須手動刪除所有內容?

將每個程序安裝在專用目錄樹中,並使用StowXStow使所有程序出現在一個公共層次結構中。Stow 創建從程序特定目錄到公共樹的符號連結。

更詳細地說,選擇一個頂級目錄,例如/usr/local/stow. 將每個程序安裝在/usr/local/stow/PROGRAM_NAME. 例如,安排將其執行檔安裝在 中/usr/local/stow/PROGRAM_NAME/bin,將其手冊頁安裝在/usr/local/stow/man/man1等等。如果程序使用 autoconf,則執行./configure --prefix /usr/local/stow/PROGRAM_NAME. 執行後make install,執行stow

./configure --prefix /usr/local/stow/PROGRAM_NAME
make
sudo make install
cd /usr/local/stow
sudo stow PROGRAM_NAME

現在您將擁有如下符號連結:

/usr/local/bin/foo -> ../stow/PROGRAM_NAME/bin/foo
/usr/local/man/man1/foo.1 -> ../../stow/PROGRAM_NAME/man/man1/foo.1
/usr/local/lib/foo -> ../stow/PROGRAM_NAME/lib/foo

通過列出目錄的內容,您可以輕鬆跟踪已安裝的程序stow,並且您始終知道文件屬於哪個程序,因為它是指向該程序目錄下位置的符號連結。通過執行stow -D PROGRAM_NAME然後刪除程序的目錄來解除安裝程序。您可以通過執行使程序暫時不可用stow -D PROGRAM_NAME(執行stow PROGRAM_NAME以使其再次可用)。

如果您希望能夠在同一程序的不同版本之間快速切換,請使用/usr/local/stow/PROGRAM_NAME-VERSION作為程序目錄。要從版本 3 升級到版本 4,請安裝版本 4,然後執行stow -D PROGRAM_NAME-3; stow PROGRAM_NAME-4.

舊版本的 Stow 並沒有超出我在這個答案中描述的基礎知識。較新的版本以及 XStow(最近沒有維護)具有更高級的功能,例如忽略某些文件的能力,更好地處理 stow 目錄之外的現有符號連結(例如man -> share/man),自動處理一些衝突(當兩個程序提供相同的文件)等。

如果您沒有或不想使用 root 訪問權限,您可以在主目錄下選擇一個目錄,例如~/software/stow. 在這種情況下,添加~/software/bin到您的PATH. 如果man沒有自動找到手冊頁,請添加~/software/man到您的MANPATH. 添加~/software/info到您的INFOPATH、添加到~/software/lib/python您的PYTHONPATH等(如果適用)。

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