0

我的主要问题是自动工具创建了指向安装、复制、丢失、安装-sh 和 depcomp 的链接。当我试图查看它们时,我看到它们是作为链接上传的,所以我用真实文件替换它们,这样它们就可以查看了。我错过了一些基本的东西吗?当我从“make dist”解压我的 gz 文件时,它是这样的:

分布树(减去源目录)

-rw-r--r-- 1 ojblass 用户 18591 2009-05-30 03:23 Makefile.in
-rwxr-xr-x 1 ojblass 用户 136168 2009-05-30 03:20 配置
drwxr-xr-x 3 ojblass 用户 4096 2009-05-30 03:20 autom4te.cache
-rw-r--r-- 1 ojblass 用户 32230 2009-05-30 03:20 aclocal.m4
-rw-r--r-- 1 ojblass 用户 251 2009-05-30 03:20 configure.ac
-rw-r--r-- 1 ojblass 用户 626 2009-05-30 03:11 作者
-rwxr-xr-x 1 ojblass 用户 120 2009-05-30 03:11 autogen.sh
-rw-r--r-- 1 ojblass 用户 737 2009-05-30 03:11 ChangeLog
-rw-r--r-- 1 ojblass 用户 35147 2009-05-30 03:11 复制
-rwxr-xr-x 1 ojblass 用户 17867 2009-05-30 03:11 depcomp
-rwxr-xr-x 1 ojblass 用户 199 2009-05-30 03:11 example.pl
-rwxr-xr-x 1 ojblass 用户 152 2009-05-30 03:11 example.sh
-rw-r--r-- 1 ojblass 用户 9512 2009-05-30 03:11 安装
-rwxr-xr-x 1 ojblass 用户 13620 2009-05-30 03:11 install-sh
-rw-r--r-- 1 ojblass 用户 215 2009-05-30 03:11 Makefile.am
-rwxr-xr-x 1 ojblass 用户 11135 2009-05-30 03:11 丢失
-rw-r--r-- 1 ojblass 用户 75 2009-05-30 03:11 新闻
-rwxr-xr-x 1 ojblass 用户 507 2009-05-30 03:11 profile.sh
-rw-r--r-- 1 ojblass 用户 2605 2009-05-30 03:11 自述文件
-rw-r--r-- 1 ojblass 用户 201 2009-05-30 03:11 README_developers
-rwxr-xr-x 1 ojblass 用户 382 2009-05-30 03:11 run.sh
-rw-r--r-- 1 ojblass 用户 481 2009-05-30 03:11 TODO
-rwxr-xr-x 1 ojblass 用户 117 2009-05-30 03:11 有用的.sh

我计划删除 README_developers 并在 README 中创建两个部分。我还在考虑删除 run.sh 和 profile.sh 并使它们成为 make 测试目标的一部分(需要阅读一些内容)。我不认为 TODO 项属于源代码分发,但也许可以将它放在项目的源代码树中。任何超出链接问题的额外指针表示赞赏。

4

2 回答 2

2

简短的回答: 留下那些符号链接(除了安装)将被伪造符合GNU 编码标准

默认情况下,automake 会检查是否符合 GNU 标准(需要存在以下文件:INSTALL、NEWS、README、COPYING、AUTHORS 和 ChangeLog)。可以通过将 --foreign 选项传递给 automake (编辑 autogen.sh 并重新运行它)来关闭该检查(并安全地删除其中一些文件)。

链接是在使用 --add-missing 选项调用 automake 时创建的,除非给出 --copy 选项,否则会为丢失的文件创建符号链接,而不是复制它们。这是为了在您安装较新的 automake 时使这些文件(实际上仅 INSTALL)保持最新。Regerding Jonathan 的回答这些符号链接不是问题:在制作 tarball 之前,所有分布式文件都被复制到单独的目录中。如果要编辑它们,请将它们更改为常规文件。

其他文件(README_developers、run.sh、profile.sh、TODO 等)可能由您正在使用的 IDE 生成并添加到 EXTRA_DIST顶部 Makefile.am 中的变量中。您可以通过编辑将它们从分发中删除EXTRA_DIST,然后您也可以从源中删除它们。

其余部分由 autoconf 和 automake 自动生成:

  • aclocal.m4
  • autom4te.cache
  • 配置
  • depcomp
  • 安装-sh
  • 生成文件.in
  • 失踪

如果您想进一步整理您的顶级源目录,您可以添加 AC_CONFIG_AUX_DIR([scripts])到 configure.ac。这样一些脚本将在scripts目录中找到位置。

更新:

GNU 编码标准仅描述了这些文档文件在分发中存在的要求以及应该包含哪些信息。--add-missing 选项用于提醒程序员应该写入哪些文件。显然,拥有空 NEWS 或 AUTHORS 文件不会使项目更符合标准。

只有 ChangeLog 文件对其格式有严格的要求。在某些项目中,ChangeLog 是从格式正确的提交消息中自动生成的。在 Darcs 上很简单darcs changes >ChangeLog。如果您使用 Subversion,您可以查看:svn2logsvn2cl

如前所述,将 INSTALL 文件保留为符号链接可能是合理的,但前提是不需要有关安装的项目特定信息(即没有额外的配置脚本参数等)。

于 2009-06-04T11:16:03.027 回答
1

TODO 文件可以进入发行版;它向消费者表明了您认为产品中存在的缺陷,并且它们是指向可能有助于改进产品的领域的潜在贡献者的指针。(另外,如果你跌倒在公共汽车下,它会帮助其他人接管使用当前的发布材料。)

使用子目录来保存大部分配置材料可能是值得的。

关于您的主要问题-文件是“链接”还是“符号链接”?-h除非您告诉 (GNU) tar 无论如何都要遵循它们(' ' 或 ' ') ,否则符号链接对于打包的用处不大--dereference。如果唯一的符号链接是指向这些文件的,那就行了;如果您在发行版本身中使用符号链接,则可能会适得其反。

于 2009-06-04T05:10:47.590 回答