2010-12-21 7 views
8

Also habe ich ein Stück Software erstellt, das ich verpacken und an Arch Linux User Repositories, AUR, posten möchte - dass ich noch nie etwas für irgendeine Distribution verpackt habe - und Ich habe es auch verpackt und installiert auf meinem eigenen Rechner über Archs Paketmanager Pacman erfolgreich, aber jetzt frage ich mich, wie um alles in der Welt werde ich die Ordner und Dateien strukturieren?Linux-Software verpacken und dabei eine vernünftige Dateistruktur beibehalten

Normalerweise, wenn ich Software schrieb, verwende ich diese Struktur:

build/| src/| Makefile

Als Minimum, und im Falle dieser Software, das Makefile tut nichts mehr als kompilieren eine .cpp-Datei von src/Build /. Um das Arch-Paket zu erstellen, musste ich auch eine .rc-Datei erstellen, um das Programm ordnungsgemäß als Daemon und die PKGBUILD-Datei zu verwenden, die dem makepkg-Programm die Erstellung des Installer-Pakets - diese beiden Dateien - mitteilt sind jedoch spezifisch für Arch. Wenn ich das Programm für say debian packen möchte, würde ich eine andere Reihe von Dateien benötigen, um dies zu tun, aber diese Dateien funktionieren nur für Debian. Jetzt kann ich nicht einfach die .rc Datei und die PKGBUILD Datei in den Programmstammordner legen, da das "ein Durcheinander" wäre, besonders wenn ich auch Dateien hätte, um ein Paket für debian zu erstellen, aber wo stelle ich das ein Distro-spezifische Dateien? Ich muss es im Root-Ordner des Programms haben - zumindest - um es verfolgen zu können, und mein erster Gedanke war, mit einer Struktur wie Distro/Arch/für Arch Linux spezifische Dateien und dann der PKGBUILD-Datei zu gehen würde einfach das Makefile im Programmstammordner ausführen und die kompilierte Datei von build/to distro/arch/kopieren, bevor es irgendwas anderes gemacht hat, aber ich habe herausgefunden, dass ich PKGBUILD nicht auf diese Weise und Leute auf #archlinux auf Freenode auch bekommen konnte sagte, es war keine kluge Idee.

Wo also stelle ich die Distro-spezifischen Dateien? Wenn ich wüsste, dass ich dieses Programm nur für Arch bereitstellen müsste, wäre es einfach, es nur für Makepkg zu strukturieren, aber ich mag es nicht, die Software so zu sperren, und ich könnte mir auch vorstellen, Pakete für andere Bürgermeisterdistributionen wie debian bereitzustellen Wie erreiche ich dies, während ich eine vernünftige Dateistruktur beibehalte?

Grüße, Chris Buchholz

Antwort

2

Sie tarballs finden sehr oft in ein Verzeichnis 'debian' genannt, die die Debian-spezifischen Dateien enthält. Ich würde den gleichen Weg gehen und ein Verzeichnis 'Archlinux' erstellen und die Dateien dort ablegen.

Dann würde ich fortfahren und eine Datei README in das Verzeichnis archlinux stellen, das erklärt, wie man das PKGBUILD richtig verwendet.

Eine Lösung könnte sein, eine Regel in Ihren Makefile 'package-arch' zu schreiben, der PKGBUILD in das Stammverzeichnis kopiert, makepkg ausführt und anschließend den redundanten PKGBUILD löscht.

Es ist hackish, also würde ich auch einen Fehlerbericht für die Leute von Arch schreiben, um diese Einschränkung zu beheben. Haben Sie jedoch versucht, makepkg -p archlinux/PKGBUILD?

+1

Vielen Dank für Ihre Antwort, ypnos. Ich fand es sehr inspirierend, wie ich das Projekt strukturieren würde. Ich entschied, dass ich das Makefile nicht mit Distro-Besonderheiten mischen würde, und der Befehl makepkg -p funktionierte auch nicht. Aber ich fand heraus, dass ich der PKGBUILD-Datei einfach sagen konnte, die Quelldateien von src/zu übernehmen und sie in archlinux/zu kopieren, bevor sie von ihnen abhängig ist und Dinge erstellt, und das funktioniert großartig. – chrisbuchholz

Verwandte Themen