為redhat增加apt包管理功能
一、 簡介
redhat采用了RPM軟件包管理系統,RPM軟件包管理系統具有強大的編譯安裝功能,但是由於歷史原因,RPM軟件包管理系統對軟件之間的依存關系沒有內部定義,造成安裝RPM軟件時經常出現令人無法理解的軟件依賴問題。
debian系統則基於apt(Advanced Packaging Tool)工具進行軟件包管理,可以自動解決並安裝倚賴軟件包,因此debian linux被認為是最容易管理和升級的系統,apt工具也被認為是目前最好的軟件包管理工具之一。為了解決redhat包管理系統的致命問題, Conectiva Linux將apt系統移植到了使用rpm軟件包管理系統的Linux系統下,使得基於RPM軟件包的系統可以利用apt工具提供的自動解決倚賴關系的能力。目前已經有很多為redhat linux提供apt方式升級管理軟件包的站點,如http://freshrpms.net , http://apt.unl.edu 等等,使得redhat也成為可以利用apt工具的發行版之一,本文介紹如何在redhat linux系統安裝和使用apt軟件包管理工具。
為了對apt工具的特性有一個大致的了解,下面先介紹幾個使用apt with rpm管理系統的實例:
(1)刪除一個軟件包時自動刪除相關軟件包:
[root@linux root]# apt-get remove nessus-common
Processing File Dependencies... Done
Reading Package Lists... Done
Building Dependency Tree... Done
The following packages will be REMOVED:
nessus-client nessus-common nessus-server
0 packages upgraded, 0 newly installed, 3 to remove(replace) and 0 not upgraded.Need to get 0B of archives. After unpacking 4863kB will be freed.
Do you want to continue? [Y/n]
Executing RPM (-e)...
warning: /etc/nessus/nessusd.conf saved as /etc/nessus/nessusd.conf.rpmsave
[root@linux root]#
(2)自動下載安裝依賴包:
[root@linux root]# apt-get install nessus-server
Processing File Dependencies... Done
Reading Package Lists... Done
Building Dependency Tree... Done
The following extra packages will be installed:
nessus-common nmap
The following NEW packages will be installed:
nessus-common nessus-server nmap
0 packages upgraded, 3 newly installed, 0 to remove(replace) and 0 not upgraded.Need to get 1239kB of archives. After unpacking 4889kB will be used.
Do you want to continue? [Y/n]
Get:1 http://apt.freshrpms.net freshrpms/7.2/freshrpms nessus-common 1:1.1.12-fr1 [101kB]
Get:2 http://apt.freshrpms.net freshrpms/7.2/freshrpms nessus-server 1:1.1.12-fr1 [895kB]
Get:3 http://apt.freshrpms.net redhat/i386/7.2/os nmap 2.54BETA22-3 [243kB]
Fetched 1239kB in 54s (22.8kB/s)
Executing RPM (-U)...
Preparing... ########################################### [100%]
1:nessus-common ########################################### [ 33%]
2:nmap ########################################### [ 66%]
3:nessus-server ########################################### [100%]
[root@linux root]#
(3)維護系統軟件,自動更新系統 :
[root@linux root]# apt-get upgrade
Processing File Dependencies... Done
Reading Package Lists... Done
Building Dependency Tree... Done
The following packages will be upgraded
at libxml2 libxml2-devel openldap openldap-clients openldap-devel rsync
7 packages upgraded, 0 newly installed, 0 to remove(replace) and 0 not upgraded.Need to get 2132kB of archives. After unpacking 560kB will be freed.
Do you want to continue? [Y/n]
Get:1 http://apt-rpm.tuxfamily.org redhat-updates-7.2/redhat/os at 3.1.8-23 [42.6kB]
Get:2 http://apt-rpm.tuxfamily.org redhat-updates-7.2/redhat/os libxml2 2.4.10-0.7x.2 [360kB]
Get:3 http://apt-rpm.tuxfamily.org redhat-updates-7.2/redhat/os libxml2-devel 2.4.10-0.7x.2 [617kB]
Get:4 http://apt-rpm.tuxfamily.org redhat-updates-7.2/redhat/os openldap 2.0.21-1 [424kB]
Get:5 http://apt-rpm.tuxfamily.org redhat-updates-7.2/redhat/os openldap-clients 2.0.21-1 [114kB]
Get:6 http://apt-rpm.tuxfamily.org redhat-updates-7.2/redhat/os openldap-devel 2.0.21-1 [462kB]
Get:7 http://apt-rpm.tuxfamily.org redhat-updates-7.2/redhat/os rsync 2.4.6-8 [112kB]
Fetched 2132kB in 3m8s (11.3kB/s)
Executing RP (-U)...
Preparing... ########################################### [100%]
1:libxml2 ########################################### [ 14%]
2:rsync ########################################### [ 28%]
3penldap ########################################### [ 42%]
4penldap-clients ########################################### [ 57%]
5penldap-devel ########################################### [ 71%]
6:at ########################################### [ 85%]
7:libxml2-devel ########################################### [100%]
[root@linux root]#
二、安裝apt with rpm及其圖形界面前端Synaptic
下面簡單介紹一下如何下載和安裝apt with rpm
apt with rpm可以直接到 http://freshrpms.net 下載安裝,目前該站點提供了redhat 6.2, 7.x和8.0的軟件升級服務,下面是幾個常用redhat版本的apt下載地址:
redhat 6.2
http://ftp.freshrpms.net/pub/freshr...0.62.1.i386.rpm
redhat 7.2
http://ftp.freshrpms.net/pub/freshr...55-fr7.i386.rpm
redhat 7.3
http://ftp.freshrpms.net/pub/freshr... /> redhat 8.0
http://ftp.freshrpms.net/pub/freshr...c9-fr1.i386.rpm
下載後使用rpm命令安裝:
[root@linux root]# rpm -ihv apt-0.5.4cnc9-fr1.i386.rpm
freshrpms.net同時提供了一個圖形界面的apt-rpm接口Synaptic,使用圖形界面的apt更加方便,安裝了apt後,可以直接利用apt安裝Synaptic:
[root@linux root]# apt-get update
[root@linux root]# apt-get install synaptic
在幾行提示之後Synaptic就安裝好了,進入Xwindow,Synaptic會出現在“系統設置”菜單裡面。[Fixme: redhat 7.x版本Synaptic出現在哪裡?]
三、使用apt
在redhat上面使用apt和在debian下面使用幾乎完全一樣,配置文件在/etc/apt/,按照前面介紹安裝好apt之後就可以使用並可以更新redhat提供的RPM更新以及freshrpms.net提供的更新了。主要運行命令如下:
(1)更新軟件列表,獲取遠程rpm服務器上的軟件列表和相互依賴關系列表,所有可用軟件的下載地址都在/etc/apt/sources.list裡面定義,下面的多數下載操作地址也是在這裡定義的。
[root@linux root]# apt-get update
(2)檢查本地軟件依賴關系合法性,由於rpm系統的問題,很多系統會存在一些依賴問題,用下面命令檢查依賴關系,同時apt-get會提供一些修復方案,只有本機沒有依賴關系問題了才能良好地使用apt-rpm。一個新安裝的干淨系統不會有依賴關系問題。
[root@linux root]# apt-get check
(3)安裝或升級一個新軟件
[root@linux root]# apt-get install package-name
package-name是rpm包的名字的前面部分,不包含版本號,如果選擇不同的處理器類型,可以在後面添加@i686等標識。
(4)升級所有系統軟件
[root@linux root]# apt-get upgrade
(5)全面升級,比upgrade更加智能化的升級,同時解決升級時的一些依賴關系
[root@linux root]# apt-get dist-upgrade
(6)卸載軟件,同時卸載依賴軟件
[root@linux root]# apt-get remove package-name
(7)清除本地下載的rpm包,rpm包下載後保存在/var/cache/apt/archieves下面,本命令清除已下載安裝過的rpm文件
[root@linux root]# apt-get clean
以上所有命令都可以通過圖形界面的前端軟件Synaptic完成,圖形化的軟件使用起來更加直觀,理解了前面幾個主要命令,就可以毫無困難地使用Synaptic了,所以本文不再贅述Synaptic的使用方法了。
四 定制apt-rpm
(1)添加軟件資源列表
在apt-rpm系統裡面添加軟件資源非常容易,只需要按照提供apt服務的服務器的說明在/etc/apt/sources.list裡面加入對網站的描述即可。
這一行參數的格式為:
rpm uri distribution [component1] [componenent2] [...]
其中,uri為軟件資源的地址,可以是http,ftp,file等URL地址,distribution是redhat發行版本,如 7.2,7.3,8.0等等,後面的component可以忽略。有時候可能只對某軟件資源的一或幾部分部分感興趣,那麼可以在這裡明確指出。
例如添加httdu/ 提供的redhat KDE 3.1的測試軟件包,只需要在sources.list裡面添加一行:
代碼:
rpm ftp://apt.unl.edu/apt/ 8.0 kde3-test
就將該網站的kde3部分加入了列表。
下面是一些目前可以用於redhat 的apt-rpm軟件資源列表,把它們加入你的 /etc/apt/sources.list 文件就可以通過apt-rpm使用他們提供的redhat軟件更新和維護了,參看網站說明。(前面是網站名,後面是適用redhat版本和簡介)
http://apt.freshrpms.net/ - Red Hat Linux 6.2, 7.x and 8.0 repositories (with all freshrpms included of course!)
http://www.linux.cz/apt-rpm/ - Red Hat Linux 7.x repositories (with all freshrpms included too!)
http://apt-rpm.tuxfamily.org/ - Red Hat Linux 6.2, 7.x and 8.0 repositories
http://apt.nlc.no/apt/ - Red Hat Linux 6.2, 7.x and Rawhide repositories
http://ftp.uninett.no/pub/linux/apt/ - Red Hat Linux 6.2, 7.x, 8.0 and Rawhide repositories
http://redhat.usu.edu/ - Red Hat Linux 7.2, 7.3 and 8.0 repositories
ftp://mirror.pa.msu.edu/apt/ - Red Hat Linux 7.2, 7.3 and 8.0 repositories
http://apt-rpm.codefactory.se/ - Red Hat Linux 7.2, 7.3 and 8.0 and gnomehide repositories
http://apt.42h.de/ - Red Hat Linux 7.2, 7.3 and 8.0 repositories
http://apt.toggletext.com.au/ - A few Red Hat Linux 7.2 custom packages
http://people.ecsc.co.uk/~matt/repository.html - Lots of custom Red Hat Linux 8.0 GNOME 2 and related packages
http://ftp-stud.fht-esslingen.de/apt/ - Red Hat Linux 7.x, 8.x and rawhide
http://apt.unl.edu/ - Red Hat Linux 7.3 and 8.0
http://kde-redhat.sourceforge.net/ - KDE for Red Hat project
(2)把redhat安裝盤添加到軟件源
有的時候需要從redhat安裝光盤或者iso文件安裝、卸載軟件,這時可以把redhat安裝光盤設置為軟件源。這種工作方式需要首先掃面安裝光盤上的軟件包,並在 /var/lib/apt/cdroms.list文件中建立光盤軟件列表。
如果使用redhat光盤,只需要把光盤插入光驅,下面命令會自動mount光盤並建立列表
[root@linux root]# apt-cdrom add
如果是使用ISO文件安裝,首先mount ISO文件到mount-point,把mount point輸入,就可以自動搜索RPM軟件列表了。
[root@linux root]# apt-cdrom -m -d mount-point add
如果是解開的硬盤映像安裝,只需要把路徑輸入,就可以自動搜索RPM軟件列表了。
[root@linux root]# apt-cdrom -m -d path add
五 實例
(1)安裝mplayer
[root@linux root]# apt-get install mplayer
Reading Package Lists... Done
Collecting File Provides... Done
Building Dependency Tree... Done
The following extra packages will be installed:
aalib libdv libdvdcss libdvdcss-devel libdvdread libdvdread-devel lirc
xvidcore
The following packages will be upgraded
libdvdcss libdvdcss-devel libdvdread libdvdread-devel
The following NEW packages will be installed:
aalib libdv lirc mplayer xvidcore
4 packages upgraded, 5 newly installed, 0 removed and 14 not upgraded.
Need to get 5417kB/5471kB of archives.
After unpacking 15.3MB of additional disk space will be used.
Do you want to continue? [Y/n]
Get:1 http://apt.freshrpms.net redhat/8.0/en/i386/freshrpms aalib 1.4rc5-fr1 [104kB]
Get:2 http://apt.freshrpms.net redhat/8.0/en/i386/freshrpms libdv 0.99-fr1 [240kB]
Get:3 http://apt.freshrpms.net redhat/8.0/en/i386/freshrpms libdvdread-devel 0.9.4-fr2 [63.4kB]
Get:4 http://apt.freshrpms.net redhat/8.0/en/i386/freshrpms libdvdread 0.9.4-fr2 [56.3kB]
Get:5 http://apt.freshrpms.net redhat/8.0/en/i386/freshrpms lirc 0.6.5-fr3 [373kB]
Get:6 http://apt.freshrpms.net redhat/8.0/en/i386/freshrpms xvidcore 0.9.0-fr3 [159kB]
Get:7 http://apt.freshrpms.net redhat/8.0/en/i386/freshrpms mplayer 0.90-fr0.5rc4 [4422kB]
Fetched 5417kB in 31s (174kB/s)
Executing RPM (-Uvh)...
warning: /var/cache/apt/archives/aalib_1.4rc5-fr1_i386.rpm: V3 DSA signature: NOKEY, key ID e42d547b
Preparing... ########################################### [100%]
1:aalib ########################################### [ 11%]
2:libdv ########################################### [ 22%]
3:libdvdcss-devel ###################################4:libdvdcss ########################################### [ 44%]
5:libdvdread-devel ########################################### [ 56%]
6:libdvdread ########################################### [ 67%]
7:lirc ########################################### [ 78%]
8:xvidcore ########################################### [ 89%]
9:mplayer ########################################### [100%]
注:有兩個包曾經下載過,所以本次不再下載。
(2)安裝kde 3.1 for redhat 的測試包
定義資源:為了簡單,把下面一行加入/etc/apt/sources.list,並暫時把其它資源列表注釋掉
代碼:
rpm ftp://apt.unl.edu/apt/ 8.0 kde3-test
執行完整升級:
[root@linux root]# apt-get dist-upgrade
OK, 體驗一下KDE 3.1的新特性吧!
六 其它資源
http://apt4rpm.sourceforge.net/ - General information and scripts to create repositories (focused initially on SuSE)