2009-05-30 48 views
0

我的主要问题是,autotools创建了链接到INSTALL,COPYING,missing,install-sh和depcomp。当我试图查看它们时,我看到它们是作为链接上传的,所以我用真实文件替换它们以使它们可见。我错过了一些基本的东西?当我解压从“让DIST”我GZ文件,这是什么样子:自动工具生成的链接应该在上传之前被替换?

分发树(减号源目录)

 
-rw-r--r-- 1 ojblass users 18591 2009-05-30 03:23 Makefile.in 
-rwxr-xr-x 1 ojblass users 136168 2009-05-30 03:20 configure 
drwxr-xr-x 3 ojblass users 4096 2009-05-30 03:20 autom4te.cache 
-rw-r--r-- 1 ojblass users 32230 2009-05-30 03:20 aclocal.m4 
-rw-r--r-- 1 ojblass users 251 2009-05-30 03:20 configure.ac 
-rw-r--r-- 1 ojblass users 626 2009-05-30 03:11 AUTHORS 
-rwxr-xr-x 1 ojblass users 120 2009-05-30 03:11 autogen.sh 
-rw-r--r-- 1 ojblass users 737 2009-05-30 03:11 ChangeLog 
-rw-r--r-- 1 ojblass users 35147 2009-05-30 03:11 COPYING 
-rwxr-xr-x 1 ojblass users 17867 2009-05-30 03:11 depcomp 
-rwxr-xr-x 1 ojblass users 199 2009-05-30 03:11 example.pl 
-rwxr-xr-x 1 ojblass users 152 2009-05-30 03:11 example.sh 
-rw-r--r-- 1 ojblass users 9512 2009-05-30 03:11 INSTALL 
-rwxr-xr-x 1 ojblass users 13620 2009-05-30 03:11 install-sh 
-rw-r--r-- 1 ojblass users 215 2009-05-30 03:11 Makefile.am 
-rwxr-xr-x 1 ojblass users 11135 2009-05-30 03:11 missing 
-rw-r--r-- 1 ojblass users  75 2009-05-30 03:11 NEWS 
-rwxr-xr-x 1 ojblass users 507 2009-05-30 03:11 profile.sh 
-rw-r--r-- 1 ojblass users 2605 2009-05-30 03:11 README 
-rw-r--r-- 1 ojblass users 201 2009-05-30 03:11 README_developers 
-rwxr-xr-x 1 ojblass users 382 2009-05-30 03:11 run.sh 
-rw-r--r-- 1 ojblass users 481 2009-05-30 03:11 TODO 
-rwxr-xr-x 1 ojblass users 117 2009-05-30 03:11 usefull.sh 

我在去除README_developers,使两节计划自述文件。我也在考虑删除run.sh和profile.sh,并将它们作为make测试目标的一部分(需要一些阅读)。我不认为TODO项目属于源代码发布版本,但可能在项目的源代码树中使用它。任何额外的指针之上和超出链接问题表示赞赏。

回答

1

简短的回答:离开那些符号链接(比安装其他)将 伪造符合GNU coding standards

默认情况下的automake进行检查是否符合GNU标准 (需要以下文件存在:安装,新闻,README, 复制,作者和更新日志)。人们可以把该检查(和 安全地删除一些这些文件)通过传递--foreign选项 的automake(做编辑autogen.sh并重新运行它)。

链接是在automake被调用时创建的--add-missing 选项,除非--copy选项被创建,为 创建符号链接,然后复制它们。这是为了让那些 文件(实际上是只安装)最新每当你安装新的automake 。重申乔纳森的回答这些符号链接不是问题:所有 分布式文件在制作tarball之前被复制到单独的目录。 如果要编辑它们,请将它们更改为常规文件。

其他文件(README_developers,run.sh,profile.sh,TODO 等)可能是由IDE生成您正在使用,并添加到 EXTRA_DIST变量在顶部Makefile.am。你可以从 分布编辑EXTRA_DIST删除它们,之后你还可以从源中删除 他们。

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

  • aclocal.m4
  • autom4te.cache
  • 配置
  • depcomp
  • 安装-SH
  • Makefile.in
  • 失踪

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

更新:

的GNU编码标准只是描述这些 文档文件的要求是分布和什么 信息应包括有内。 --add-missing选项是 提醒程序员应该写什么文件。很显然,如果有空的 NEWS或AUTHORS文件将不会使该项目更符合标准。

只有ChangeLog文件在其格式上有严格的requirements。 在某些项目中,ChangeLog会自动从 格式的提交消息中自动生成。在Darcs上它只是darcs changes >ChangeLog。 如果您使用Subversion,您可能会看:svn2log,svn2cl

如前所述INSTALL文件可能是合理的,以保持作为符号链接,但只有 如果需要有关安装 (即没有额外的配置脚本参数等)没有项目的具体信息。

1

待办文件可以在分配去;对于消费者来说,您认为产品中存在缺陷,这是一种指向可能有助于改善产品的领域潜在贡献者的指针。 (另外,如果你的总线下下跌,这将帮助其他人接手使用当前版本的材料。)

它可能使用一个子目录来保存批量配置材料的价值。

关于你的主要问题 - 是文件“链接”或“符号链接”?符号链接对于打包不太有用,除非您告诉(GNU)tar随时关注它们('-h'或'--dereference')。如果唯一的符号链接适用于这些文件,那么可行;如果您在分配本身中使用符号链接,则可能会产生更多反效果。

+0

用链接数量来看ls输出== 1很容易判断那些符号链接不是硬链接。 – lispmachine 2009-06-04 11:18:18

+0

erm ..现在我知道这些是来自解压配置tarball的常规文件 – lispmachine 2009-06-04 11:21:32