Autotools 套件错误放置“man”文件导致安装失败

Posted

技术标签:

【中文标题】Autotools 套件错误放置“man”文件导致安装失败【英文标题】:Autotools suite misplaces "man" file leading to installation failure 【发布时间】:2014-05-26 13:16:09 【问题描述】:

在我必须调整的软件中,man 文件位于doc/ 下,还有一个简单的Makefile.am 文件:

man_MANS = software.1
EXTRA_DIST = $(man_MANS)

在安装时,我希望make install 将手册复制到/usr/local/share/man/ 下,但是脚本会尝试将man 安装在/usr/local/share/man/man1 下——它不存在——抛出错误并停止进程。

不过,如果我将 software.1 分配给 man1_MANS,我会期待类似的行为。

发生了什么事? automake 怎么可能不创建不存在的文件夹?

【问题讨论】:

为我工作。您使用的是哪个版本的 automake? 为什么你希望手册页安装在/usr/local/share/man而不是/usr/local/share/man/man1 @WilliamPursell automake (GNU automake) 1.14.1 --- autoconf (GNU Autoconf) 2.69 据我了解,使用变量 manX_MANS 会将手册复制到名为 manX 的子目录下。我错了吗 ?我对 Autotools 不是很有经验,因为我仍然手动编写 Makefile。 你是对的。 Automake 将构造一个Makefile.inconfigure 将使用它来创建Makefile,它将有一个install 目标,它将创建一个目录$(DESTDIR)$(mandir)/man1(默认为/usr/local/share/man/man1)并安装software.1 到那个位置。如果这没有发生,那么您的构建文件中的其他内容是错误的。创建一个简单的项目(除了 software.1、configure.ac 和 Makefile.am),看看是否有相同的行为。 始终使用man_MANS = software.1 make 尝试在不存在的/usr/local/share/man/man1 下安装software.1。所以,如果我不能更改目标目录,我应该在其他地方手动添加mkdir 命令吗? 【参考方案1】:

man_MANS 会根据您给它的扩展名尝试找出将手册放在哪个部分,因此在这种情况下它会安装到$mandir/man1 中是正确的。

既然您说MKDIR_P 在您的输出中为空,请尝试确保在您的configure.ac 中调用AC_PROG_MKDIR_P(它应该由AM_INIT_AUTOMAKE 自动调用,但既然您说它很旧,它可能有一些问题)。

【讨论】:

以上是关于Autotools 套件错误放置“man”文件导致安装失败的主要内容,如果未能解决你的问题,请参考以下文章

如何配置 autotools/gcc 以使用绝对路径打印警告和错误?

autotools:如何测试需要配置文件的程序?

autotools:C 编译器无法创建可执行文件

man在kali的配置在哪里?

linux中如何安装autotools系列工具

我的Man脚本应该放在哪里才能工作?