当前位置: 首页>>技术教程>>正文


在ac-aux中找不到install-sh,install.sh或shtool

, ,

问题描述

这是我第一次尝试在Linux机器上编译和安装任何东西。我通过git获得了最新版本的https://github.com/processone/exmpp,并阅读了以下说明:

2. Build and install

Exmpp uses the Autotools. Therefore the process is quite common:

$ ./configure $ make $ sudo make install 

键入./configure后,我得到错误

Cannot find install-sh, install.sh, or shtool in ac-aux

谷歌几乎没有任何帮助。根本不确定我应该做什么。任何帮助将非常感激

最佳解决方法

我知道它使用以下工具创建配置脚本:

libtoolize --force
aclocal
autoheader
automake --force-missing --add-missing
autoconf
./configure

我没有所有的依赖关系,所以我现在不能测试它,但这通常是如何从ac文件创建配置脚本的。

次佳解决方法

那么,我试过sebastian_k的答案,它不适用于我(./configure中途崩溃与一个非常奇怪的错误)。

但是,对于我来说,复制这个build log I found中使用的指令是什么

简短的版本(所以你不必自己穿过它)是:

$ autoreconf -vif
$ ./configure --prefix=/usr/lib/erlang/lib
$ make
$ sudo make install

第三种解决方法

这个问题以及这里的大多数其他答案是由于误解了如何分发使用GNU Build System(又名Autotools)的项目而产生的。事实上,就OP提到的Erlang XMPP library而言,误解似乎是开发者的一部分。

以正确的方式获得软件

如果您只想编译并安装GNU Autotools发布的项目,那么您不应该从源代码管理系统中检查它。您应该下载由开发人员提供的打包版本。这些通常采用在项目网站上分发的tarball的形式。对于完全托管于GitHub,Savannah或某些类似托管服务的项目,通常会在标有”Download”或”Releases”的链接后面找到这些tarball。您解开软件包并说出标准./configure && make && sudo make install咒语的一些变体。就这样;您不需要调用任何GNU Autotools,甚至不需要在系统上安装GNU Autotools。

您,用户不需要GNU Autotools编译Autotools-packaged项目的原因是,开发人员已经使用各种Autotools程序生成”distribution tarball”,该程序可用于在任何Unix-like系统上构建软件。分发tarball包含一个高度可移植的configure脚本,用于扫描构建环境,检查依赖关系并构建一个为您的系统定制的Makefile

那么你什么时候需要Autotools?

您需要自己安装和调用GNU Autotools的唯一原因是您想对使用Autotools构建的项目进行开发工作。即使如此,除非您更改项目的依赖关系,否则您可能不需要Autotools。在这种情况下,您确实需要检出原始源,对Autotools-specific输入文件(configure.acMakefile.am等)进行适当更改,然后运行Autotools以生成新的configure文件。如果您想独立发布修订后的软件包,那么您可以使用由Autotools生成的Makefile生成新的分发tarball,然后将该tarball发布到某个在线的地方。

问题在于一些开发人员将他们的源代码库公开发布,但忽略发布他们的发行版tarball(或者很难找到他们发布的地方)。例如,Erlang XMPP library’s GitHub Releases不是publishing their distribution tarballs as GitHub Releases,而是原始资源库的tarball。这使得在没有GNU Autotools的情况下编译该项目成为了不可能的事情,这首先破坏了使用Autotools的全部目的。

长话短说总结

GNU Autotools是开发人员用来为用户制作便携式源代码包的东西。用户应该从这些源代码包下载和编译,而不是源代码控制系统的原始代码。如果开发人员不提供这些源代码包,那么他们没有正确使用Autotools,并且应该是gently slapped with a wet trout,直到他们看到他们的方式错误。

第四种方法

我遇到了这个问题,并发现它是由于configure.ac中的以下行:

AC_CONFIG_AUX_DIR([build-aux])

这条线本身并不坏,但它需要移近configure.ac文件的顶部。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1032.html,未经允许,请勿转载。