誰說 tar 檔程式無法管理?

来源:百度文库 编辑:神马文学网 时间:2024/04/30 11:44:22
誰說 tar 檔程式無法管理?
作者: 臥龍小三
台南縣教育網路中心
Copyright © 2003 OLS3 04/08/2003 v1.0
Table of Contents
誰說 tar 檔程式無法管理?
前言
一些解決方案
並非萬靈丹
引進 stow
用例
先安裝 stow:
安裝範例程式 nano:
告知 stow,你要安裝 nano 啦:
那麼,如何移除 nano-1.0.9 呢?
stow 的限制
結語
參考資源
知識共享
誰說 tar 檔程式無法管理?
 
我經常被問到一個問題,tar 檔程式究竟有沒有辦法來管理?或者,安裝之後,如何移除?
 
有人竟宣稱 tar 檔是無法管理的。
 
其實不然,辦法是人想的,而且解決的方法,經常只是一種簡單基本觀念的運用而已。
 
前言
 
以往 tar ball 程式(如 nano-1.0.9.tar.gz )是 UNIX/Linux/BSD 等平台中程式作者發行程式的主力格式。
 
tar 檔程式的安裝方法,並不困難,大概只要解開 tar.gz / tar.bz2 之後,下:
 
./configure
 
make
 
make install
 
就可以安裝成功!
 
其預設的安裝路徑,大致上,均遵守一個約定俗成的規定:即放在 /usr/local 目錄之中。
 
不過,這至少有以下缺點:
 
 
安裝之後,要移除此一套件程式不易。(你知道、記得當初安裝了那些檔案,這些檔案放置何處嗎?)
往後若有新版的程式,雖說可以再次安裝把舊檔蓋過去,但萬一新版的檔案組成改變了,命名方式不同,那麼就會有一些垃圾檔案殘存在您的主機中,時日一久,安裝的套件一多,可能會發生一些意想不到的事情喔?比如執行某程式忽然出現莫明其妙的情況。
 
這是 tar 檔安裝模式,長期以來為人所垢病的地方。
 
一些解決方案
 
為了解決這樣的困擾,許多平台出現了進步的套件管理程式,如此:
 
 
FreeBSD 的 pkg
Solaris 的 pkg
RedHat / Mandrake 中的 RPM
Debian 中的 deb。
 
這些套件管理程式,共同的特徵是:
 
利用簡單資料庫的型式來記錄套件的安裝位置及版本資訊、套件相依關係。
 
優點則是:套件程式可以做安裝、查詢、更新、移除等管理動作。
 
對主機管理人員而言,不啻是一項莫大的福音。
 
 
並非萬靈丹
 
不過, 套件管理程式也是有缺點的:
 
 
以資料庫來記錄套件是有風險的,萬一資料庫損壞了、不見了,那對不起,您安裝的程式在管理上就有危險囉!
安裝套件之間經常有相依性,有時也不容易安裝和移除。
並不是所有的平台都有套件安裝管理程式
新版的程式出來了,但這些相關的套件格式一直沒有人包出來,那麼只能 "乾搭願"(台語:眼睜睜地渴望之意) 囉!
 
看來,方便的設計也一定會帶來某種程度的不便乎?
 
"太方便" 也是 "不方便" 的一種!:-Q
 
OK,分析完二者的情況,接下來,為您介紹如何來管理 tar 檔安裝,使您在管理套件上,多一種方便的選擇。
 
引進 stow
 
stow 是 GNU 計劃中的一部份,遵守 GPL 版權,它主要的用途便是拿來管理 tar 檔程式的安裝。
 
stow 的想法很單純,它憑藉的法寶只有二個:Perl 和 softlink。
 
Perl 是網管人員不可不知不會的必備語言,不會寫一點兒,也要會用一點兒。
 
softlink 則是 UNIX/Linux/BSD 中 "機"家必備 的良方。:-)
 
stow 的作法是:
 
將 tar 檔程式,集中安裝在某一個目錄下,比如 /usr/local/stow 中,然後將 tar 檔必要安裝的程式、設定檔、man檔、locale檔、info檔等,使用 softlink 的方式,連接到其原本約定俗成的位置,比如 /usr/local/bin、/usr/local/man、/usr/local/etc、、/usr/local/info、/usr/local/share/locale等,使其看起來好像真的安裝在這些目錄一樣。
 
實際上,tar 檔程式的實際路徑仍完整地存在於 /usr/local/stow 中。若欲移除 tar 檔程式,只要將這些 softlink 切斷即可,而這件工作,正是 stow 可以為您服務的地方。
 
用例
 
以下開始為您簡介 stow 的用法,這裡以安裝 nano 這個文字編輯器為例。
 
先安裝 stow:
 
您可以到 ftp2.tnc.edu.tw/pub/gnu/stow 或各大 GNU FTP site 中抓取 stow。
 
筆者寫這篇講義時,stow 的最新版是 1.3.3。
 
簡介步驟如下:
 
ncftp ftp2.tnc.edu.tw
 
cd pub/gnu/stow
 
get stow-1.3.3.tar.gz
 
tar xvzf stow-1.3.3.tar.gz
 
cd stow-1.3.3
 
./configure
make
make install
 
然後,手動開設一個目錄,用來集中存放往後安裝的 tar 檔程式。
 
mkdir /usr/local/stow
 
安裝範例程式 nano:
 
方法如下:
ncftp ftp2.tnc.edu.tw/pub/gnu/nano
get nano-1.0.9.tar.gz
tar xvzf nano-1.0.9.tar.gz
cd nano-1.0.9
接下來是最重要的地方:
./configure --prefix=/usr/local/stow/nano-1.0.9
這個步驟是指定 nano 要安裝的目的地位於 /usr/local/stow/nano-1.0.9
make
make install
 
告知 stow,你要安裝 nano 啦:
cd /usr/local/stow
stow nano-1.0.9
此時,stow 便會幫您做好 softlink 的動作,比如:
ls -la /usr/local/bin/nano
lrwxrwxrwx 1 root root 27 4?? 8 14:33 /usr/local/bin/nano -> ../stow/nano-1.0.9/bin/nano*
您看,nano 真的就好像安裝在 /usr/local/bin 中一樣,一但您執行 nano,便會自動由 softlink 的指引,找到 nano 真正的路徑 /usr/local/stow/nano-1.0.9/bin/nano。
那麼,如何移除 nano-1.0.9 呢?
很簡單!方法如下:
cd /usr/local/stow
stow -D nano-1.0.9
這樣就好啦!
若您再次查 nano 的程式路徑:
ls -la /usr/local/bin/nano
便出現找不到的情況:
ls: /usr/local/bin/nano: No such file or directory
 
因為 stow 已經幫您切斷這些 softlink 囉!
 
而 nano-1.0.9 版的所有檔案仍完好地存在於 /usr/local/stow/nano-1.0.9 目錄中。
 
若您想安裝新版的 nano,您可以把該目錄整個移除(rm -Rf /usr/local/stow/nano-1.0.9),再按上述步驟如法泡製一次即可。
 
或者,您後悔了,想再重裝一次 nano-1.0.9,只要再進入 /usr/local/stow 目錄中,
 
下 stow nano-1.0.9 即可,它又安裝回來囉!
 
您看!tar 檔程式的安裝管理,是不是很簡單呢?!
 
是誰說 tar 檔無法安裝管理來著? :-)
 
stow 的限制
 
stow 也是有限制的,它至少有以下缺點:
 
 
stow 無法處理不同 tar 檔程式之間的相依性,比如 A 這支 tar ball 可能需要 B 這支 tar ball
stow 無法全自動更新,若相同目錄下存在有相同檔名,stow 不會強制覆蓋過去。
對大型的 tar 檔程式,stow 管理有一點問題,比如 mysql,所以,像這類的 tar 檔程式,不建議您使用 stow。
 
結語
 
沒有什麼事是不可能的。誰說 tar 檔程式無法管理?
 
希望最美,努力及創意便能相隨。:-)
 
參考資源
 
 
 
http://www.gnu.ai.mit.edu/software/stow/stow.html
http://savannah.gnu.org/projects/stow
工具程式的編譯安裝:http://linux.tnc.edu.tw/techdoc/install_tools.htm
 
知識共享
 
希望這份文件對台南縣的中小學能有所助益。
 
OLS3 敬上
 
 
from: http://linux.tnc.edu.tw/techdoc/stow/book1.html