dpkg-buildpackage -rfakeroot

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
mmuellerss
Beiträge: 116
Registriert: 03.11.2002 19:42:43
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Semmering / Austria

dpkg-buildpackage -rfakeroot

Beitrag von mmuellerss » 10.04.2003 23:02:37

Hallo,

beim erstellen von Debs aus ganz normalen Sourcen passiert es ab und an, dass die Prozedur mit folgendem Fehler (als Beispiel) endet:

Code: Alles auswählen

make[2]: Leaving directory `/home/mm/bkedit-0.6.13/src'
make[1]: Leaving directory `/home/mm/bkedit-0.6.13'
#/usr/bin/docbook-to-man debian/bkedit.sgml > bkedit.1
touch build-stamp
dh_testdir
dh_testroot
dh_clean -k
dh_installdirs
# Add here commands to install the package into debian/bkedit.
/usr/bin/make install prefix=/debian/bkedit/usr
make[1]: Entering directory `/home/mm/bkedit-0.6.13'
cd src && make install
make[2]: Entering directory `/home/mm/bkedit-0.6.13/src'
install -d -m 755 /usr/bin/
install -m 755 bkedit /usr/bin/
install: reguläre Datei »/usr/bin/bkedit« kann nicht angelegt werden: Keine Berechtigung
make[2]: *** [install] Fehler 1
make[2]: Leaving directory `/home/mm/bkedit-0.6.13/src'
make[1]: *** [install] Fehler 2
make[1]: Leaving directory `/home/mm/bkedit-0.6.13'
make: *** [install] Fehler 2
Hierbei ging es speziell um bk_edit (ein Programm zum Bearbeiten von Bookmarks).
Da der Fehler mir auch schon bei anderen Sourcen untergekommen ist, muss es doch eine allgemein gültige Regel geben, mit der man dem Entgegentreten kann.
Unter http://home.arcor.de/mmuellerss/debian habe ich vor einiger Zeit schon einige Pakete gebastelt, bei denen es richtig funktionierte.

Ich suche einfach nur einen Ansatzpunkt und hoffe auf Eure Hilfe.

Vielen Dank
Mario

Benutzeravatar
zyta2k
Beiträge: 2446
Registriert: 14.03.2003 09:18:00
Kontaktdaten:

Beitrag von zyta2k » 11.04.2003 09:30:03

Das liegt daran, dass das BUILD System deines Programs nicht wirklich "sauber" ist und es den dpkg-tools nicht möglich ist einen anderen install-prefix zu wählen.

Im Makefile z.b.

cp foobar /usr/bin
anstatt
cp foobar $INSTALL_PREFIX/bin

Abhilfe: Editier dein Makefile von Hand an der Stelle wo der Fehler auftritt und ändere das TargetDirectory nach /home/foo/bar/deinsource/debian/tmp/usr (glaub so, aus dem daumen gesogen ;) )

have fun :)

Benutzeravatar
mmuellerss
Beiträge: 116
Registriert: 03.11.2002 19:42:43
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Semmering / Austria

Beitrag von mmuellerss » 11.04.2003 11:27:53

Hallo,

vielen Dank. Aber, das haut so nicht hin:

Code: Alles auswählen

bkedit
plugin_new: no plugins found: /home/mm/bkedit-0.6.13/debian/bkedit/share/bkedit/*.so
plugin_new: glob (): No such file or directory
bk_edit.c[88]: plugin_new
Mein Programm sucht offensichtlich im falschen Verzeichnis nach seinen Plugins.
Irgendwo muss die Umgebungsvariable DESTDIR noch gesetzt werden - Blos wo ?

Bye
Mario

Benutzeravatar
abi
Beiträge: 2219
Registriert: 20.12.2001 19:42:56
Wohnort: München
Kontaktdaten:

Beitrag von abi » 11.04.2003 11:36:24

DESTDIR wird in der Regel in debian/rules gesetzt.

Benutzeravatar
mmuellerss
Beiträge: 116
Registriert: 03.11.2002 19:42:43
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Semmering / Austria

Beitrag von mmuellerss » 11.04.2003 11:58:03

Hallo,

ja, das ist richtig.
Dieses DESTDIR bezieht sich aber dann auf eine Angabe in den Sourcen des jeweiligen Paketes.

... und dann gibt's ja auch noch CURDIR ... oh Gott :oops:

Bye
Mario

Benutzeravatar
smilebef
Beiträge: 35
Registriert: 27.12.2002 02:06:43
Wohnort: großes B. an der S.

Hallöle

Beitrag von smilebef » 11.04.2003 17:29:44

Gut das ich mal reingeschaut habe.

Ich habe gerade das gleiche Problem
aber bei mir stellt sich das anders dar.
also das Packet wird mit autoconfig compiliert
also brauche ich da garnix machen - eigentlich
aber ich glaube das makefile startet ein programm welches dann auf die erzeugten verzeichnisse zugreift und dort was configuriert.
ich denke das programm muß dann in den postinstall bereich rein
und nicht in die makefile.

Sag mal was dazu, eh bei dir fehlt der /usr im pfad /debian/blabla/share
muß debian/blabla/usr/share sein.

Smilie
MfG
Smilie

Benutzeravatar
mmuellerss
Beiträge: 116
Registriert: 03.11.2002 19:42:43
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Semmering / Austria

Beitrag von mmuellerss » 11.04.2003 18:49:58

Hallo,

es hat geklappt. Vielen Dank an Alle.
In meinem Fall musste ich alle Befehle a la

Code: Alles auswählen

$(INSTALL) -d -m 755 /@PREFIX@/bin/
in

Code: Alles auswählen

$(INSTALL) -d -m 755 $(DESTDIR)/@PREFIX@/bin/
ändern, nachdem ich die Variable DISTDIR = gesetzt hatte. Siehe auch http://www.debian.de/doc/manuals/maint- ... #s-destdir.

Viele Grüße
Mario

PS: Das fertige Paket bkedit findet Ihr unter http://home.arcor.de/mmuellerss/debian

Benutzeravatar
abi
Beiträge: 2219
Registriert: 20.12.2001 19:42:56
Wohnort: München
Kontaktdaten:

Beitrag von abi » 11.04.2003 19:43:04

am besten ihr checkt eure Pakete mit lintian oder linda.

Benutzeravatar
smilebef
Beiträge: 35
Registriert: 27.12.2002 02:06:43
Wohnort: großes B. an der S.

?

Beitrag von smilebef » 11.04.2003 22:24:54

dazu muß ich, dachte ich, erst ein packet in *.deb haben oder?
MfG
Smilie

Benutzeravatar
mmuellerss
Beiträge: 116
Registriert: 03.11.2002 19:42:43
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Semmering / Austria

Beitrag von mmuellerss » 12.04.2003 01:26:22

Hallo,

@try - Du nimmst einem aber auch jede Hoffnung :wink: .

Code: Alles auswählen

lintian -v bkedit_0.6.13-1_i386.deb
N: Setting up lab in /tmp/lintian-lab.4189 ...
N: Processing binary package bkedit (version 0.6.13-1) ...
E: bkedit: binary-without-manpage bkedit
W: bkedit: prerm-does-not-remove-usr-doc-link
W: bkedit: postinst-does-not-set-usr-doc-link
N: Removing /tmp/lintian-lab.4189 ...
... sieht aber gar nicht sooooo schlecht aus.
binary-without-manpage bkedit: dafür kann ich nix (frag doch mal den Programmierer, ob Du ihm eine schreiben darfst :D ).
prerm-does-not-remove-usr-doc-link + postinst-does-not-set-usr-doc-link: Wie macht man das ?

Vielen Dank
Mario

Antworten