3.16. Red Hat Enterprise Linux 6 和 7 之间的区别
Red Hat Enterprise Linux 7 中的 RPM Package Manager 提供了很多功能更改,这些更改在 Red Hat Enterprise Linux 6 附带的 RPM Package Manager 旧版本中不提供。
本节详细介绍了为两个系统构建 Software Collection 软件包时可能会影响您的更改。
库支持的不同在 第 3.5.3 节 “Red Hat Enterprise Linux 7 中的 Software Collection Library 支持” 中详细介绍。SELinux 支持的不同信息包括在 第 3.15.1 节 “Red Hat Enterprise Linux 7 中的 SELinux 支持”。
3.16.1. %license Macro 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
%license 宏允许您指定软件包要安装的许可证文件。宏只在 Red Hat Enterprise Linux 7 中的 RPM Package Manager 支持。在 Red Hat Enterprise Linux 6 和 7 上构建 Software Collection 软件包时,声明 Red Hat Enterprise Linux 6 的 %license 宏,如下所示:
%{!?_licensedir:%global license %%doc}
%{!?_licensedir:%global license %%doc}
3.16.2. 缺少运行时子软件包依赖项 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
在 Red Hat Enterprise Linux 7 中,scl 工具会在 Software Collection runtime 子软件包中自动生成所需的
Requires。这在 Red Hat Enterprise Linux 6 中无法正常工作。为该系统构建 Software Collection 时,您需要在每个 Software Collection 软件包中的 runtime 子软件包上明确指定依赖项:
Requires: %{?scl_prefix}runtime
Requires: %{?scl_prefix}runtime
3.16.3. scl-package ()provides 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
按照设计,构建 Software Collection 软件包会生成多个
Provide: scl-package() 标签。它们的目的是在内部识别属于特定 Software Collection 的构建软件包。下表中详述了标签。
|
Software Collection 软件包
|
provides
|
|---|---|
| scl-package(software_collection_1)
|
${software_collection_1}-build
| scl-package(software_collection_1)
|
${software_collection_1}-runtime
| scl-package(software_collection_1)
|
Red Hat Enterprise Linux 6 附带 RPM Package Manager 的旧版本,因此例外,在 Red Hat Enterprise Linux 6 中构建相同的软件包只生成一个
Provide: scl-package() 标签,如下表所述。这是一个预期的行为,差异由 scl 工具在内部处理。
|
Software Collection 软件包
|
provides
|
|---|---|
${software_collection_1}
| scl-package(software_collection_1)
|
不要使用这些内部生成的依赖项来列出属于特定 Software Collection 的软件包。有关如何正确列出 Software Collection 软件包的详情,请参考 第 1.5 节 “列出已安装的 Software Collections”。