Создать RPM-пакет из ANT-скрипта под Windows - PullRequest
13 голосов
/ 16 января 2009

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

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

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

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

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

Ответы [ 6 ]

8 голосов
/ 26 ноября 2009

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

4 голосов
/ 16 января 2009

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

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

2 голосов
/ 16 января 2009

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

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

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

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

2 голосов
/ 16 января 2009

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

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

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

1 голос
/ 20 января 2013

Freaking Package Management может сделать это. Вы должны быть в состоянии запустить его как с JRuby, так и на MRI Ruby.

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

0 голосов
/ 16 января 2009

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

...