ZaHaDum
Anmeldungsdatum: 29. Oktober 2008
Beiträge: 297
|
Hallo Leute! Ich möchte ein von mir geschriebenes Programm als RPM- und DEB-Paket für 32- und 64-Bit Architekturen auf meiner Homepage veröffentlichen. Nun habe ich hier viele Anleitungen gefunden wie man aus einem tarball ein DEB-Paket macht, aber wie erzeuge ich den tarball, wenn ich nur meinen Quellcode habe? Schließlich nützt es nichts den zweiten Schritt zu kennen, wenn man den ersten noch nicht machen kann. Grüße und schon mal vielen Dank! ZaHaDum
|
Lasall
Ehemalige
Anmeldungsdatum: 30. März 2010
Beiträge: 7723
|
Hi ZaHaDum, erstelle den Tarball z.B. mit folgendem Befehl:
tar czvf TARBALL.orig.tar.gz QUELLORDNER/ --exclude-backups --exclude-caches-all --exclude-vcs Gruss
Lasall
|
ZaHaDum
(Themenstarter)
Anmeldungsdatum: 29. Oktober 2008
Beiträge: 297
|
Lasall schrieb: erstelle den Tarball z.B. mit folgendem Befehl:
tar czvf TARBALL.orig.tar.gz QUELLORDNER/ --exclude-backups --exclude-caches-all --exclude-vcs
Zum Packen ist es doch noch zu früh, oder? Wie schon gesagt habe ich NUR meinen Quellcode. Das heißt kein Makefile o.ä., sondern nur eine Datei mit dem fertigen C-Quellcode. Grüße ZaHaDum
|
Lasall
Ehemalige
Anmeldungsdatum: 30. März 2010
Beiträge: 7723
|
Hi ZaHaDum, möchtest du also erst ein Makefile erstellen? Um debhelper-kompatibel zu bleiben, richte die Targets "all " (zum Kompilieren) und "install " zum Installieren an die korrekte Stelle ein (Pfade mit $(DESTDIR) / anfangen). Alternativ, allerdings dann weniger kompatibel zur Installation "from Scratch", schreibe die Kompilier- und Installationsbefehle direkt in die debian/rules. Gruss
Lasall
|
ZaHaDum
(Themenstarter)
Anmeldungsdatum: 29. Oktober 2008
Beiträge: 297
|
Lasall schrieb: Hi ZaHaDum, möchtest du also erst ein Makefile erstellen? Um debhelper-kompatibel zu bleiben, richte die Targets "all " (zum Kompilieren) und "install " zum Installieren an die korrekte Stelle ein (Pfade mit $(DESTDIR) / anfangen). Alternativ, allerdings dann weniger kompatibel zur Installation "from Scratch", schreibe die Kompilier- und Installationsbefehle direkt in die debian/rules.
Moment, nicht so schnell bitte. Also nochmal ganz ausführlich: Ich habe meine eine C-Datei mit dem Quellcode, und sonst nichts! Mein endgültiges Ziel ist es meine Software als Paket zur Verfügung zu stellen. Ich weiß wie ich mit dem Dreisprung aus einem tarball einen Quellcode übersetzen und installieren kann. Ich weiß auch, dass ich einen fertigen tarball brauche, um ein Paket erstellen zu können. Aber ich weiß nicht wie ich aus dem reinen Quellcode einen tarballl mache. Zu einem tarball gehört ja nicht nur der Quellcode, sondern auch ein Makefile, eine ausführbare ./configure u.v.m. Was ich wissen möchte ist wie ich das alles erstelle, und das möglichst ausführlich, denn ich mache das zum ersten mal. Was du mit Targets oder "from Scratch" meinst, weiß ich nicht. Also bitte die "Einsteiger-Version". 😳 Grüße ZaHaDum
|
ZaHaDum
(Themenstarter)
Anmeldungsdatum: 29. Oktober 2008
Beiträge: 297
|
Inzwischen habe ich auf anderen Seiten immer wieder von den "GNU autotools" gelesen, die genau das machen sollen, was ich hier versuche zu klären. Die benötigen jedoch zusätzlich zum Quellcode eine Datei namens Makefile.am Wie muss die aussehen? Grüße ZaHaDum
|
Lasall
Ehemalige
Anmeldungsdatum: 30. März 2010
Beiträge: 7723
|
Hi ZaHaDum, ich würde auf die autotools verzichten und direkt ein Makefile schreiben. Das ist nicht viel mehr als ein Shellskript. Eine Datei configure brauchst du dafür auch nicht. Schaue dir mal ein konkretes Beispiel an (Beispiel apt-build): Makefile Gruss
Lasall
|
ZaHaDum
(Themenstarter)
Anmeldungsdatum: 29. Oktober 2008
Beiträge: 297
|
Lasall schrieb: ich würde auf die autotools verzichten und direkt ein Makefile schreiben. Das ist nicht viel mehr als ein Shellskript. Eine Datei configure brauchst du dafür auch nicht. Schaue dir mal ein konkretes Beispiel an (Beispiel apt-build): Makefile
Okay, wenn du das meinst, aber mit den autotools wäre es um einiges einfacher. Dann werde ich mich mal in das Thema Makefile einarbeiten. Dann hätte ich noch eine andere Frage: Im WIKI steht, dass mit chackinstall erstellte Pakete nicht zur Weitergabe geeignet wären. Warum ist das so und wie erstelle ich dann Pakete, die zur Weitergabe geeignet sind? Grüße Martin
|
Lasall
Ehemalige
Anmeldungsdatum: 30. März 2010
Beiträge: 7723
|
Hi ZaHaDum, du schriebst: Im WIKI steht, dass mit chackinstall erstellte Pakete nicht zur Weitergabe geeignet wären.
checkinstall ist insofern ungeeignet, da du damit kein Quellpaket bekommst, sondern direkt ein Binärpaket (Quellpakete zB. für Portierung auf andere Architekturen, zB. 32- und 64-Bit, geeignet).
Warum ist das so und wie erstelle ich dann Pakete, die zur Weitergabe geeignet sind?
Für Paketerstellung ist ein guter Ansatz folgender Artikel: Grundlagen der Paketerstellung Gruss
Lasall
|
ZaHaDum
(Themenstarter)
Anmeldungsdatum: 29. Oktober 2008
Beiträge: 297
|
Lasall schrieb: checkinstall ist insofern ungeeignet, da du damit kein Quellpaket bekommst, sondern direkt ein Binärpaket (Quellpakete zB. für Portierung auf andere Architekturen, zB. 32- und 64-Bit, geeignet).
Aha, danke für die Info. 👍 Für Paketerstellung ist ein guter Ansatz folgender Artikel: Grundlagen der Paketerstellung
Dieser Artikel geht aber auch von einem vorhandenen tarball aus. Was MUSS denn nun alles in einem tarball drin sein, wenn z.B. die Datei configure nicht nötig ist? Etwa nur der Quellcode und ein Makefile? Gruß Martin
|
Lasall
Ehemalige
Anmeldungsdatum: 30. März 2010
Beiträge: 7723
|
Hi ZaHaDum, du schriebst: Was MUSS denn nun alles in einem tarball drin sein, wenn z.B. die Datei configure nicht nötig ist? Etwa nur der Quellcode und ein Makefile?
Prinzipiell könnte der Tarball auch leer sein. Ein eigenes Makefile im Quellverzeichnis ist auch nicht nötig, da debian/rules auch ein Makefile ist. Somit könntest du auch erst hier allen Code zum Kompilieren und Installieren schreiben. Nächster Schritt wird wohl wirklich sein, dich kurz mit Makfiles auseinanderzusetzen (wenn für dich die autotools einfacher sind, kannst du das auch gerne damit erledigen 😉 ). Gruss
Lasall
|