安装前检查依赖项?

安装前检查依赖项?

每个人在某个时候都必须从 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

许多发行版都有包管理器,其任务是解决依赖关系。如果你的发行版没有包管理器,你可以根据其他发行版包找到依赖关系。例如,Debian 软件包

例如杂种狗

如果没有包,我不知道如何找到所有依赖项。

答案4

  1. 检查项目的网站 - 他们很可能会列出依赖项。
  2. 不要担心某些并非错误的检查/失败。例如,大多数使用自动扫描的项目都会检查 awk、gawk、mawk 等……但安装其中一个或全部都没关系。
  3. 如果 configure 实际上因某个库的错误而停止,只需搜索它报告的名称。//apt-cache search ...通常yum search你只需要 google。

相关内容