2009-01-16 4 views
13

Ich muss ein RPM-Paket von einem ANT-Skript erstellen, das auf einem Windows-Computer ausgeführt wird. Dieses Paket muss die Ergebnisklassen aus dem Build sowie einige weitere zusätzliche Ressourcen enthalten.Erstellen RPM-Paket von ANT-Skript unter Windows

Ich denke, es sollte irgendwo ein Programm sein, das von der Kommandozeile aufgerufen werden kann, um dieses Paket zu erstellen.

Der Grund, warum ich dies unter Windows tun möchte, ist, dass wir ein Skript haben, das Installer für mehrere verschiedene Plattformen erstellt, und alles ist bereits für Windows konfiguriert, so dass ich den Schmerz der Migration alles auf Linux vermeiden möchte.

Wissen Sie, wie dies erreicht werden könnte?

EDIT: Ich habe eine separate Linux-Maschine verwendet, um dies zu tun. Ich kopiere alle Dateien mit dem scp-Task und führe dann den rpm-Befehl mit der ssh-Task remote aus. Wenn diese Aufgabe einen Erfolgscode zurückgibt, kopiere ich die resultierende Drehzahl zurück mit scp.

Antwort

2

Ich kenne keine Pakete, um dies zu tun, aber das könnte nur meine Ignoranz sprechen.

Zwei Vorschläge:

eine Linux-Maschine (separater PC oder ein virtuelle Maschine) und Kit die Drehzahl der Ferne über Skripte einrichten (siehe ssh/scp/samba). Dies scheint mir ein sicherer Ansatz zu sein, der eine vollständige Migration der Umgebung vermeidet.

Ein abenteuerlicherer Ansatz wäre es, Ihre eigenen RPM-Dateien mit Java zu schreiben. The RPM file format scheint eine Kopfzeile zu sein, gefolgt von einem von mehreren Standard-Archivformaten. Eine Analyse des Archivinhalts wäre erforderlich, daher könnte dieser Ansatz kurzfristig sehr zeitaufwendig sein (obwohl dies wahrscheinlich zu schnelleren Builds führen würde).

+0

Ich denke, ich werde Version 1 versuchen. Ich über etwas ähnliches, aber ich wollte überprüfen, ob es einen besseren Weg gab –

+0

Ich habe die Ant-Tasks scp und ssh verwendet, um den Build-Prozess in einem separaten Computer zu starten. Als der Aufruf von rpm -bb beendet war, habe ich scp verwendet, um die Datei wieder zu kopieren. –

0

Ich glaube nicht, dass es möglich ist, Runtime-Pakete gebaut für Linux wird nicht mit Windows funktionieren (wir erwarten keine Dlls und Exes auf Linux, oder?). Cygwin sieht sich ähnlichen Herausforderungen gegenüber und stellt klar, dass sie dies tun, indem sie Quelldateien für Windows kompilieren.

+0

Es ist möglich, bestimmte Linux-Anwendungen nativ für Windows zu kompilieren. In der Tat habe ich dies installiert: http://unxutils.sourceforge.net/ –

+0

Es gibt nichts über ein RPM, das verhindert es von Natur aus in Windows arbeiten. Es ist nur ein nicht ausführbares Dateiformat.Alles, was das Dateiformat versteht, kann unabhängig von der Plattform damit arbeiten. Das Zeug IN RPM kann auch plattformunabhängig sein - JAR-Dateien, Python-Skripte, was auch immer. – Darryl

4

Eine mögliche Lösung ist ein reines Java RPM Manipulation Werkzeug, wie die in beschriebenen zu verwenden: betrachten

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

+0

Und wenn Sie groovy verwenden, gibt es einen Wrapper für redline [hier] (https://github.com/TrigonicSolutions/gradle-rpm-plugin) –

1

Freaking Package Management kann dies tun. Sie sollten es sowohl mit JRuby als auch mit MRI Ruby ausführen können.

fpm -s dir -t rpm mydir - oder eine andere Beschwörungsformel, in der Sie die rpm-Schlüsselwörter angeben. Siehe fpm --help.

+0

Ich würde den Autor zitieren, hat es mich überzeugt, fpm zu versuchen: "Ich möchte eine einfache Möglichkeit, Pakete ohne all den Unsinn zu erstellen "In meiner eigenen Infrastruktur habe ich kein Interesse an Debian-Richtlinien und RedHat-Verpackungsrichtlinien - ich habe Interesse an der eigenen Stilkultur meiner Gruppe und habe ein sehr starkes Interesse daran, Arbeit zu erledigen." –