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 环境变量

  1. 要为 PKG_CONFIG_PATH 宏更新 %{_libdir} 环境变量,请创建一个自定义脚本 /etc/profile.d/name.sh。当系统上启动 shell 时,脚本会被预加载。
    例如,创建以下文件:
    %{?scl_prefix}pc-libdir.sh
  2. 使用 pc-libdir.sh 简短脚本修改 PKG_CONFIG_PATH 变量以引用您的 .pc 文件:
    export PKG_CONFIG_PATH="%{_libdir}/pkgconfig:/opt/provider/software_collection/path/to/your/pc_files"
  3. 将文件添加到 Software Collection 软件包的 spec 文件中:
    SOURCE2: %{?scl_prefix}pc-libdir.sh
  4. 通过调整 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 环境变量

  1. 要为 PKG_CONFIG_PATH 宏更新 %{_datadir} 环境变量,请创建一个自定义脚本 /etc/profile.d/name.sh。当系统上启动 shell 时,脚本会被预加载。
    例如,创建以下文件:
    %{?scl_prefix}pc-datadir.sh
  2. 使用 pc-datadir.sh 简短脚本修改 PKG_CONFIG_PATH 变量以引用您的 .pc 文件:
    export PKG_CONFIG_PATH="%{_datadir}/pkgconfig:/opt/provider/software_collection/path/to/your/pc_files"
  3. 将文件添加到 Software Collection 软件包的 spec 文件中:
    SOURCE2: %{?scl_prefix}pc-datadir.sh
  4. 通过调整 Software Collection 软件包 spec 文件的 %install 部分将此文件安装到系统 /etc/profile.d/ 目录中:
    %install
    install -p -c -m 644 %{SOURCE2} $RPM_BUILD_ROOT%{?scl:%_root_sysconfdir}%{!?scl:%_sysconfdir}/profile.d/
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.