Red Hat Training

A Red Hat training course is available for Red Hat Satellite

第 6 章 上传及维护自定义软件包

根据所使用的红帽网络服务,有两种不同的向专用频道上传软件包的机制。
RHN Proxy 服务器用户使用 RHN Package Manager 应用程序,它将软件包的头信息发送到中央红帽网络服务器并将软件包本身放置在调用 RHN Package Manager 的 Proxy 的本地库中。
RHN Satellite 服务器 用户使用 RHN Push 应用程序将软件包头文件信息发送到本地 RHN Satellite 服务器,并将软件包放置到调用 RHN Push 的 Satellite 服务器的本地库中。
本章会对这两个方法进行详细的论述。

警告

如果您同时使用 RHN Proxy 服务器和 RHN Satellite 服务器,您只需要使用 RHN Push。 Proxy- Satellite 的组合结构需要只将自定义软件包和频道上传到 Satellite 服务器, Proxy 从那里获得软件包并将它们发送到客户端系统。

6.1. 将软件包上传到 RHN Proxy 服务器

RHN Package Manager 可让机构通过 RHN Proxy 服务器服务与专用 RHN 频道关联的自定义软件包。如果该机构想要让 RHN Proxy 服务器只服务官方红帽企业版 Linux 软件包,则不要安装 RHN Package Manager
要使用 RHN Package Manager,请安装 rhns-proxy-package-manager RPM 软件包及其所依赖的软件包。这个软件包可用于注册的 RHN Proxy 服务器系统并使用 up2date rhns-proxy-package-manager 命令安装。

注意

只有软件包的头信息被上传到 RHN 服务器。为了解决客户端系统的依赖性问题,RHN 将需要这些头信息。实际的软件包文件(*.rpm)被存储在 RHN Proxy 服务器中,因此自定义软件包不能通过 RHN 网站下载(虽然它们在 RHN 网站上被列出)。客户端系统必须使用 up2date 命令来获得自定义软件包。

6.1.1. 配置并使用 RHN Package Manager

在可以使用 RHN Package Manager将软件包上传到 RHN 前,您首先需要手动将软件包复制到 Proxy 服务器。例如,在一台主机中运行 scp 命令:
scp foo.rpm root@rhnproxy.example.com:/tmp
使用 RHN Package Manager将软件包上传到红帽网络时,请将其指向您前面复制到服务器中的文件。

注意

在将软件包上传到红帽网络前,最少需要创建一个专用的频道来接收自定义软件包。这是因为系统需要一个频道来接收软件包。
使用以下命令来将软件包头上传到 RHN 服务器并将软件包复制到 RHN Proxy 服务器库:
rhn_package_manager -c label_of_private_channelpkg-list
label_of_private_channel 是用来接收这些软件包的自定义频道。请确认在创建过程中使用了正确的频道标签。如果您指定了一个或多个频道(使用 -c--channel),上传的软件包头会与所有指定的频道关联。如果您没有指定频道,会将这些软件包放在「软件包管理」页中的「不属于任何频道」项中。有关重新分配软件包的步骤请参考 第 4.6 节 “为软件频道分配软件包”
pkg-list 代表了要被上传的软件包列表。这些软件包必须被物理地复制到 Proxy。或者,您可以使用 -d 选项来指定包括了要被添加到频道中的软件包的本地目录。RHN Package Manager 还可以从标准输入(使用--stdin)中读取软件包列表。
可在配置文件中指定其它选项,如红帽网络服务器的 URL、HTTP 代理服务器的用户名和密码(如果您的 HTTP 代理服务器需要进行验证)以及软件包存在的顶级目录。这些特殊的信息一定不能被编辑,其位置为 /etc/rhn/default/rhn_proxy_package_manager.conf。您可以通过在主配置文件 /etc/rhn/rhn.conf 中的设置覆盖默认配置文件中的设置,也可以通过 RHN Package Manager的命令行选项来覆盖它的设置。
本文件中没有设置的参数可从目前登录用户主目录的 .rhn_package_manager 文件中读取,也可最终从 /etc/rhn/rhn_package_manager.conf 文件中读取。请确认这些文件有正确的权限设置来防止其他用户读这些文件。
在上传软件包后,检查本地目录是否已经和 RHN 服务器的频道映像同步:
rhn_package_manager -s -c name_of_private_channel
使用 -s 选项会列出所有“丢失的”软件包。丢失的软件包是指那些被上传到 RHN 服务器但没有出现在本地目录中的软件包。您必须是一个 机构管理员 才可以使用这个选项。这个应用程序会提示您输入您的 RHN 用户名和密码。
--copyonly 选项将这里列出的文件复制到指定的频道中,而不上传到 Satellite。当 RHN Proxy 服务器中的一个频道丢失了一些软件包,而您又不想重新导入这个频道中的所有软件包时,这个选项将非常有用。
rhn_package_manager -c channel-name --copyonly /path/to/missing/file
您还可用使用 RHN Package Manager 在频道中搜索软件包列表,因为它们是被保存在 RHN 服务器中的:
rhn_package_manager -l -c name_of_private_channel
-l 选项列出了指定频道中的每个软件包的软件包名、版本号、发行号和构架。其它选项请参考 表 6.1 “rhn_package_manager 选项”
表 6.1 “rhn_package_manager 选项”RHN Package Manager (rhn_package_manager) 命令行选项总结:

表 6.1. rhn_package_manager 选项

选项 描述
-v, --verbose 增加标准输出信息的详细程度。
-d, --dir DIRECTORY_NAME 从这个目录中获得软件包。
-c, --channel CHANNEL_NAME 指定频道来接收软件包。重复使用(如-c channel_one -c channel_two)可以指定多个频道。
-n, --count NUMBER 每次调用只处理这里指定的数量的头信息 — 默认值是 32。
-l, --list 列出指定频道中的软件包。
-s, --sync 检查本地目录是否与服务器同步。
-p, --printconf 输出当前的配置并退出。
--newest 只 push 那些比这个服务器上的软件包更新的软件包。请注意,源码软件包间不会进行版本比较。它们的版本的新旧是由与它们相对应的二进制软件包决定的。在 RHN Package Manager中使用这个选项时只上传一个源码软件包。在上传相应的二进制软件包前,这个源码软件包不会出现在 RHN 网站界面中。这与 --source 相反。使用 --source --newest 将会使用较新的软件包的源码软件包进行更新,并不需要首先上传对应的二进制软件包。
--source 上传指定的源码软件包。这个选项会将源码软件包作为一般的、独立的软件包处理而 将它们作为特殊的源码软件包来和其它预先存在的二进制软件包关连。例如,如果您想将应用程序的源代码发送给开发人员或测试人员时,可以使用这个选项。
--stdin 从标准输入中读取软件包名。
--nosig 即使软件包没有被签注,也允许操作继续。
--no-ssl 禁用 SSL(不推荐使用)。
--stdin 从标准输入中读取软件包名。
--username USERNAME 指定 RHN 用户名。如果没有提供,您将会被要求输入一个有效的频道管理员的用户名。
--password PASSWORD 指定 RHN 密码。如果没有提供,您将会要求输入一个有效的频道管理员密码。
--dontcopy 在上传后的步骤中,不要将软件包复制到它们在软件包树的最终位置上。
--copyonly 只复制软件包,不重新导入它们。
--test 只显示被 push 的软件包列表。
-?, --help 显示包括选项列表的帮助信息。
--usage 简单地描述可用的选项。
--copyonly 只复制软件包

注意

关于这些选项的描述也可以在 rhn_package_manager 的说明书页:man rhn_package_manager 中获得。