Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
-
_ash
- Beiträge: 1219
- Registriert: 13.05.2005 12:35:02
Beitrag
von _ash » 31.12.2010 13:50:28
Ich will mir ein Debianpaket für John The Ripper erstellen. Ich habe die Quellen sowie den Jumbo-Patch geladen, Patch installiert, nun versuche ich das Paket zu machen. "dh_make" bringt keine Fehler, aber:
Code: Alles auswählen
6$ dpkg-buildpackage -us -uc -nc
dpkg-buildpackage: set CFLAGS to default value: -g -O2
dpkg-buildpackage: set CPPFLAGS to default value:
dpkg-buildpackage: set LDFLAGS to default value:
dpkg-buildpackage: set FFLAGS to default value: -g -O2
dpkg-buildpackage: set CXXFLAGS to default value: -g -O2
parsechangelog/debian: warning: debian/changelog(l0): found eof where expected first heading
dpkg-buildpackage: error: unable to determine source package
Ich sehe den Fehler nicht, die Quellen sind vorhanden. Jmd ein Tipp?
-
bmario
- Beiträge: 1257
- Registriert: 05.09.2007 12:15:47
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Dresden
Beitrag
von bmario » 01.01.2011 16:58:08
Wenn dein Paket die Version 0.1.2 hat und den tollen Name "foo" trägt, dann muss im übergeordneten Verzeichnis ein tar.gz mit folgenden Namen sein:
foo-0.1.2.orig.tar.gz
Nichts zu tun ist viel besser,
als mit viel Mühe nichts zu schaffen. - Laotse
-
owl102
Beitrag
von owl102 » 01.01.2011 18:29:46
Das Problem ist eventuell, daß er die Versionsnummer schon gar nicht ermitteln kann, weil die Syntax von debian/changelog falsch ist. Kannst du diese Datei mal hier posten?
-
_ash
- Beiträge: 1219
- Registriert: 13.05.2005 12:35:02
Beitrag
von _ash » 17.01.2011 17:38:40
Zumindest mal einen Schritt weiter, jetzt bekomme ich folgende Fehlermeldung:
Code: Alles auswählen
fakeroot dpkg-buildpackage
dpkg-buildpackage: set CFLAGS to default value: -g -O2
dpkg-buildpackage: set CPPFLAGS to default value:
dpkg-buildpackage: set LDFLAGS to default value:
dpkg-buildpackage: set FFLAGS to default value: -g -O2
dpkg-buildpackage: set CXXFLAGS to default value: -g -O2
dpkg-buildpackage: source package john
dpkg-buildpackage: source version 1.7.6-1
dpkg-buildpackage: source changed by unknown <prophet@tardis>
dpkg-buildpackage: host architecture i386
debian/rules clean
dh_testdir
dh_testroot
rm -f build-stamp configure-stamp
# Add here commands to clean up after the build process.
/usr/bin/make clean
make[1]: Entering directory `/home/prophet/tools/John the Ripper/john-1.7.6'
make[1]: *** No rule to make target `clean'. Stop.
make[1]: Leaving directory `/home/prophet/tools/John the Ripper/john-1.7.6'
make: *** [clean] Error 2
dpkg-buildpackage: failure: debian/rules clean gave error exit status 2
Eine Idee dazu?
-
bmario
- Beiträge: 1257
- Registriert: 05.09.2007 12:15:47
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Dresden
Beitrag
von bmario » 17.01.2011 21:54:02
Ein clean Target erstellen
Dazu /home/prophet/tools/John the Ripper/john-1.7.6/Makefile öffnen
und am Ende folgendes Einfügen:
Speichern. Fertig.
Nichts zu tun ist viel besser,
als mit viel Mühe nichts zu schaffen. - Laotse
-
_ash
- Beiträge: 1219
- Registriert: 13.05.2005 12:35:02
Beitrag
von _ash » 17.01.2011 22:00:41
in john-1.7.6/src gibt es eine Makefile, ich vermute mal, Du meinst die. Darin gibt es unten bereits folgenden Eintrag:
Code: Alles auswählen
clean:
$(RM) $(PROJ) $(PROJ_DOS) $(PROJ_WIN32) $(PROJ_WIN32_MINGW)
$(RM) ../run/john.exe john-macosx-* *.o *.bak core
$(RM) detect bench generic.h arch.h tmp.s
$(CP) $(NULL) Makefile.dep
Sollte das nicht ausreichen?
-
bmario
- Beiträge: 1257
- Registriert: 05.09.2007 12:15:47
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Dresden
Beitrag
von bmario » 17.01.2011 22:17:27
Nein, das meine ich nicht.
Code: Alles auswählen
make[1]: Entering directory `/home/prophet/tools/John the Ripper/john-1.7.6'
make[1]: *** No rule to make target `clean'. Stop.
make[1]: Leaving directory `/home/prophet/tools/John the Ripper/john-1.7.6'
Da steht er ist im Folder ".../john-1.7.6" und da muss ein Makefile liegen und dieses muss angepasst werden.
Nichts zu tun ist viel besser,
als mit viel Mühe nichts zu schaffen. - Laotse
-
owl102
Beitrag
von owl102 » 17.01.2011 22:18:23
_ash hat geschrieben:in john-1.7.6/src gibt es eine Makefile, ich vermute mal, Du meinst die. Darin gibt es unten bereits folgenden Eintrag: ... Sollte das nicht ausreichen?
Nein:
Code: Alles auswählen
make[1]: Entering directory `/home/prophet/tools/John the Ripper/john-1.7.6'
make[1]: *** No rule to make target `clean'. Stop.
Das Makefile mit der Regel "clean" muß also im Verzeichnis john-1.7.6 liegen und nicht in john-1.7.6/src.
-
_ash
- Beiträge: 1219
- Registriert: 13.05.2005 12:35:02
Beitrag
von _ash » 17.01.2011 22:31:13
Ok, danke. Einen Schritt weiter, nächster Fehler:
Code: Alles auswählen
touch build-stamp
debian/rules binary
dh_testdir
dh_testroot
dh_clean -k
dh_installdirs
# Add here commands to install the package into debian/john.
/usr/bin/make DESTDIR=/home/prophet/tools/John the Ripper/john-1.7.6/debian/john install
make[1]: Entering directory `/home/prophet/tools/John the Ripper/john-1.7.6'
make[1]: *** No rule to make target `the'. Stop.
make[1]: Leaving directory `/home/prophet/tools/John the Ripper/john-1.7.6'
make: *** [install] Error 2
dpkg-buildpackage: failure: debian/rules binary gave error exit status 2
Ein Tipp dazu?
-
Profbunny
- Beiträge: 592
- Registriert: 04.04.2004 11:12:29
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Bautzen
Beitrag
von Profbunny » 18.01.2011 11:55:26
hast du denn die ganzen anpassungen in den template files von dh_make durch geführt?
was ist im übrigen falsch an
http://packages.qa.debian.org/j/john.html ?
wenns nur die version ist, schau mal im new maintainer guide unter uupdate nach.
Rechner / Server Debian sid
-
_ash
- Beiträge: 1219
- Registriert: 13.05.2005 12:35:02
Beitrag
von _ash » 18.01.2011 12:14:56
Falsch ist nichts an dem Paket, aber es enthält nicht den Jumbo-Patch, der Support für eine ganze Reiher weiterer Hashes enthält.
Welche Anpassungen müsste ich in den Files machen?
-
catdog2
- Beiträge: 5352
- Registriert: 24.06.2006 16:50:03
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von catdog2 » 18.01.2011 15:46:06
Falsch ist nichts an dem Paket, aber es enthält nicht den Jumbo-Patch, der Support für eine ganze Reiher weiterer Hashes enthält.
Warum patchst du dann nicht dessen quellen sondern fängst ganz von vorn an?
Unix is user-friendly; it's just picky about who its friends are.
-
_ash
- Beiträge: 1219
- Registriert: 13.05.2005 12:35:02
Beitrag
von _ash » 18.01.2011 16:34:55
catdog2 hat geschrieben:Warum patchst du dann nicht dessen quellen sondern fängst ganz von vorn an?
Weil ich wohl einfach nicht weiß, wie das geht. Erklärst Du es mir kurz?
-
catdog2
- Beiträge: 5352
- Registriert: 24.06.2006 16:50:03
- Lizenz eigener Beiträge: MIT Lizenz
Beitrag
von catdog2 » 18.01.2011 17:31:20
Unix is user-friendly; it's just picky about who its friends are.
-
_ash
- Beiträge: 1219
- Registriert: 13.05.2005 12:35:02
Beitrag
von _ash » 18.01.2011 17:37:01
und wie mache ich dann weiter?
-
owl102
Beitrag
von owl102 » 18.01.2011 20:11:15
_ash hat geschrieben:make[1]: Entering directory `/home/prophet/tools/John the Ripper/john-1.7.6'
make[1]: *** No rule to make target `the'. Stop.
Er stört sich am Leerzeichen im Pfad und nimmt deswegen das "the" von "John the Ripper" als Argument für make.
Ohne Leerzeichen im Pfad solltest du also wieder einen Schritt weiter kommen.
-
_ash
- Beiträge: 1219
- Registriert: 13.05.2005 12:35:02
Beitrag
von _ash » 18.01.2011 23:50:54
Danke. Und nächster Fehler:
Code: Alles auswählen
# Add here commands to install the package into debian/john.
/usr/bin/make DESTDIR=/home/prophet/tools/John-the-Ripper/john-1.7.6/debian/john install
make[1]: Entering directory `/home/prophet/tools/John-the-Ripper/john-1.7.6'
make[1]: *** No rule to make target `install'. Stop.
make[1]: Leaving directory `/home/prophet/tools/John-the-Ripper/john-1.7.6'
make: *** [install] Error 2
dpkg-buildpackage: failure: debian/rules binary gave error exit status 2
-
owl102
Beitrag
von owl102 » 19.01.2011 08:36:41
Ein Makefile, was (auch) zur Erstellung von Debian-Paketen taugt, braucht ein Target "install" im Makefile, welches die Dateien des Paketes mittels des Kommandos "install" installiert. Der Debian-Paketierungsprocess wirft das dann für ein Unterverzeichnis an, was er nach der Paketerstellung wieder löscht (d.h. das Paket wird temporär in einem Unterverzeichnis installiert).
"make install" ist ja ein nicht gerade unübliches Feature, deswegen wundert mich ein wenig, daß das Makefile das nicht kann. Vielleicht gibt es ein alternatives Target, um John zu installieren? Wenn ja, dann würde es wohl reichen, dieses in "install" umzubenennen.
-
owl102
Beitrag
von owl102 » 19.01.2011 21:26:31
_ash hat geschrieben:Wo/wie würde ich das alternative Target finden?
Scheint nicht da zu sein. Und es scheint auszureichen, ein Binary namens "john" zu installieren. Versuche also mal folgendes an das Makefile anzuhängen, durch eine Leerzeile getrennt:
Code: Alles auswählen
BIN = $(DESTDIR)/usr/bin
.PHONY: install
install: ../run/john
install -d $(BIN)
install -m 755 ../run/john $(BIN)
-
_ash
- Beiträge: 1219
- Registriert: 13.05.2005 12:35:02
Beitrag
von _ash » 19.01.2011 22:47:27
Code: Alles auswählen
# Add here commands to clean up after the build process.
/usr/bin/make clean
make[1]: Entering directory `/home/prophet/tools/John-the-Ripper/john-1.7.6'
Makefile:7: *** missing separator. Stop.
make[1]: Leaving directory `/home/prophet/tools/John-the-Ripper/john-1.7.6'
make: *** [clean] Error 2
dpkg-buildpackage: failure: debian/rules clean gave error exit status 2
-
owl102
Beitrag
von owl102 » 20.01.2011 08:49:13
Mea culpa, ich hätte dazu schreiben sollen, daß bei den beiden Zeilen
keine (normalen) Leerzeichen vor "install ..." stehen dürfen, stattdessen muß es jeweils ein einzelnes Tabulatorzeichen/TAB sein (und nur dieses!), mit dem diese beiden Zeilen eingerückt sein müssen. (Genau wie es bei allen anderen eingerückten Zeilen des Makefiles bereits der Fall ist.)
-
_ash
- Beiträge: 1219
- Registriert: 13.05.2005 12:35:02
Beitrag
von _ash » 20.01.2011 09:08:50
Code: Alles auswählen
# Add here commands to install the package into debian/john.
/usr/bin/make DESTDIR=/home/prophet/tools/John-the-Ripper/john-1.7.6/debian/john install
make[1]: Entering directory `/home/prophet/tools/John-the-Ripper/john-1.7.6'
make[1]: *** No rule to make target `../run/john', needed by `install'. Stop.
make[1]: Leaving directory `/home/prophet/tools/John-the-Ripper/john-1.7.6'
make: *** [install] Error 2
dpkg-buildpackage: failure: debian/rules binary gave error exit status 2
Sieht so aus, als ob es mit dem Pfad noch ein Problem gibt?
-
owl102
Beitrag
von owl102 » 20.01.2011 19:53:21
_ash hat geschrieben:make[1]: *** No rule to make target `../run/john', needed by `install'. Stop.
Das ist sehr merkwürdig, denn bei dem von dir hochgeladenen Makefile gibt es das Target "../run/john", und zwar in Zeile 871.
So bin ich zumindest mit meinem Latein am Ende. Hast du die Möglichkeit, den ganzen Kram, soweit du bisher gekommen bist, irgendwo hinzupacken, so daß man sich das mal herunterladen und anschauen kann?