吐血整理_Linux軟體包的安裝

風吹白楊樹發表於2013-01-21

Linux軟體包,常見的格式包括有rpm,deb,tar,gz,tgz,zip,bz2等等。幾乎每個linux軟體都會提供tar的格式的軟體包,因為這種格式的軟體包任何版本的linux都支援,所以大家至少要了解tar和rpm的使用方法。至於deb可用alien工具轉換成tgz或rpm方式。bz2可用bunzip2解包即可。

一、RPM檔案的安裝

RPM 是RedHat Package Manager(RedHat軟體包管理工具)的縮寫.

  RPM檔案在Linux系統中的安裝最為簡便。以著名的影像處理軟體XV為例:   在Terminal中,基本的安裝指令如下:   rpm -i xv-3.10a-13.i386.rpm   如果你的連網速度足夠快,也可以直接從網路上安裝應用軟體,只需要在軟體的檔名前加上適當的URL路徑:   rpm -i ftp://ftp.xxx.com/xx/xx.i386.rpm   作為一個軟體包管理工具,RPM管理著系統已安裝的所有RPM程式元件的資料。我們也可以使用RPM來解除安裝相關的應用程式。   rpm -e xv   RPM的常用引數還包括:   -vh:顯示安裝進度;   -U:升級軟體包;   -qpl:列出RPM軟體包內的檔案資訊;   -qpi:列出RPM軟體包的描述資訊;   -qf:查詢指定檔案屬於哪個RPM軟體包;   -Va:校驗所有的RPM軟體包,查詢丟失的檔案;   更為詳盡的引數及其用法可以檢視RPM的幫助文件。   在X-Window中,RPM檔案的圖形化安裝及管理方式對使用者來說,顯得更為友好。在kde上先安裝好kpackage後,安裝rpm僅僅是按一下滑鼠就可以了,比windows 98更方便。但是這必須先安裝kde. 我還是介紹更常用的方法吧,仍以XV軟體為例,在Linux的檔案管理器中找到xv-3.10a-13.i386.rpm檔案之後,用滑鼠右擊它,在彈出選單中就可以找到專為RPM軟體包準備的三個指令:Show Info、Upgrade、Install。   選擇“Show Info”之後,我們將可以看到如圖所示的軟體包資訊視窗。視窗分為三個部分,頂端顯示的是軟體名、大小、建立及安裝日期以及開發者網站等相關資訊;在中間的方框內,是關於軟體的概述;而下面顯示的則是軟體包內包含的所有檔案及其路徑資訊,它會告訴你軟體包內的各個檔案將被安裝到系統的哪些目錄中, 留意這些資訊的好處是,你可以很容易地找到啟動程式的路徑。   此時點選底部的“Install”或者“Upgrade”按鈕之後,將開始進行軟體的安裝或者升級,此時還會彈出一個提示安裝進度的視窗。   RPM軟體包較之於其他型別的軟體包,有著許多優勢,但是並不是說RPM軟體的安裝都是一帆風順的。常見的錯誤包括試圖安裝一個已經安裝好了的軟體、所要安裝的軟體需要其他軟體或者系統庫檔案的支援(此時應該先行安裝這些相關軟體或者系統庫檔案)等,情形都和Windows類似。 二,tar的安裝 tar.gz、tar.Z、tgz、bz2等檔案格式要先解壓為tar後再用tar解包安裝。解壓縮及解包指令舉例簡述如下:   1.解xx.tar.gz:tar zxf xx.tar.gz   2.解xx.tar.Z:tar zxf xx.tar.Z   3.解xx.tgz:tar zxf xx.tgz   4.解xx.bz2:bunzip2 xx.bz2   5.解xx.tar:tar xf xx.tar   解包後得到的一堆檔案,通常都會存放在一個目錄裡面。視軟體作者的不同,有些會是已經編譯好的程式,更多的則是需要自己再行編譯的原始碼。進入相應目錄後,使用“ls -F -color”指令,可執行程式將會以帶“*”標記的亮綠色顯示,對於已編譯好的程式,直接鍵入帶路徑的指令行即可執行程式。 建議解壓後先閱讀說明檔案,應該先用vi等文書編輯器閱讀一下軟體目錄中的Readme、Install等重要的相關文件,在這裡你會找到軟體詳盡的編譯步驟及注意事項,可以瞭解安裝有哪些需求,有必要時還需改動編譯配置。 有些軟體包的原始碼在編譯安裝後可以用make install命令來進行解除安裝,如果不提供此功能,則軟體的解除安裝必須手動刪除。由於軟體可能將檔案分散地安裝在系統的多個目錄中,往往很難把它刪除乾淨,那你應該在編譯前進行配置,指定軟體將要安裝到目標路徑:./configure --prefix=目錄名,這樣可以使用“rm -rf 軟體目錄名”命令來進行乾淨徹底的解除安裝。與其它安裝方式相比,需要使用者自己編譯安裝是最難的,它適合於使用Linux已有一定經驗的人,一般不推薦初學者使用。 通常的編譯步驟會是這樣:   ./configure   make   make install(需要取得root身份才能執行此指令) 解除安裝可用:make uninstall 或 手動刪除   編譯完成之後,在當前目錄或者是名為src的子目錄下,可以很容易地發現軟體的可執行程式。至此,軟體的安裝便告一段落。 三、關於src原始碼檔案包   Linux軟體的原始碼src是指提供了該軟體所有程式原始碼的釋出形式,需要使用者自己編譯成可執行的二進位制程式碼bin並進行安裝,其優點是配置靈活,可以隨意去掉或保留某些功能/模組,適應多種硬體/作業系統平臺及編譯環境,缺點是難度較大,一般不適合初學者使用。   怎麼知道一個tar.gz/bz2包是二進位制檔案包呢還是原始碼包?要分辨它到底是什麼最好的辦法就是檢視包裡的檔案清單,使用命令tar ztvf .tar.gz解壓縮及解包後,進入新生成的目錄下。 原始碼包裡的檔案往往會含有種種原始碼檔案,標頭檔案.h、c程式碼原始檔.c、C++程式碼原始檔.cc/*.cpp等;而二進位制包裡的檔案則會有可執行檔案(與軟體同名的往往是主執行檔案),標誌是其所在路徑含有名為bin的目錄(僅有少數例外)。 如果是src.tar可在解包後,在新生成的目錄下編譯,方法前面已介紹過了,現在講一講src.rpm的安裝和協載:   安裝:rpm -rebuild xx.src.rpm      cd /usr/src/redhat/RPMS/      rpm -ivh *.rpm      解除安裝:rpm -e xx   說明:rpm --rebuild *.src.rpm命令將原始碼編譯並/usr/src/redhat/RPMS下生成二進位制的rpm包,然後再安裝該二進位制包即可。   1、原始碼包的安裝      tar -zvxf xx.tar.gz (解壓)      cd xx      ./configure (配置) ----./configure --help(檢視configure選項)      make (編譯)      make install (安裝)      make clean (解除安裝)    注:典型的原始碼包可以這樣安裝,但不都是這樣,如webmin 要執行其目錄下./setup.sh進入互動式配置安裝,解除安裝用uninstall程式,具體如果不清楚看要安裝的包下的README檔案,這裡提醒configure的配置需要注意。   2、RPM包的安裝      RPM軟體包的一個例子:      foo-1.0-1.i386.rpm    其中包括軟體包的名稱(foo),版本號(1.0),發行號(1),和硬體平臺(i386)。  (1)安裝    # rpm -ivh foo-1.0-1.i386.rpm    foo    #######################    A. 軟體包已被安裝    # rpm -ivh foo-1.0-1.i386.rpm    foo package foo-1.0-1 is already installed    error: foo-1.0-1.i386.rpm cannot be installed    如果你仍舊要安裝該軟體包,你可以在命令列上使用--replacepkgs 選項,這將忽略該錯誤資訊。    B. 檔案衝突    如果要安裝的軟體包中有一個檔案已在安裝其它軟體包時安裝,會出現以下錯誤資訊:    # rpm -ivh foo-1.0-1.i386.rpm    foo /usr/bin/foo conflicts with file from bar-1.0-1    error: foo-1.0-1.i386.rpm cannot be installed    要想讓RPM 忽略該錯誤資訊, 請使用--replacefiles 命令列選項    C.未解決依賴關係    RPM軟體包可能依賴於其它軟體包, 在安裝了特定的軟體包之後才能安裝該軟體包。    # rpm -ivh bar-1.0-1.i386.rpm    failed dependencies:    foo is needed by bar-1.0-1    你必須安裝完所依賴的軟體包,才能解決這個問題。如果想強制安裝 (但是,這樣安裝後的軟體包未必能正常執行),請使用-nodeps 命令列選項。   (2) 解除安裝      # rpm -e foo    注意:這裡使用軟體包的名字foo,而不是軟體包檔案的名字“foo-1.0-1.i386.rpm”.    如果其它軟體包依賴於你要解除安裝的軟體包,解除安裝時則會產生錯誤資訊。如:      # rpm -e foo      removing these packages would break dependencies:      foo is needed by bar-1.0-1    要想RPM忽略該錯誤資訊繼續解除安裝的話 (但是,依賴於該軟體包的程式可能無法執行), 請使用-nodeps 命令列選項。   (3)升級      # rpm -Uvh foo-2.0-1.i386.rpm      foo      ###############################      當使用舊版本的軟體包來升級新版本的軟體時,會產生以下錯誤資訊:      # rpm -Uvh foo-1.0-1.i386.rpm      foo package foo-2.0-1 (which is newer) is already installed      error: foo-1.0-1.i386.rpm cannot be installed    要使RPM 堅持這樣“升級”,可使用--oldpackage 命令列引數。   (4)查詢      # rpm -q foo      foo-2.0-1      軟體包指定選項:      -a 查詢所有已安裝的軟體包.      -f 將查詢包含有檔案的軟體包      -p     查詢軟體包檔名為的軟體包     資訊選擇選項:      -i 顯示軟體包資訊,如描述, 發行號, 尺寸, 構建日期, 安裝日期, 平臺, 以及其它各類資訊。      -l 顯示軟體包中的檔案列表。      -s 顯示軟體包中所有檔案的狀態。      -d 顯示被標註為文件的檔案列表(man 手冊, info 手冊, README's, etc).      -c 顯示被標註為配置檔案的檔案列表。這些是要在安裝完畢以後加以定製的檔案(sendmail.cf, passwd, inittab, etc)。     對於那些要顯示檔案列表的檔案,可以增加-v 命令列選項以獲得如同 ls -l 格式的輸出。   (5)驗證     驗證軟體包是通過比較軟體包中安裝的檔案和軟體包中的原始檔案資訊來進行的。除了其它一些東西,驗證主要是比較檔案的尺寸, MD5 校驗碼, 檔案許可權, 型別, 屬主和使用者組等。      rpm -V命令用來驗證一個軟體包,如      rpm -V foo     驗證包含特定檔案的軟體包:      rpm -Vf /bin/vi     驗證所有已安裝的軟體包:      rpm -Va     根據一個RPM來驗證某個軟體包:      rpm -Vp foo-1.0-1.i386.rpm     如果你擔心RPM資料庫已被破壞,就可以使用這種方式。如果一切校驗均正常將不會產生任何輸出。如果有不一致的地方,就會顯示出來。     輸出格式是8位長字串,c 用以指配置檔案,接著是檔名. 8位字元的每一個用以表示檔案與RPM資料庫中一種屬性的比較結果。“.” (點)表示測試通過。     以下字元表示某種測試的失敗:      5 MD5 校驗碼      S 檔案尺寸      L 符號連線      T 檔案修改日期      D 裝置      U 使用者      G 使用者組      M 模式e (包括許可權和檔案型別)     如果有資訊輸出,應當認真加以考慮,是刪除,重新安裝,還是修正出現的問題。    6)RPM應用的幾個例子     A. 如你誤刪了一些檔案, 但是不能肯定到底刪除了哪些檔案。如果你想驗證一下整個系統看看都丟失了哪些檔案的話,可以鍵入:      rpm –Va     B.若是一些檔案丟失了或已被損壞, 就可以重新安裝或先解除安裝再安裝該軟體包。如果碰到了一個自己不認識的檔案,要想查處它屬於哪個軟體包,可以輸入以下命令:      rpm -qf /usr/X11R6/bin/xjewel     而輸出的結果會是:      xjewel-1.6-1     C. 如果發生綜合以上兩個例子的情況,如文/usr/bin/paste出了問題。你想驗證一下擁有該檔案的軟體包,可又不知道軟體包的名字,這時可以簡單的鍵入:      rpm -Vf /usr/bin/paste     這樣相應的軟體包就會被驗證。     D. 如果你想了解一個正在使用的程式的詳細資訊,可以鍵入如下命令來獲得擁有該程式的軟體包中的文件資訊:      rpm -qdf /usr/bin/ispell     輸出結果為:      /usr/man/man4/ispell.4      /usr/man/man4/english.4      …………………………………………………………     E. 如果你發現了一個新的koules RPM,但是不知道它是什麼東西,可以鍵入如下命令:      rpm -qip koules-1.2-2.i386.rpm     F. 現在你想了解koules RPM 所安裝的檔案。可以鍵入:      rpm -qlp koules-1.2-2.i386.rpm     圖形管理工具:kpackage   3、shell或java指令碼安裝 基於圖形介面的安裝,一般基於SHELL或Java語言編寫,主要應用於一些辦公軟體和製圖軟體及安裝程式,如staroffice、oracle的安裝,很容易,和windows一樣 以上內容如有錯誤,請多多指教.這也是綜合了之前同學的筆記整理的,在此表示感謝!

相關文章