13

私は Java アプリケーション用の Linux インストーラーを構築しています。最終的には、ant を使用して zip ファイルに入れた install.jar と setup.sh が作成されます。

アイデアは、ユーザーがzipファイルを解凍してからsetup.shを実行することですが、問題は、最初にsetup.shをchmodして実行権限を付与する必要があることです。

このステップを削除したいのですが、問題の部分が次のとおりかどうかわかりません。

  1. そのイムはWindows上で構築しています
  2. ant zipタスクで構築していること
  3. または、zip はパーミッションを保持できず、常に x パーミッションなしで解凍されます。
4

7 に答える 7

26

tar ファイルに切り替える必要はありません。Ant を知らない人がこのトピックについてアドバイスを提供している理由がわかりません。

zipfileset の filemode パラメータを使用します。http://ant.apache.org/manual/Types/zipfileset.htmlで文書化

于 2014-01-16T17:50:09.347 に答える
15

Linux/Unix ファイルのアクセス許可を ZIP ファイルに保存することはできません。

ZIP ヘッダー内の「外部属性」フィールドを使用して(コメントの後に) 編集します。これらの属性は ZIP ファイル内に保存できます。GNUunzipは明らかにその追加フィールドを読み取り、ファイル許可を復元することができます。初期のバージョン (MS-DOS の世界から来たもの) ではこれがサポートされていなかったため、これがいつ ZIP 形式に追加されたのかはわかりません。

「ネイティブ」の Unix/Linux 形式である TAR 形式は、ファイル属性を含めるように設計されており、Ant はすべての Linux/Unix オペレーティング システムで属性を保持する TAR ファイルを作成できます。

<tar 圧縮="gzip" destfile="my-archive.tgz">
  <tarfileset mode="544" dir="dir_with_shell_scripts">
     <include name="*.sh"/>
  </tarfileset>
</tar>
于 2012-11-29T20:03:44.710 に答える
2

これはApache Commons Compressでできると思います。

第一段落:

内部および外部属性へのアクセス (一部の zip 実装で Unix パーミッションを格納するために使用されます)。

APIを見て、探してくださいsetUnixMode()

于 2012-11-29T20:04:54.993 に答える
1

最新の Linux ディストリビューションでの zip/unzip では、ファイルのアクセス許可が保持されます。ただし、Windows の zip がこれを尊重していることを確認する必要があります。

于 2014-09-19T23:44:38.070 に答える
0

zip ファイルの代わりに tar ファイルを使用すると、アクセス許可が保持されます。ファイルの所有者とグループは一致しない可能性がありますが、許可ビットは一致します。

于 2012-11-29T20:01:19.683 に答える
-1
<shellscript shell="sh" dir="abc" failonerror="true">
            zip -ry abc.zip *
</shellscript>

上記の ant スクリプトは、シェル スクリプトを呼び出して、パーミッションが適切に保持された zip アーカイブを作成します。Ant 1.7 以降で動作します。ただし、このantスクリプトをWindowsで実行することを確認したことはありません。これはMacで非常にうまく機能します。

于 2013-01-08T08:30:17.380 に答える