You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Autotools安装生成的man页:Markdown转man的部署问题

解决方案

正确的Makefile.am配置需要分开处理分发的Markdown源文件和要安装的生成man文件,避免automake混淆两者的用途:

# 将Markdown源文件作为数据文件分发,确保tarball包含它们
dist_data_DATA = einksysstat.md einksysstat.config.md

# 指定要安装的最终man文件(转换后的.1/.5格式)
man1_MANS = einksysstat.1
man5_MANS = einksysstat.config.5

# 清理生成的man文件
CLEANFILES = $(man1_MANS) $(man5_MANS)

# Markdown转man文件的生成规则
einksysstat.1: einksysstat.md
	pandoc -f markdown -t plain --wrap=none $< -o $@

einksysstat.config.5: einksysstat.config.md
	pandoc -f markdown -t plain --wrap=none $< -o $@

配置说明

  • dist_data_DATA:Markdown文件会被打包进tarball,但不会被当作man文件处理,完美满足你“分发.md文件”的需求。
  • man1_MANS/man5_MANS:明确指定要安装的是转换后的.1/.5格式文件,automake会将它们安装到对应章节的man目录下。
  • 生成规则和CLEANFILES保留原有逻辑,确保构建时生成man文件,清理时删除临时生成的文件。

之前的问题根源

  1. 第一个配置错误:dist_man*_MANS变量是用来声明要安装和分发的man格式文件,automake会根据文件后缀识别man章节,所以它把.md文件当成了man源文件,安装时自动重命名为对应章节的.1/.5后缀,导致安装了错误的文件内容。
  2. 第二个配置错误:把生成的.1/.5文件放到dist_man*_MANS中,automake会认为这些是源码文件,distcheck时会检查它们是否存在于源码目录(但它们是构建时生成的),所以报错;同时tarball会包含这些生成的man文件,不符合你分发.md源文件的需求。

内容的提问来源于stack exchange,提问作者GraemeV

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 17:52:15