3.6. Software Collection .pc 文件支持
.pc 文件是 pkg-config 程序使用的特殊元数据文件,用于存储系统上可用库的信息。
如果您发布只在 Software Collection 环境中使用的 .pc 文件,或者除了系统上安装的 .pc 文件外,更新
PKG_CONFIG_PATH
环境变量。根据 .pc 文件中定义的内容,更新 PKG_CONFIG_PATH
宏的 %{_libdir}
环境变量(该宏扩展至库目录,通常为 /usr/lib/
或 /usr/lib64/
),或 %{_datadir}
宏(扩展至共享目录,通常为 /usr/share/
)。
如果在 .pc 文件中定义库目录,调整 Software Collection spec 文件的
PKG_CONFIG_PATH
部分来更新 %install
环境变量,如下所示:
%install cat >> %{buildroot}%{_scl_scripts}/enable << EOF export PKG_CONFIG_PATH="%{_libdir}/pkgconfig\${PKG_CONFIG_PATH:+:\${PKG_CONFIG_PATH}}" EOF
如果在 .pc 文件中定义共享目录,请通过调整 Software Collection spec 文件的
PKG_CONFIG_PATH
部分来更新 %install
环境变量,如下所示:
%install cat >> %{buildroot}%{_scl_scripts}/enable << EOF export PKG_CONFIG_PATH="%{_datadir}/pkgconfig\${PKG_CONFIG_PATH:+:\${PKG_CONFIG_PATH}}" EOF
以上两个示例都配置
enable
scriptlet,以便在启用了 Software Collection 时,它确保 Software Collection 中的 .pc 文件优先于系统上可用的 .pc 文件。
Software Collection 可以提供一个打包程序脚本,它可以被系统可见来启用 Software Collection,例如在
/usr/bin/
目录中。在这种情况下,请确保 .pc 文件对系统可见,即使禁用了 Software Collection。
要允许您的系统使用禁用的软件集合中的 .pc 文件,请使用与 Software Collection 关联的 .pc 文件的路径更新
PKG_CONFIG_PATH
环境变量。根据 .pc 文件中定义的内容,更新 PKG_CONFIG_PATH
宏的 %{_libdir}
环境变量(扩展至库目录),或 %{_datadir}
宏(扩展至共享目录)。
过程 3.5. 为 %{_libdir} 更新 PKG_CONFIG_PATH 环境变量
- 要为
PKG_CONFIG_PATH
宏更新%{_libdir}
环境变量,请创建一个自定义脚本/etc/profile.d/name.sh
。当系统上启动 shell 时,脚本会被预加载。例如,创建以下文件:%{?scl_prefix}pc-libdir.sh
- 使用
pc-libdir.sh
简短脚本修改PKG_CONFIG_PATH
变量以引用您的 .pc 文件:export PKG_CONFIG_PATH="%{_libdir}/pkgconfig:/opt/provider/software_collection/path/to/your/pc_files"
- 将文件添加到 Software Collection 软件包的 spec 文件中:
SOURCE2: %{?scl_prefix}pc-libdir.sh
- 通过调整 Software Collection 软件包 spec 文件的
%install
部分将此文件安装到系统/etc/profile.d/
目录中:%install install -p -c -m 644 %{SOURCE2} $RPM_BUILD_ROOT%{?scl:%_root_sysconfdir}%{!?scl:%_sysconfdir}/profile.d/
过程 3.6. 为 %{_datadir} 更新 PKG_CONFIG_PATH 环境变量
- 要为
PKG_CONFIG_PATH
宏更新%{_datadir}
环境变量,请创建一个自定义脚本/etc/profile.d/name.sh
。当系统上启动 shell 时,脚本会被预加载。例如,创建以下文件:%{?scl_prefix}pc-datadir.sh
- 使用
pc-datadir.sh
简短脚本修改PKG_CONFIG_PATH
变量以引用您的 .pc 文件:export PKG_CONFIG_PATH="%{_datadir}/pkgconfig:/opt/provider/software_collection/path/to/your/pc_files"
- 将文件添加到 Software Collection 软件包的 spec 文件中:
SOURCE2: %{?scl_prefix}pc-datadir.sh
- 通过调整 Software Collection 软件包 spec 文件的
%install
部分将此文件安装到系统/etc/profile.d/
目录中:%install install -p -c -m 644 %{SOURCE2} $RPM_BUILD_ROOT%{?scl:%_root_sysconfdir}%{!?scl:%_sysconfdir}/profile.d/