花蝴蝶1024手机论坛:誰說 tar 檔程式無法管理? --- 臥龍小三

来源:百度文库 编辑:九乡新闻网 时间:2024/04/29 02:02:23
  誰說 tar 檔程式無法管理? 作者: 臥龍小三 台南縣教育網路中心
Copyright © 2003 OLS3 04/08/2003 v1.0



誰說 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 目錄之中。

 

不過,這至少有以下缺點:

 

 

  1. 安裝之後,要移除此一套件程式不易。(你知道、記得當初安裝了那些檔案,這些檔案放置何處嗎?)

  2. 往後若有新版的程式,雖說可以再次安裝把舊檔蓋過去,但萬一新版的檔案組成改變了,命名方式不同,那麼就會有一些垃圾檔案殘存在您的主機中,時日一久,安裝的套件一多,可能會發生一些意想不到的事情喔?比如執行某程式忽然出現莫明其妙的情況。

 

這是 tar 檔安裝模式,長期以來為人所垢病的地方。

 


一些解決方案

 

為了解決這樣的困擾,許多平台出現了進步的套件管理程式,如此:

 

 

  • FreeBSD 的 pkg

  • Solaris 的 pkg

  • RedHat / Mandrake 中的 RPM

  • Debian 中的 deb。

 

這些套件管理程式,共同的特徵是:

 

利用簡單資料庫的型式來記錄套件的安裝位置及版本資訊、套件相依關係。

 

優點則是:套件程式可以做安裝、查詢、更新、移除等管理動作。

 

對主機管理人員而言,不啻是一項莫大的福音。

 

 


並非萬靈丹

 

不過, 套件管理程式也是有缺點的:

 

 

  1. 以資料庫來記錄套件是有風險的,萬一資料庫損壞了、不見了,那對不起,您安裝的程式在管理上就有危險囉!

  2. 安裝套件之間經常有相依性,有時也不容易安裝和移除。

  3. 並不是所有的平台都有套件安裝管理程式

  4. 新版的程式出來了,但這些相關的套件格式一直沒有人包出來,那麼只能 "乾搭願"(台語:眼睜睜地渴望之意) 囉!

 

看來,方便的設計也一定會帶來某種程度的不便乎?

 

"太方便" 也是 "不方便" 的一種!:-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 也是有限制的,它至少有以下缺點:

 

 

  1. stow 無法處理不同 tar 檔程式之間的相依性,比如 A 這支 tar ball 可能需要 B 這支 tar ball

  2. stow 無法全自動更新,若相同目錄下存在有相同檔名,stow 不會強制覆蓋過去。

  3. 對大型的 tar 檔程式,stow 管理有一點問題,比如 mysql,所以,像這類的 tar 檔程式,不建議您使用 stow。

 


結語

 

沒有什麼事是不可能的。誰說 tar 檔程式無法管理?

 

希望最美,努力及創意便能相隨。:-)

 


參考資源

 

 

 

  1. http://www.gnu.ai.mit.edu/software/stow/stow.html

  2. http://savannah.gnu.org/projects/stow

  3. 工具程式的編譯安裝:http://linux.tnc.edu.tw/techdoc/install_tools.htm

 


知識共享

 

希望這份文件對台南縣的中小學能有所助益。

 

OLS3 敬上