在配置脚本中安装依赖项

Installing dependencies in configure script

我正在编写一个需要 LLVM 的程序,并考虑使用 autotools 将其发布到 Linux,因此从用户的角度来看,该过程看起来就像众所周知的 ./configure && make && sudo make install

使用 autotools,通常依赖系统包管理器来安装依赖项。问题是,无论出于何种原因,这不适用于 LLVM;在 Ubuntu 14.04 上,apt-get 认为最新版本是 3.4,而实际上需要更新的版本。因此,我需要提供一个脚本来首先下载和构建 LLVM(其本地副本,不干扰系统上可能存在的任何旧版本),这个过程需要几个小时。

放置此进程最明显的地方是 configure 的开头。这算正常和合理吗?或者是否有约定 configure 应该只包含 autotools 通常放入其中的东西,安装依赖项应该是用户首先运行的另一个脚本?在后一种情况下,是否有关于应该调用什么单独脚本的约定?

不要在配置过程中安装任何东西。脚本名称是 "configure" 而不是 "install-dependencies"。

编写配置检查,如果缺少 llvm,请向用户解释如何安装它。如有必要,请提供单独的脚本来下载 llvm。

运行 以普通非特权用户而不是 root 身份配置(和设置)是一种很好的做法。所以你甚至可能没有安装任何东西的权限。您必须检查是否安装了 "sudo" 等。 也可能是用户安装的系统没有网络连接(防火墙等),所以你的下载会失败。