天天看點

淺談linux系統下的軟體包管理

      Windows下安裝軟體時,隻需運作軟體的安裝程式(setup、install等)或者用zip等解壓縮軟體解開即可安裝,運作反安裝程式(uninstall、unware、”解除安裝”等)就能将軟體清除幹淨,完全圖形化的操作界面,簡單到隻要用滑鼠一直點選”下一步”就可以了.

        Linux好象就不一樣了,很多的初學者都抱怨在Linux下安裝和解除安裝軟體非常地困難,沒有像使用Windows時那麼直覺.其實在Linux下安裝和解除安裝軟體也非常簡單,同樣也有安裝向導或解壓安裝的方式,不相同的隻不過是除了二進制形式的軟體分發外,還有許許多多以源代碼形式分發的軟體包.

        下面就來詳細地講一講這些軟體的安裝與解除安裝:

一、二進制分發軟體包的安裝與解除安裝

       Linux軟體的二進制分發是指事先已經編譯好二進制形式的軟體包的釋出形式,其優點是安裝使用容易,缺點則是缺乏靈活性,如果該軟體包是為特定的硬體平台編譯的,那它就不能在另外的平台或環境下正确執行.

  1、*.rpm形式的二進制軟體包

  安裝:rpm -ivh *.rpm

  解除安裝:rpm -e packgename

  說明:RPM(RedHat Packge Manager)是RedHat公司出的軟體包管理器,使用它可以很容易地對rpm形式的軟體包進行安裝、更新、解除安裝、驗證、查詢等操作,安裝簡單,而解除安裝時也可以将軟體安裝在多處目錄中的檔案删除幹淨,是以推薦初學者盡可能使用rpm形式的軟體包.rpm的參數中-i是安裝,-v是校驗,-h是用散列符顯示安裝進度,*.rpm是軟體包的檔案名(這裡的*.rpm特指*.src.rpm以外的以rpm為字尾的檔案);參數-e是删除軟體包,packgename是軟體包名,與軟體包的檔案名有所差別,它往往是檔案名中位于版本号前面的字元串,例如apache-3.1.12-i386.rpm和apache-devel-3.1.12-i386.rpm是軟體封包件名,它們的軟體包名稱分别是apache和apache-devel.更多的rpm參數請自行參看手冊頁:man rpm.

  如果你不喜歡在字元界面下安裝或解除安裝這些軟體包,完全可以在X-Window下使用圖形界面的軟體包管理程式.現在這些做的非常好了.

  2、*.tar.gz/*.tgz、*.bz2形式的二進制軟體包

  安裝:tar zxvf *.tar.gz 或 tar yxvf *.bz2

  解除安裝:手動删除

  說明:*.tar.gz/*.bz2形式的二進制軟體包是用tar工具來打包、用gzip/bzip2壓縮的,安裝時直接解包即可.對于解壓後隻有單一目錄的軟體,解除安裝時用指令”rm -rf 軟體目錄名”;如果解壓後檔案分散在多處目錄中,則必須一一手動删除(稍麻煩),想知道解壓時向系統中安裝了哪些檔案,可以用指令”tar ztvf *.tar.gz”/”tar ytvf *.bz2”擷取清單.tar的參數z是調用gzip解壓,x是解包,v是校驗,f是顯示結果,y是調用bzip2解壓,t是列出包的檔案清單.更多的參數請參看手冊頁:man tar.

  如果你更喜歡圖形界面的操作,可以到Ubuntu上看看他的包管理,超級友善.

  3、提供安裝程式的軟體包

  這類軟體包已經提供了安裝腳本或二進制的安裝向導程式(setup、install、install.sh等),隻需運作它就可以完成軟體的安裝;而解除安裝時也相應地提供了反安裝的腳本或程式.例如SUN公司的StarOffice辦公軟體套件就使用名為setup的安裝程式,而且在軟體安裝後提供反安裝的功能,目前這種類型的軟體包還比較少,因其安裝與解除安裝的方式與Windows軟體一樣,是以就無需多講了.

二、源代碼分發軟體包的安裝與解除安裝

  Linux軟體的源代碼分發是指提供了該軟體所有程式源代碼的釋出形式,需要使用者自己編譯成可執行的二進制代碼并進行安裝,其優點是配置靈活,可以随意去掉或保留某些功能/子產品,适應多種硬體/作業系統平台及編譯環境,缺點是難度較大,一般不适合初學者使用.

  1、*.src.rpm形式的源代碼軟體包

  安裝:rpm -rebuild *.src.rpm

  cd /usr/src/dist/RPMS

  rpm -ivh *.rpm

  說明:rpm –rebuild *.src.rpm指令将源代碼編譯并在/usr/src/dist/RPMS下生成二進制的rpm包,然後再安裝該二進制包即可.packgename如前所述.

  2、*.tar.gz/*.tgz、*.bz2形式的源代碼軟體包

  安裝:tar zxvf *.tar.gz 或 tar yxvf *.bz2 先解壓

  然後進入解壓後的目錄:

  ./configure 配置

  make 編譯

  make install 安裝

  解除安裝:make uninstall 或 手動删除

  說明:建議解壓後先閱讀說明檔案,可以了解安裝有哪些需求,有必要時還需改動編譯配置.有些軟體包的源代碼在編譯安裝後可以用make install指令來進行解除安裝,如果不提供此功能,則軟體的解除安裝必須手動删除.由于軟體可能将檔案分散地安裝在系統的多個目錄中,往往很難把它删除幹淨,那你應該在編譯前進行配置,指定軟體将要安裝到目标路徑:./configure –prefix=目錄名,這樣可以使用”rm -rf 軟體目錄名”指令來進行幹淨徹底的解除安裝.與其它安裝方式相比,需要使用者自己編譯安裝是最麻煩的,其實我個人認為,以後會越來越少人用這種方法.因為現在的硬體發展到沒有必要多這少量的性能,來浪費這麼多時間.

三.使用yum和apt-get軟體包管理方法.

   看過上面的介紹.大家一定會感覺,太麻煩了,下面這個是先進的linux才有的功能,這個實在太友善了,比windows還人友善,要是你用過Ubuntu的apt-get你會感覺爽極了的.那個友善.

   1. 我們來先講Redhat系列的yum這種進階的包管理.

   (1)用YUM安裝删除軟體

裝了系統添加删除軟體是常事,yum同樣可以勝任這一任務,隻要軟體是rpm安裝的.

安裝的指令是,yum install xxx,yum會查詢資料庫,有無這一軟體包,如果有,則檢查其依賴沖突關系,如果沒有依賴沖突,那麼最好,下載下傳安裝;如果有,則會給出提示,詢問是否要同時安裝依賴,或删除沖突的包,你可以自己作出判斷.

删除的指令是,yum remove xxx,同安裝一樣,yum也會查詢資料庫,給出解決依賴關系的提示.

用YUM安裝軟體包

指令:yum install <package_name>

用YUM删除軟體包

指令:yum remove <package_name>

   (2)用YUM查詢軟體資訊

   我們常會碰到這樣的情況,想要安裝一個軟體,隻知道它和某方面有關,但又不能确切知道它的名字.這時yum的查詢功能就起作用了.你可以用 yum search keyword這樣的指令來進行搜尋,比如我們要則安裝一個Instant Messenger,但又不知到底有哪些,這時不妨用 yum search messenger這樣的指令進行搜尋,yum會搜尋所有可用rpm的描述,列出所有描述中和messeger有關的rpm包,于是我們可能得到gaim,kopete等等,并從中選擇.

有時我們還會碰到安裝了一個包,但又不知道其用途,我們可以用yum info packagename這個指令來擷取資訊.

使用YUM查找軟體包

指令:yum search <keyword>

列出所有可安裝的軟體包

指令:yum list

列出所有可更新的軟體包

指令:yum list updates

列出所有已安裝的軟體包

指令:yum list installed

列出所有已安裝但不在 Yum Repository 內的軟體包

指令:yum list extras

列出所指定的軟體包

指令:yum list <package_name>

   2.講講Debian系列的軟體包管理方法apt-get

   除了apt的便捷以外,apt-get的一大好處是極大地減小了所謂依賴關系惡夢的發生

幾率(dependency hell),即使是陷入了dependency hell,apt-get也提供了很好的

援助手段,幫你逃出魔窟.

   通常 apt-get 都和網上的壓縮包一起出沒,從網際網路上下載下傳或是安裝.全世界有超

過200個 debian 官方鏡像,還有繁多的非官方軟體包提供網站.你所使用的基于D

ebian的釋出版不同,你所使用的軟體倉庫可能需要手工選擇或是可以自動設定.你

能從Debian官方網站得到完整的鏡像清單.而很多非官方網站提供各種特殊用途的

非官方軟體包,當然,使用非官方軟體包會有更多風險了.

   軟體包都是為某一個基本的Debian釋出版所準備的(從unstable到stable),并且劃

分到不同類别中(如 main contrib nonfree),這個是依據 debian 自由軟體綱領而

劃分的(也就是常說的dfsg),因為美國限制加密軟體出口,還有一個non-us類别.

常用的APT指令參數

apt-cache search package 搜尋包

apt-cache show package 擷取包的相關資訊,如說明、大小、版本等

sudo apt-get install package 安裝包

sudo apt-get install package – - reinstall 重新安裝包

sudo apt-get -f install 修複安裝”-f = –fix-missing”

sudo apt-get remove package 删除包

sudo apt-get remove package – - purge 删除包,包括删除配置檔案等

sudo apt-get update 更新源

sudo apt-get upgrade 更新已安裝的包

sudo apt-get dist-upgrade 更新系統

sudo apt-get dselect-upgrade 使用 dselect 更新

apt-cache depends package 了解使用依賴

apt-cache rdepends package 是檢視該包被哪些包依賴

sudo apt-get build-dep package 安裝相關的編譯環境

繼續閱讀