4.2. 扩展 python27 和 rh-python35 Software Collections
本节论述了通过创建依赖 Software Collection 来扩展 python27 和 rh-python35 Software Collections。
在 Red Hat Software Collections 3.8 中,scl 工具被扩展来支持宏
%scl_package_override ()
,这有助于打包您自己的依赖 Software Collection。
4.2.1. vt191 Software Collection 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
以下是构建依赖 Software Collection 的未注释示例。Software Collection 的名称为
vt191
,包含 版本tools Python 软件包 1.9.1。
请注意 vt191 Software Collection metapackage 中的以下内容:
- vt191 Software Collection metapackage 设置了以下构建依赖项:
BuildRequires: %{scl_prefix_python}scldevel
BuildRequires: %{scl_prefix_python}scldevel
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如,这扩展至 python27-scldevel。python27-scldevel 子软件包提供了两个重要的宏%scl_python
和%scl_prefix_python
。请注意,这些宏在 metapackage spec 文件的顶部定义。虽然定义不是必需的,但它们提供了一个可视化提示,但 vt191 软件集合已设计为基于 python27 Software Collection 构建。它们也充当回退值。 - 要正确设置
site-packages
目录,请使用%python27python_sitelib
宏的值,并将python27
替换为vt191
。请注意,如果您使用其他提供程序构建 Software Collection (例如/opt/myorganization/
而不是/opt/rh/
),则需要更改它们。重要由于/opt/rh/
供应商用于安装红帽提供的 Software Collections,因此强烈建议使用不同的供应商来避免可能的冲突。请参阅 第 2.3 节 “Software Collection Root 目录” 了解更多信息。 - vt191-build 子软件包设置了以下依赖项:
Requires: %{scl_prefix_python}scldevel
Requires: %{scl_prefix_python}scldevel
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如,这扩展至 python27-scldevel。这种依赖项的目的是确保在为 vt191 软件集合构建软件包时始终存在宏。 - vt191 Software Collection 的
enable
scriptlet 使用以下行:. scl_source enable %{scl_python}
. scl_source enable %{scl_python}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 请注意行开头的点。当 vt191 Software Collection 启动时,此行使 Python Software Collection 会隐式启动,以便用户只能键入 scl enable vt191 命令而不是 scl enable python27 vt191 命令在 Software Collection 环境中运行命令。 - 宏文件
macros.vt191-config
调用%scl_package_override
功能来正确覆盖%__os_install_post
、、Python 依赖项生成器,以及其它软件包规格文件中使用的特定于 Python 的宏。
4.2.2. python-versiontools 软件包 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
以下是 python-versiontools 软件包 spec 文件的注释示例。在 spec 文件中记录以下内容:
BuildRequires
标签前缀为%{?scl_prefix_python}
而不是%{scl_prefix}
。%install
部分的过期指定--install-purelib
。
4.2.3. 构建 vt191 Software Collection 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
构建 vt191 Software Collection:
- 安装属于 python27 Software Collection 的 python27-scldevel 和 python27-python-devel 子软件包。
- 构建
vt191.spec
并安装 vt191-runtime 和 vt191-build 软件包。 - 安装 python27-python-setuptools 软件包,这是 版本tools 的构建要求。
- 构建
python-versiontools.spec
。
4.2.4. 测试 vt191 Software Collection 复制链接链接已复制到粘贴板!
复制链接链接已复制到粘贴板!
测试 vt191 Software Collection:
- 安装 vt191-python-versiontools 软件包。
- 运行以下命令:
scl enable vt191 "python -c 'import versiontools; print(versiontools.__file__)'"
$ scl enable vt191 "python -c 'import versiontools; print(versiontools.__file__)'"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 验证输出是否包含以下行:
/opt/rh/vt191/root/usr/lib/python2.7/site-packages/versiontools/__init__.pyc
/opt/rh/vt191/root/usr/lib/python2.7/site-packages/versiontools/__init__.pyc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow