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