Создать пакет RPM из сценария ANT под Windows

Мне нужно создать пакет RPM из сценария ANT, который запускается на компьютере с Windows. Этот пакет должен содержать классы результатов сборки, а также некоторые другие дополнительные ресурсы.

Я предполагаю, что где-то должна быть какая-то программа, которую можно вызвать из командной строки для создания этого пакета.

Причина, по которой я хочу сделать это под Windows, заключается в том, что у нас есть сценарий, который создает установщики для нескольких разных платформ, и все уже настроено для Windows, поэтому я хочу избежать боли, связанной с переносом всего на Linux.

Вы знаете, как этого добиться?

Обновлено: Для этого я использовал отдельную машину Linux. Я копирую все файлы с помощью задачи scp, а затем удаленно выполняю команду rpm с помощью задачи ssh. Если эта задача возвращает код успеха, я копирую полученный rpm обратно с помощью scp.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
13
0
11 564
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Просматривая руководство Ant, я обнаружил следующую необязательную задачу:

http://ant.apache.org/manual/Tasks/rpm.html

Однако это работает только с компьютерами Linux.

Я не думаю, что это возможно, пакеты времени выполнения, созданные для linux, не будут работать в Windows (мы же не ожидаем, что библиотеки DLL и exes используются в Linux, правда!) Cygwin сталкивается с аналогичными проблемами, и они четко заявляют, что делают это путем компиляции исходных файлов для Windows.

Некоторые приложения Linux можно скомпилировать непосредственно для Windows. На самом деле у меня это установлено: unxutils.sourceforge.net

Mario Ortegón 16.01.2009 18:43

В RPM нет ничего, что мешало бы ему работать в Windows. Это просто неисполняемый формат файла. Все, что понимает формат файла, может работать с ним, независимо от платформы. Материал В RPM также может быть независимым от платформы - файлы jar, скрипты Python и т. д.

Darryl 05.10.2016 19:14
Ответ принят как подходящий

Мне не известны какие-либо пакеты для этого, но это может быть просто мое незнание.

Два предложения:

Настройте машину Linux (отдельный ПК или виртуальную машину) и установите rpm удаленно с помощью сценариев (см. ssh / scp / самба). Это кажется мне безопасным подходом, позволяющим избежать полной миграции среды сборки.

Более смелым подходом было бы написание собственных файлов RPM с использованием Java. Формат файлов RPM кажется заголовком, за которым следует один из ряда стандартных архивных форматов. Потребуется некоторый анализ содержимого архива, поэтому этот подход может занять довольно много времени в краткосрочной перспективе (хотя он, вероятно, приведет к более быстрой сборке).

Думаю, я попробую версию №1. Я думал о том, чтобы сделать что-то подобное, но я хотел проверить, есть ли способ получше.

Mario Ortegón 20.01.2009 11:01

Я использовал ant tasks scp и ssh, чтобы запустить процесс сборки на отдельном компьютере. Когда вызов rpm -bb завершился, я снова скопировал файл с помощью scp.

Mario Ortegón 22.01.2009 16:18

Возможное решение - использовать чистый инструмент java RPM Manipulation, такой как тот, который описан в:

http://jrpm.sourceforge.net/rpmspec/index.html

А если вы используете Groovy, есть обертка для redline здесь

Dan Tanner 03.03.2012 05:42

Также рассмотрите java-библиотеку redline-rpm и задачу ant. https://github.com/craigwblake/redline

Не стесняйтесь взглянуть на мой пример здесь: stackoverflow.com/questions/26193454/…

gouessej 05.10.2014 03:08

Дурацкое управление пакетами может это сделать. Вы должны иметь возможность запускать его как с JRuby, так и с MRI Ruby.

fpm -s dir -t rpm mydir - или другое заклинание, в котором вы указываете ключевые слова rpm. См. fpm --help.

Я бы процитировал автора, это убедило меня попробовать fpm: «Мне нужен простой способ создавать пакеты без всякой ерунды. В моей собственной инфраструктуре меня не интересуют политика Debian и рекомендации по упаковке RedHat - меня интересуют правила моей группы. владеют культурой стиля и очень заинтересованы в выполнении работы ».

Piotr Czapla 09.08.2013 12:19

Другие вопросы по теме