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.in
,configure
将使用它来创建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”文件导致安装失败的主要内容,如果未能解决你的问题,请参考以下文章