我可以将unix权限存储在zip文件中(使用apache ant构建)吗?

Pau*_*lor 10 java linux zip

我正在为Java应用程序构建一个linux安装程序,最后我得到了一个install.jar和一个setup.sh,我把它放在一个使用ant的zip文件中.

想法是用户解压缩zip文件,然后运行setup.sh,但问题是他们总是需要chmod setup.sh首先给自己执行权限.

我想删除此步骤,我不确定问题部分是否:

  1. 我在Windows上构建
  2. 我正在构建与ant zip任务
  3. 或者说,拉链不能提供权限,并且在没有x权限的情况下总是解压缩.

Bla*_*ine 23

您不必切换到tar文件.我不知道为什么不认识Ant的人会就这个话题提供建议.

使用zipfileset的filemode参数.记录在http://ant.apache.org/manual/Types/zipfileset.html

  • 一个具体的例子不会受到伤害. (5认同)

a_h*_*ame 13

您无法在ZIP文件中存储Linux/Unix文件权限.

使用ZIP标题内的"外部属性"字段编辑(在评论之后)这些属性可以存储在ZIP文件中.GNU unzip显然能够读取该附加字段并恢复文件权限.我不确定这是什么时候添加到ZIP格式,因为早期版本 - 来自MS-DOS世界 - 没有支持.

TAR格式 - 作为"本机"Unix/Linux格式 - 设计为包含文件属性,Ant可以创建TAR文件,以保留所有Linux/Unix操作系统的属性.

<tar compression="gzip" destfile="my-archive.tgz">
  <tarfileset mode="544" dir="dir_with_shell_scripts">
     <include name="*.sh"/>
  </tarfileset>
</tar>

  • @PaulTaylor:对于Unix/Linux用户来说,tar格式(通常)比ZIP格式更自然. (2认同)