如何将 pkg-config 名称映射到 yum/apt-get

Posted

技术标签:

【中文标题】如何将 pkg-config 名称映射到 yum/apt-get【英文标题】:how to map pkg-config names to yum/apt-get 【发布时间】:2013-08-30 19:43:29 【问题描述】:

许多 makefile 使用 pkg-config,但名称与包管理器无关(例如 yum / apt)。如何将 pkg-config 名称映射到它们?有什么诀窍吗?

示例:如果我这样做 yum searchName -- 查看名称并近似于 pkg-config 的名称

结果:

$ pkg-config --libs dbus-glib-0
Package dbus-glib-0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `dbus-glib-0.pc'
to the PKG_CONFIG_PATH environment variable
No package 'dbus-glib-0' found

$ sudo yum install dbus-glib
Loaded plugins: langpacks, refresh-packagekit
Package dbus-glib-0.100-5.fc19.i686 already installed and latest version
Nothing to do

$ sudo yum install dbus-glib-0
Loaded plugins: langpacks, refresh-packagekit
No package dbus-glib-0 available.
Error: Nothing to do

【问题讨论】:

【参考方案1】:

在 apt-get 的情况下,如果你有一些软件通过 pkg-config 抱怨这个丢失的包,例如:

配置:错误:未满足软件包要求(gtk+-2.0 >= 2.8): 找不到包“gtk+-2.0” 如果您考虑调整 PKG_CONFIG_PATH 环境变量 以非标准前缀安装的软件。 或者,您可以设置环境变量 GTK_CFLAGS 和 GTK_LIBS 以避免调用 pkg-config。 有关更多详细信息,请参见 pkg-config 手册页。 错误:无法运行 ./configure,这是配置 Banshee 所必需的

那么说明configure脚本正在寻找gtk+-2.0pkgconfig包。

那么,你可以这样做:

$ sudo apt-get 安装 apt-file ... $ apt-文件更新 ... $ apt-file search gtk+-2.0 | grep "\.pc" libgtk2.0-dev:/usr/lib/x86_64-linux-gnu/pkgconfig/gtk+-2.0.pc

这意味着你可以安装包libgtk2.0-dev

sudo apt-get install libgtk2.0-dev

并且依赖会得到满足。

在原始问题的特殊情况下:

$ apt-file search --package-only dbus-glib-1.pc
libdbus-glib-1-dev

(dbus-glib-0 似乎太旧,无法显示在我的系统中。)

【讨论】:

【参考方案2】:

pkg-config 文件通常由 -devel 包提供,因此在大多数情况下 foo.pc 由 libfoo-devel 提供。这仍然是猜测,但有两条捷径:

通过路径名安装,如果你知道 .pc 文件将在哪里结束

 $> yum install /usr/lib64/pkgconfig/foo.pc

这适用于任何文件,但您仍然需要猜测 .pc 文件的位置。最好的方法是使用实​​际的 pkgconfig 要求:

$> yum install "pkgconfig(foo)"

使用引号避免 shell 尝试解释括号。

【讨论】:

以上是关于如何将 pkg-config 名称映射到 yum/apt-get的主要内容,如果未能解决你的问题,请参考以下文章

如何将 JSON 字段名称映射到不同的对象字段名称?

JavaScript:如何映射两个对象以获得将第一个对象的 ID 映射到另一个对象的名称的输出?

Kafka Sink 如何将字段映射到具有不同主题和表模式名称的数据库

如何将从逻辑回归模型获得的系数映射到pyspark中的特征名称

本地化:如何将文化信息映射到脚本名称或 Unicode 字符范围?

如何将所有参数值的函数映射为列表?但在函数定义中有明确的参数名称