每个人在某个时候都必须从 Linux 的源代码安装一个程序。我经常发现自己下载了想要安装的程序,运行后./configure
弹出很多错误消息,说你没有这个或你没有那个。
有没有一个网站可以清楚地显示该特定程序的依赖关系?有些网站在文件中有它README
,但大多数网站甚至没有。
有没有办法不通过命令就能找到所有依赖项./configure
?
答案1
由于不同发行版对软件包的命名不同,因此这非常难以实现。例如,在 Debian 上,一个软件包可能名为 libfoo,而其对应的开发软件包名为 libfoo-dev。在 RHEL/CentOS 上,它可能是 libfoo1 和 libfoo1-devel。
编写良好的 configure.ac(用于生成“configure”脚本)应该以元方式告诉您缺少哪个包。即
Checking for libfoo ... no
Checking for libfoo usability .... no
./configure: Error: You are missing the package 'libfoo' and possibly
'libfoo-dev(el)'
如果 configure: Error: 前面的错误不明显,这可让您使用 apt-cache / yum 搜索要安装的内容。通过 Google 搜索 configure 的输出通常可以找出您缺少的软件包。
这真实的当您的发行版提供的 libfoo 版本对于您尝试编译的程序来说太旧时,就会出现问题。在这种情况下,您必须构建 libfoo 本身,将其与发行版提供的版本分开安装,并告诉程序如何链接到它(也可以通过“configure”完成)
出于这个原因,我通常使用快速发展的发行版(例如 Ubuntu)作为我的开发机器。通常,我可以在 Universe 存储库中找到我需要的最新版本。
我只需要在 Debian Lenny 机器上升级 glibc只是能够构建和安装基于多线程 AIO 的 AoE 目标,再加上我自己的 2.6.31.6 内核,因为该程序需要 eventfd 支持。我理解你的痛苦 :)
然而,这也是自己构建东西的乐趣之一。一旦它起作用了,你就会感到双倍的满意。如果不起作用,你就会感到双倍的沮丧:)
答案2
有些程序会在您构建软件时找出依赖项。它们会监视构建过程,在需要文件时停止构建过程,安装提供该文件的软件包并恢复构建过程。
例如,在 Debian 中有自动适配。
答案3
答案4
- 检查项目的网站 - 他们很可能会列出依赖项。
- 不要担心某些并非错误的检查/失败。例如,大多数使用自动扫描的项目都会检查 awk、gawk、mawk 等……但安装其中一个或全部都没关系。
- 如果 configure 实际上因某个库的错误而停止,只需搜索它报告的名称。//
apt-cache search ...
通常yum search
你只需要 google。