Linux 下的軟件包管理工具
linux下的軟件安裝可以通過兩種方式,一種是直接使用自帶的軟件包管理工具安裝,另外一種通過編譯源碼安裝。
1.軟件包的種類
Red Hat和Fedora:redhat最早發行的個人版本的Linux,自從Red Hat 9.0版本發布後,RedHat 公司就不再開發桌面版的 Linux發行套件,Red Hat Linux停止了開發,而將全部力量集中在服務器版的開發上,也就是 Red Hat Enterprise Linux 版。2004年4月30日,Red Hat公司正式停止對Red Hat 9.0版本的支援,標志著Red Hat Linux的正式完結。原本的桌面版Red Hat Linux發行套件則與來自開源社區的 Fedora 計劃合並,成為 Fedora Core 發行版本。目前Red Hat分為兩個系列:由Red Hat公司提供收費技術支持和更新的Red Hat Enterprise Linux(RHEL),以及由社區開發的免費的Fedora Core。
特點:面向個人桌面應用系統,采用基於rpm/yum管理軟件包。
RHEL(Red Hat Enterprise Linux)和CentOS:RHEL是Red Hat企業版,提供商業支持。CentOS是對RHEL重新編譯而成,免費而穩定。
特點:面向企業服務器使用,安全穩定,采用基於rpm/yum管理軟件包。
Debian和Ubuntu:Debian是社區類Linux的典范,是迄今為止最遵循GNU規范。Ubuntu基於Debian發行版和GNOME桌面環境.它使用Bash作為基礎Shell,所以在很多基礎命令上,ubuntu與CentOS的差別不是很明顯,而ubuntu在桌面界面上要做的更為出色,還有類似的Kunbuntu/Xubuntu等。
特點:面向桌面應用,采用apt-get/dpkg包管理方式。
主要有兩個:.deb和.rpm
".deb"包是由Debian社區開發的一種包,"rpm"是來自於Redhat
包類型 使用這種包的linux發行版 Debian Style(.deb) Debian, Ubuntu, Xandros, Linspire等 Red Hat Style(.rpm) Fedora, CentOS, Red Hat Enterprise Linux等
而兩種包的管理工具主要分為:
linux發行版 底層工具 上層工具 Debian.Ubuntu dpkg apt-get, Fedora, Red Hat Enterprise Linux, CentOS rpm yum
從表中可以很容易看出,linux的軟件包管理工具分為兩個層次的,所以下面介紹下軟件包管理工具的一些基本使用。各有好處,根據自己所在的平台來判斷使用哪一個。
2.軟件包管理工具的使用:安裝、升級、查詢、卸載
(1)DEB包
一個 DEB 包包含了已壓縮的軟件文件集以及該軟件的內容信息(在頭文件中保存),通常表現為以 .deb 擴展名結尾的文件,例如 package.deb 。對其操作,需要使用 dpkg 命令。
DPKG 的常規使用方法為 dpkg -? Package(.rpm), 其中 -? 為安裝參數 ( 更多信息,請查閱幫助 $man rpm):
-l 在系統中查詢軟件內容信息 --info 在系統中查詢軟件或查詢指定 rpm 包的內容信息 -i 在系統中安裝 / 升級軟件 -r 在系統中卸載軟件 , 不刪除配置文件 -P 在系統中卸載軟件以及其配置文件
$ sudo dpkg -i package.deb
$ sudo dpkg -i package.deb ( 和安裝命令相同)
$ sudo dpkg -r package.deb # 不卸載配置文件 或 $ sudo dpkg -P package.deb # 卸載配置文件
$ sudo dpkg-deb -c package.deb
$ dpkg --info package.deb
$ dpkg -l package
APT 的全稱為 Advanced Packaging Tools 。與 YUM 對應,它最早被設計成 DPKG 的前端軟件,現在通過 apt-rpm 也支持 rpm 管理。而本節本節將介紹 APT 作為 DPKG 前端的使用。 APT 的主要包管理工具為 APT-GET,通過此工具可滿足和上述 YUM 相似的功能要求。
# See http://help.ubuntu.com/community/UpgradeNotes for how to upgrade to # newer versions of the distribution. deb http://cn.archive.ubuntu.com/ubuntu/ hardy main restricted deb-src http://cn.archive.ubuntu.com/ubuntu/ hardy main restricted
注意每次手動修改上述文件後,需要使用 sudo apt-get update 來更新系統的源使新的源數據被當前系統識別。
UBUNTU 中 APT 的配置文件位於 /etc/apt/apt.conf.d,其中的多個配置文件依功能分類。
一般在剛裝上ubuntu系統之後需要添加源,添加所在地區的源會比較快的,關於這個直接百度就可以了。
$ sudo apt-get update #一般在安裝軟件和更新源之後需要執行這條命令。
$ sudo apt-get install package-name
$ sudo apt-get source package-name
$ sudo apt-get upgrade
$ sudo apt-get dist-upgrade
$ sudo apt-get remove package-name
更多有關 APT 的信息,請查閱 http://www.debian.org/doc/manuals/apt-howto/index.en.html 。
(2)RPM包
一個 RPM 包包含了已壓縮的軟件文件集以及該軟件的內容信息(在頭文件中保存),通常表現為以 .rpm 擴展名結尾的文件,例如 package.rpm 。對其操作,需要使用 rpm 命令。下面介紹 rpm 工具的參數和使用方法,並以 IBM Lotus Notes 在 RHEL 5.2 安裝為例做具體說明。
RPM 的常規使用方法為 rpm -? package.rpm,其中 -? 為操作參數 ( 更多信息,請查閱幫助 $man rpm):
-q 在系統中查詢軟件或查詢指定 rpm 包的內容信息 -i 在系統中安裝軟件 -U 在系統中升級軟件 -e 在系統中卸載軟件 -h 用 #(hash) 符顯示 rpm 安裝過程 -v 詳述安裝過程 -p 表明對 RPM 包進行查詢,通常和其它參數同時使用,如: -qlp 查詢某個 RPM 包中的所有文件列表 -qip 查詢某個 RPM 包的內容信息
以上參數有些需要組合使用,比如說 rpm -h package.rpm 是沒有意義的,但 rpm -ih package.rpm 即表示安裝 package 並用 # 符顯示安裝進度。
# rpm -ivh package.rpm
# rpm -Uvh package.rpm
# rpm -ev package
# rpm -qlp package
# rpm -qlp package
# rpm -qip package
# rpm -qa
YUM 基於 RPM 包管理工具,能夠從指定的源空間(服務器,本地目錄等)自動下載目標 RPM 包並且安裝,可以自動處理依賴性關系並進行下載、安裝,無須繁瑣地手動下載、安裝每一個需要的依賴包。此外,YUM 的另一個功能是進行系統中所有軟件的升級。如上所述,YUM 的 RPM 包來源於源空間,在 RHEL 中由 /etc/yum.repos.d/ 目錄中的 .repo 文件配置指定,如 rhel-debuginfo.repo 的內容:
rhel-debuginfo.repo [rhel-debuginfo] name=Red Hat Enterprise Linux 5Client - i386 - Debug baseurl=ftp://ftp.redhat.com/pub/redhat/linux/enterprise/5Client/en/os/i386/Debuginfo/ enabled=0 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release YUM 的系統配置文件位於 /etc/yum.conf,內容如: [main] cachedir=/var/cache/yum keepcache=1 debuglevel=2 pkgpolicy=newest logfile=/var/log/yum.log distroverpkg=redhat-release tolerant=1 exactarch=1 obsoletes=1 gpgcheck=1 plugins=1 exclude= firefox gftp
配置文件用來定義用戶期望的 yum 行為,比如,gpgcheck? 表明安裝時不進行 gpg 驗證,exclued=firefox gftp 表明進行系統全軟件升級時不升級 firefox 和 gftp 。
# yum -y install package-name
# yum list
# yum check-update
# yum update
# yum update package-name
# yum -y update
# yum remove package-name
更多有關 YUM 的信息,請查閱 http://fedoraproject.org/wiki/Tools/yum 。