gpt4 book ai didi

c - 用于在 C 中查询已安装(Debian)包的库?

转载 作者:太空宇宙 更新时间:2023-11-04 03:06:40 25 4
gpt4 key购买 nike

我需要在我的 C 程序中检查某个系统上是否安装了某些 Debian 软件包。我可以使用外部 shell 脚本,它使用 system() 执行 apt-cache 输出的 grep 魔法,但它似乎有点不雅和 hackish,而且如果用户安装的语言不同,它也不会工作。有没有我可以连接到查询包安装的 C 库?

最佳答案

我认为您不会找到符合您标准的已交付库,但是,dpkg 程序在内部完全按照您的描述进行操作,并且不会链接到 C++ 库(或libstdc++):

tpost@tpost-desktop:~$ ldd -v /usr/bin/dpkg
linux-gate.so.1 => (0x00f33000)
libpthread.so.0 => /lib/tls/i686/cmov/libpthread.so.0 (0x00dfb000)
libc.so.6 => /lib/tls/i686/cmov/libc.so.6 (0x0077a000)
/lib/ld-linux.so.2 (0x006a6000)

如果你 apt-get source dpkg ,我想你会在源代码树的 lib/dpkg 中找到你需要的代码,特别是 database.cparse.c

诀窍当然是从中提取您需要的内容。此外,GPL 可能会或可能不会同意您手头的项目,但至少它是一个需要研究的实现。

dpkg读取数据库的例子可以通过dpkg -l | 查看grep ii,例如,查看所有已安装的包。听起来您只需要将这些信息放入一个优雅的数组或列表中,我认为您会在 dpkg 中找到关于如何做到这一点的灵感。

如果您最终编写了自己的库(或包装 dpkg 中的位),请将其放在其他人可以找到的地方。您的需求是许多人共有的经常性需求。

关于c - 用于在 C 中查询已安装(Debian)包的库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4115946/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com