Мне нужно создать пакет RPM из сценария ANT, который запускается на компьютере с Windows. Этот пакет должен содержать классы результатов сборки, а также некоторые другие дополнительные ресурсы.
Я предполагаю, что где-то должна быть какая-то программа, которую можно вызвать из командной строки для создания этого пакета.
Причина, по которой я хочу сделать это под Windows, заключается в том, что у нас есть сценарий, который создает установщики для нескольких разных платформ, и все уже настроено для Windows, поэтому я хочу избежать боли, связанной с переносом всего на Linux.
Вы знаете, как этого добиться?
Обновлено: Для этого я использовал отдельную машину Linux. Я копирую все файлы с помощью задачи scp, а затем удаленно выполняю команду rpm с помощью задачи ssh. Если эта задача возвращает код успеха, я копирую полученный rpm обратно с помощью scp.




Просматривая руководство Ant, я обнаружил следующую необязательную задачу:
http://ant.apache.org/manual/Tasks/rpm.html
Однако это работает только с компьютерами Linux.
Я не думаю, что это возможно, пакеты времени выполнения, созданные для linux, не будут работать в Windows (мы же не ожидаем, что библиотеки DLL и exes используются в Linux, правда!) Cygwin сталкивается с аналогичными проблемами, и они четко заявляют, что делают это путем компиляции исходных файлов для Windows.
В RPM нет ничего, что мешало бы ему работать в Windows. Это просто неисполняемый формат файла. Все, что понимает формат файла, может работать с ним, независимо от платформы. Материал В RPM также может быть независимым от платформы - файлы jar, скрипты Python и т. д.
Мне не известны какие-либо пакеты для этого, но это может быть просто мое незнание.
Два предложения:
Настройте машину Linux (отдельный ПК или виртуальную машину) и установите rpm удаленно с помощью сценариев (см. ssh / scp / самба). Это кажется мне безопасным подходом, позволяющим избежать полной миграции среды сборки.
Более смелым подходом было бы написание собственных файлов RPM с использованием Java. Формат файлов RPM кажется заголовком, за которым следует один из ряда стандартных архивных форматов. Потребуется некоторый анализ содержимого архива, поэтому этот подход может занять довольно много времени в краткосрочной перспективе (хотя он, вероятно, приведет к более быстрой сборке).
Думаю, я попробую версию №1. Я думал о том, чтобы сделать что-то подобное, но я хотел проверить, есть ли способ получше.
Я использовал ant tasks scp и ssh, чтобы запустить процесс сборки на отдельном компьютере. Когда вызов rpm -bb завершился, я снова скопировал файл с помощью scp.
Возможное решение - использовать чистый инструмент java RPM Manipulation, такой как тот, который описан в:
http://jrpm.sourceforge.net/rpmspec/index.html
А если вы используете Groovy, есть обертка для redline здесь
Также рассмотрите java-библиотеку redline-rpm и задачу ant. https://github.com/craigwblake/redline
Не стесняйтесь взглянуть на мой пример здесь: stackoverflow.com/questions/26193454/…
Дурацкое управление пакетами может это сделать. Вы должны иметь возможность запускать его как с JRuby, так и с MRI Ruby.
fpm -s dir -t rpm mydir - или другое заклинание, в котором вы указываете ключевые слова rpm. См. fpm --help.
Я бы процитировал автора, это убедило меня попробовать fpm: «Мне нужен простой способ создавать пакеты без всякой ерунды. В моей собственной инфраструктуре меня не интересуют политика Debian и рекомендации по упаковке RedHat - меня интересуют правила моей группы. владеют культурой стиля и очень заинтересованы в выполнении работы ».
Некоторые приложения Linux можно скомпилировать непосредственно для Windows. На самом деле у меня это установлено: unxutils.sourceforge.net