如何找到 Linux 发行版存储库中没有的源包的依赖项?

如何找到 Linux 发行版存储库中没有的源包的依赖项?

关于如何找到发行版存储库中存在的包的依赖项的讨论并不缺乏,但我一直无法找到如何获取我想要构建的任意源包的依赖项。

具体来说,我想在我的 Debian 9 系统上构建 Python 3.7。我不相信我在网上找到的关于此问题的各种博客文章,我想自己找到依赖项。由于 Python 3.7 不在 Debian 9 存储库中,因此选项build-dep没有apt-get帮助。

此外,我想知道如何更普遍地做到这一点,而不仅仅是与 Python 3.7 相关。我是第一次从源代码构建... 在源文件夹中打开了几个文件,看看是否能找到依赖项列表,但没有找到。

答案1

通常,源包附带一种机制来检查这些依赖关系:

  • setup.py用于python模块。
  • configure.ac / configureCMakeList.txtC/C++ 源代码
  • ETC...

只需启动构建过程并查看它是如何失败的:-)

无论如何,打包不良的源可能在构建时没有这种依赖性检查。

在这种情况下,通常是由于手写的 Makefile 造成的,解决方法很简单:检查 Makefile-s 中的链接依赖关系(即:gcc [..] -lblabla:该-l标志表示“链接库啦啦,因此您需要 libblabla)。尽管如此,即使您能够检查构建源代码所需的库,您也无法确定它的版本...

答案2

除了 binarym 的回答(很好)之外,在 LFS(从头开始的 Linux)上查找软件包也很有帮助。如果您拥有已编译到给定软件包的所有内容,那么您的依赖关系就没问题。

此外,BLFS(从头开始超越 Linux - 来自同一站点)中描述了更广泛的软件包选择,这些软件包描述包含依赖项和可选依赖项。

祝你好运。

相关内容