Развертывание и выполнение чего-либо с Java на UNIX


У меня есть процесс Java (демон), который работает. Этот процесс используется как услуга. С помощью этой службы я могу загрузить подписанный zip-архив с доверенного сервера. После того, как я распакую ZIP-архив, я хочу выполнить двоичный файл в папке "unpacked".

Проблема в том, что этот двоичный файл не является исполняемым (нет 'x' в его файловом режиме) ... Я знаю, что его можно установить с помощью Java, но мне нужен универсальный способ.

У вас есть какие-нибудь идеи, как сделать развертывание в хорошем месте? путь?

(Да, это должна быть Java)

В основном я хочу восстановить биты режима файлов Unix после распаковки архива ZIP. Есть ли Java Lib, который может это сделать?

2 5

2 ответа:

Вы можете легко вызвать chmod команда из вашего приложения Java, чтобы добавить этот недостающий бит x. chmod является стандартным для Unix, как и сам исполняемый (x) бит.

Или вы можете сделать это прямо из Java.

Если вы хотите, чтобы исполняемый бит оставался установленным при декомпрессии, вы, вероятно, не должны использовать библиотеки декомпрессии Java. Попробуйте использовать Unix unzip команда для распаковки вашего архива-он поддерживает хранение и восстановление бит режима файлов Unix в течение довольно долгого времени. Если ваш поставщик Unix не имеет его, вы можете получить его из источника.

Если вы упаковываете файлы с помощью tar, а затем дополнительно сжимаете, он сохраняет ваши разрешения, как они были до упаковки. Используйте --preserve-permissions при распаковке.