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

2022-09-03 16:43:15

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

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

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

  1. 那 Im 建立在 Windows 上
  2. 那 Im 用蚂蚁拉链任务建造
  3. 或者 zip 不能预先包含权限,并且在没有 x 权限的情况下始终解压缩。

答案 1

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

使用 zipfileset 的文件模式参数。记录在 http://ant.apache.org/manual/Types/zipfileset.html


答案 2

不能将 Linux/Unix 文件权限存储在 ZIP 文件中。

通过使用 ZIP 标头内的“外部属性”字段进行编辑(在注释之后),这些属性可以存储在 ZIP 文件中。GNU显然能够读取该附加字段并恢复文件权限。我不确定这是何时添加到ZIP格式的,因为早期版本-来自MS-DOS世界-不支持此功能。unzip

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>

推荐