跟踪程序
當我安裝一個簡單的程序時,它經常使用它
make && make install
甚至沒有解除安裝目標。如果我想升級一個程序,假設它只是無縫重寫舊程序是標準協議嗎?
我如何跟踪這些程序;大多數人只是“解僱並忘記”,如果沒有給出解除安裝目標,我是否必須手動刪除所有內容?
將每個程序安裝在專用目錄樹中,並使用Stow或XStow使所有程序出現在一個公共層次結構中。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
等(如果適用)。