Red Hat发明了RPM工具来实现Linux环境下软件包的管理,使得RPM成为Linux环境下管理软件的一个标准工具。但是RPM处理复杂问题时,使用起来比较麻烦,并且其定时更新系统软件和弥补系统漏洞也是困扰管理员的一个问题。而从Debian引进的基于RPM的软件管理工具APT则是解决这些问题的一个好办法。
APT概述
安装新软件是一件必不可少的工作,但是在Linux中安装应用软件与在Windows下有些不同。这是因为很多Linux应用软件都是以源代码形式发布的,要求用户根据自己系统的实际情况和自身的需要配置编译源程序后,才能使用这些软件。通过源代码方式安装Linux,对于大多数初学者来说显得过于复杂和困难。Red Hat公司为了降低软件安装的复杂性,在发行版中推出了著名的RPM(Red Hat Packet Manager)软件包管理工具。虽然RPM打上了Red Hat的标志,但是其原始设计理念是开放式的,所以现在包括OpenLinux、SuSE及Turbo Linux等发行版本都有采用RPM。
虽然RPM提供的管理功能使得软件安装和删除高度自动化,简化了Linux环境下软件安装和管理的难度,但是RPM为保持系统一致性而具有的软件包依赖性问题,需要管理员手工解决,并且在安装和卸载程序时非常繁琐。
Debian发布的软件管理系统发明了APT(高级软件包工具,Advanced Package Tool),它在系统软件安装维护方面更加方便、易用。APT能够在发现软件包依赖性的同时,自动下载相应的软件包并加以安装,使得管理员能毫无故障地执行系统软件的升级。APT使得零停机时间升级成为现实。
虽然APT是基于Debian的软件包管理工具,但是已经被一个巴西公司Conectiva移植到基于RPM的系统上。
1.APT和其它软件管理工具的比较
在基于RPM的Linux平台上,有很多其它的软件包管理工具,如:autorpm、rpmfind、up2date/RHUN、urpmi/rpmdrake/Mandrake Update等,表1是这些工具的比较。
注释:
(1) 依赖性发现只在某些情况下有效。
(2) 一般来说,所有工具都需要服务器上有一个特殊的软件包索引文件。该文件包含有软件包信息,但是它们是一般文件,可以从其它的镜像服务器上下载。
(3) 软件包验证用来验证下载的软件包正确性;镜像服务器验证实现验证镜像服务器和正式服务器的内容是否一致。
(4) 这些特性是ATP-RPM所独有的,而Debian的APT则不具有这些特性。
(5)当软件包升级时显示升级的原因,这样管理员就可以了解升级软件包是由于安全原因或功能升级。
从上面表1中可以看到,ATP和其它工具相比较具有更好的功能优势。因此,对于基于RPM软件包管理的平台,如Red Hat、TurboLinux、SuSe、Mandrake等,APT是一个非常优秀的软件管理工具。
2.APT安装
本文软件环境为Red Hat 7.3,可从ftp://rpmfind.net/linux/freshrpms/valhalla/apt/apt-0.5.4cnc9-fr0.1.rh73.i386.rpm下载针对Red Hat 7.3的ATP的RPM包,然后进行安装:
# rpm -ivh apt-0.5.4cnc9-fr0.1.rh73.i386.rpm |
这样就完成了Red Hat 7.3平台上APT工具的安装。
主要配置文件 1./etc/apt/sources.list
这是APT最重要的配置文件,记载了软件仓库服务器的地址等信息,其中有针对从Red Hat 6.2到8.0的所有版本的软件仓库路径信息。这里只需要把7.3版本对应的路径信息打开,其它版本的路径信息则可以关闭。
# Red Hat Linux 7.3 rpm http://apt.freshrpms.net redhat/7.3/en/i386 os updates freshrpms rpm-src http://apt.freshrpms.net redhat/7.3/en/i386 os updates freshrpms |
2.其它配置文件
在/etc/apt目录下,还有apt.conf rpmpriorities vendors.list等其它配置文件,使用默认的配置即可,具体含义可以参考man文档。
使用APT前的准备 安装好APT软件包以后,管理员需要做的第一个工作就是运行:
从默认服务器下载软件包数据库,运行:
APT验证本地系统的完整性和一致性,判断本地系统的软件包依赖性是否一致。
如果本地系统一致性被严重破坏,则可以使用apt-get-f install命令在使用APT以前手工修复被破坏的依赖性。如果希望定期升级系统,保证系统及时升级,弥补安全漏洞,只需要apt-get update、apt-get dist-upgrade或apt-get upgrade就可以了。
主要命令 APT主要有apt-cache、apt-cdrom、apt-config和apt-get四个命令,用户使用最多的就是apt-get命令。这些命令的详细说明参见man手册,这里只对常用方法进行说明。
1.apt-get
(1)apt-get update
更新本地apt-get的本地数据库,使其与服务器的pkglist文件同步。在升级以前一般都要执行本命令实现与服务器的一致。
(2)apt-get check
验证本地系统的完整性。
(3)apt-get dist-upgrade
类似于apt-get,但是将安装所有的基础软件包,并尽力升级一切软件包,并在需要时安装新软件包。
(4)apt-get install package_name
安装某个软件包及其相关软件包。例如:
这样不但会安装openssh,同时会升级openssl。
(5).apt-get remove package_name
删除该软件包,同时会删除依赖于它的软件包。
(6).apt-get source package_name
下载软件包的source rpm。例如:
apt-get source --compile zhcon |
上面代码表明抓回source rpm,并编译为二进制的rpm;--compile参数功能等同于rpm -ba。
(7).apt-get clean
删除保存在缓存目录下(/var/cache/apt/archives)的被下载的软件包。
(8).apt-get upgrade package_name
升级指定的软件包,并升级其依赖的软件包。
2.apt-cdrom
在安装完成系统以后,可以使用apt-cdrom把3张安装光盘加入到APT的sources.list中。用法如下:
# apt-cdrom add Using CD-ROM mount point /mnt/cdrom/ Unmounting CD-ROM Please insert a Disc in the drive and press enter Mounting CD-ROM Identifying.. [af0e7c988f7ae057a4a3bccc8008134d-2] Scanning Disc for index files.. Found 1 package indexes and 0 source indexes. Please provide a name for this Disc, such as 'MyDistro 6.0 Disk 1': Gaga V1.1 disc1 This Disc is called: 'Gaga V1.1 disc1' Reading Indexes... Done Writing new source list Source List entries for this Disc are: rpm cdrom:[Gaga V1.1 disc1]/ RedHat gaga Repeat this process for the rest of the CDs in your set. |
3次运行apt-cdrom add命令,来加载3张安装光盘。在/etc/apt/sources.list中就应该包含如下内容:
rpm cdrom:[Gaga V1.1 disc3]/ RedHat gaga rpm cdrom:[Gaga V1.1 disc2]/ RedHat gaga rpm cdrom:[Gaga V1.1 disc1]/ RedHat gaga |
这样以后就可以使用apt-get来安装以前未安装的软件了。
示例如下,若服务器没有和互联网连接,那么修改/etc/apt/sources.list,使其包含下面几行:
rpm cdrom:[Gaga V1.1 disc3]/ RedHat gaga rpm cdrom:[Gaga V1.1 disc2]/ RedHat gaga rpm cdrom:[Gaga V1.1 disc1]/ RedHat gaga # apt-get update # apt-get install imap |
根据指示放入第二张光盘即可,而不会出现不知道软件包在哪个光盘上,左寻右找的麻烦。
3.apt-cache
(1)apt-cache showpkg
显示软件包的一些常规信息。例如:
apt-cache showpkg openssh |
(2)apt-cache stats
显示相关的统计信息。
3.apt-cache dump
显示缓存中的每个软件包的简要描述信息。
4.apt-cache unmet
显示不符合一致性的依赖关系。
5.apt-cache show
显示指定软件包的记录信息,类似于rpm -qi。
6.apt-cache search
查找软件包,类似于rpm -qa|grep package_name。例如:
7.apt-cache depends
显示软件包的依赖性关系。
8.apt-cache pkgnames
列出所有的软件包。例如:
$ apt-cache pkgnames openss openssh-askpass openssl096 openssl-perl openssl095a openssl-python openssh-clients openssl-devel openssh-askpass-gnome openssh openssl openssh-server |
4.apt-config
apt-config dump
显示目前的配置信息。