当前位置

12.4 apt4rpm 基本用法

主标签

在 RPM 包装系统种,“依赖性检查”是一个保证系统完整性的有力武器。然而,随着依赖性关系的发展,尤其是不恰当的依赖性的存在,往往会发展出依赖性森林,继而出现如循环依赖、无法解决的关系等问题。过于复杂的关系使用户深陷其中,因而又有 dependency hell 一说。

为了解决同一个问题,debian 的弟兄们发明了 APT,Advanced Packaging Tool,一个自动解决依赖性问题、自动下载的包裹安装程序。不久以后,一个基于 RPM 的发行版,Conectiva,将 APT 移植到了 RPM 世界,称为 APT4RPM。

ML 携带了 apt4rpm。你现在可以用全新的方式安装系统——先安装一个最小系统,然而需要什么添加什么。由于依赖性关系被自动解决了,这个过程将是平滑而无痛的。唯一需要的是你要有一个相对比较高的下行带宽,以节约你的耐心。

APT 的工作需要一个提供仓库的站点。该网站收集所有 RPM,并予以分析。通过分析的结果,APT 就可以得知,你想装的包依赖于哪些包,以及去哪能找到他们。如今各类发行版大都有自己的 仓库提供者,有些还非常多。我们鼓励有能力的朋友为 ML 提供仓库。目前,我们以其中一个为例,来说明 APT 的使用。

APT 主要的设定文件就是 [code]/etc/apt/sources.list[/code],在这里我们指定了仓库的域名,以及其中提供的模块。我们以其中一个仓库 http://cosoft.org.cn/forum/forum.php?forum_id=6382 为例。该仓库域名为:
[code]http://auvtech.com/~xinzhen/downloads/apt[/code]
提供了 os、updates、gnome 和 extras 这几个模块。因此,我们在 [code]sources.list[/code] 中就这样设定:

[list][code]
rpm http://auvtech.com/~xinzhen/downloads/apt magic gnome extras os updates

rpm-src http://auvtech.com/~xinzhen/downloads/apt magic gnome extras os updates
[/code][/list]

存盘。现在,我们来获取该仓库的分析结果信息,运行:

[code]apt-get update[/code]

一旦完成,依赖性信息就已经到我们本地了,现在我们就来利用 apt 安装几个软件试试

1) 安装包裹及其依赖

[code]
# apt-get install gimp

Reading Package Lists... Done

Building Dependency Tree... Done

The following extra packages will be installed:

lcms

The following NEW packages will be installed:

gimp lcms

0 packages upgraded, 2 newly installed, 0 removed and 8 not upgraded.

Need to get 9244kB/9354kB of archives.

After unpacking 23.8MB of additional disk space will be used.

Do you want to continue? [Y/n] y

...

[/code]

可见,我们用 apt 安装了 gimp,它解析了依赖性关系,自动下载安装了所依赖的 lcms 包。

2) 删除依赖包

[code]
# 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] y

[/code]

3) 全面更新系统

如果新版的操作系统发布了,因而你想要升级所有包到新版,只需一条命令:

[code]# apt-get upgrade[/code]

但这条命令面对复杂的冲突情况时无能为力。此时另一个命令:

[code]# apt-get dist-upgrade[/code]

将通过系统级别的智能分析,来解决可能的冲突情况

4) 清除本地存档

所有通过 APT 安装的 RPM 包都将保存在 [code]/var/cache/apt/archieves[/code] 中,如果你想清空存档,只需输入:

[code]# apt-get clean[/code]

5) 下载源码

如果你是一名开发人员,希望帮助我们查错,因而需要源码,那么输入:

[code]# apt-get source packagename[/code]

就将获得该软件包的源码包(如果仓库中有的话)

最后,由于包裹依赖性分析结果是事先通过 update 命令下载到本地的,所以在你再次运行 update 命令之前,apt 是不会知道服务器上是否有新版包裹更新的。所以,经常地运行

[code]# apt-get update[/code]

有助于祛病强身、延年益寿