Verschiedene Fehler in einem Debian-Paket

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
knipknap
Beiträge: 3
Registriert: 27.04.2003 02:50:48

Verschiedene Fehler in einem Debian-Paket

Beitrag von knipknap » 27.04.2003 12:48:53

Hallo!

Ich schlage mich schon eine ganze Weile mit einem Debian-Paket herum, um die Warnungen und Fehler, die Lintian mir anzeigt, zu entfernen.
Einiges habe ich schon geschafft, eine ganze Reihe bringt mich aber zuir Verzweiflung.

Fang' ich mal an:

$ lintian /pub/buildroot/gpostman_1.2-1_i386.deb
E: gpostman: binary-without-manpage gpostman

Gut, das ist klar. Ich habe jetzt aber bereits Doku im .info-, .html- und texinfo-Format, kann ich das nicht irgendwie daraus generieren lassen? Sonst müsste ich immer zwei Dokus pflegen. Aber gut, an dem Punkt muss ich zugeben, hab' ich noch nicht viel gesucht.

W: gpostman: install-info-not-called-with-section-option

So. Immerhin habe ich herausfinden können, das es wohl darum geht, der .info-Dokumentation eine Kategorie hinzuzufügen, indem ich zusätzliche Zeilen ins .info file einfüge. Nur: Wie genau? Das File habe ich ausserdem aus dem texinfo generiert, es soll laut lintian irgendwie noch eine Möglichkeit geben, die section auf der Commandline zu spezifizieren. Nur wie?

W: gpostman: postinst-should-not-set-usr-doc-link

So, ich finde im Debian-Verzeichnis im File "gpostman.postinst.debhelper" ein Script, das ein "ln wasauchimmer /usr/doc" macht. Das Problem: Dieses File wird bei jedem "dpkg-buildpackage" automatisch neu angelegt, überschreibt also auch meine Änderungen, so das ich den Befehl da nicht rausnehmen kann.
Wo kann ich das noch spezifizieren?

E: gpostman: FSSTND-dir-in-usr usr/doc/

Ich bin Hilflos.

W: gpostman: extra-license-file usr/doc/gpostman/COPYING.gz

Gut, klar. Nur: Ich kann das File ja nicht einfach löschen, denn auf Non-Debian-Distributionen sollte der Copyright hinweis natürlich weiterhin an der Stelle enthalten sein. Also muss ich dpkg-buildpackage irgendwie dazu überreden, das File einfach auszulassen. Aber wie?

E: gpostman: changelog-file-not-compressed ChangeLog

Wenn ich den Changelog gzippe, bekomme ich eine Fehlermeldung von dpkg-builpackage und das paket lässt sich nicht erstellen. Zippe ich ihn nicht, kommt diese Meldung in lintian.
Ich habe keine Ahnung, warum.

Die betroffenen Dateien liegen alle unter:

http://sv.gnu.org/cgi-bin/viewcvs/gpost ... an/debian/

Ich bin auch für Teillösungen dankbar!

Grüße,
-Sam

Benutzeravatar
pdreker
Beiträge: 8298
Registriert: 29.07.2002 21:53:30
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Nürnberg

Beitrag von pdreker » 27.04.2003 21:24:12

Also der Reihe nach:
$ lintian /pub/buildroot/gpostman_1.2-1_i386.deb
E: gpostman: binary-without-manpage gpostman
Wenn es SGML Doku gibt kann man daraus normalerweise eine Manpage generieren.
W: gpostman: install-info-not-called-with-section-option
ahem...: "man install-info", suche nach "--section". Manpages sollte man auch lesen, dazu sind sie da! :?
W: gpostman: postinst-should-not-set-usr-doc-link
Welche policy Version steht denn im control File?
E: gpostman: FSSTND-dir-in-usr usr/doc/
Das ist der gleiche Fehler wie der letzte: eine Datei in /usr/doc (gehört da nicht hin...)

W: gpostman: extra-license-file usr/doc/gpostman/COPYING.gz
Die gebräuclichsten Lincenses findet man bei Debian in /usr/share/common-licenses, und die Policy erlaubt es das License File aus dem Deb zu entfernen, und nur auf die common-license zu verweisen.

E: gpostman: changelog-file-not-compressed ChangeLog
Man kann mit Sicherheit irgendwo konfigurieren, welche Dateien im Laufe des build Prozesses ge-zipped werden sollen...

Patrick
Definitely not a bot...
Jabber: pdreker@debianforum.de

knipknap
Beiträge: 3
Registriert: 27.04.2003 02:50:48

Beitrag von knipknap » 27.04.2003 22:02:09

ahem...: "man install-info", suche nach "--section". Manpages sollte man auch lesen, dazu sind sie da!
Leicht gesagt, dazu muss man aber erst wissen, das "install-info" ein Programm ist ;).
Ok, das habe ich mir jetzt angesehen. Das Problem ist nur: Ich rufe ja nicht install-info direkt auf, sondern starte nur "dpkg-buildpackage".

Also habe ich wieder gegrepped um zu sehen, welches File "install-info" aufruft. Gefunden habe ich wieder nur "gpostman.postinst.debhelper". Dieses File wird ja aber automatisch von dpkg-buildpackage generiert.

Wie kann ich dpkg-buildpackage sagen, es soll install-info mit der --section option aufrufen?
(Die manpage von dpkgb enthält auch nichts zu dem Thema)
> W: gpostman: postinst-should-not-set-usr-doc-link

Welche policy Version steht denn im control File?
Ämmm... gar keine? ;)
Das File sieht im Moment so aus:
http://sv.gnu.org/cgi-bin/viewcvs/gpost ... cvs-markup

Ich habe mir auch schon andere Pakete vergleichshalber angesehen und find keine Policies im control-file. Wie definiere ich die?
Die gebräuchlichsten Licenses findet man bei Debian in /usr/share/common-licenses, und die Policy erlaubt es das License File aus dem Deb zu entfernen, und nur auf die common-license zu verweisen.
Ok, jetzt habe ich das "COPYING" File durch einen Symlink auf /usr/share/common-licenses/GPL-2 ersetzt. Das Problem ist noch das gleiche.
Testhalber habe ich das File auch einfach mal ganz gelöscht, dann erzeugt dpgkb aber eine Fehlermeldung beim bauen des Pakets.
E: gpostman: changelog-file-not-compressed ChangeLog
Man kann mit Sicherheit irgendwo konfigurieren, welche Dateien im Laufe des build Prozesses ge-zipped werden sollen...
Nur wo? Bisher habe ich noch praktisch garnichts gefunden, womit ich den Ablauf des Paketbaus überhaupt direkt konfigurieren könnte.
Sollte das im control-file passieren? Ich habe noch nie gesehen, das da irgendwelche flags o.ä. gesetzt werden und auch keine Infos hierzu gefunden.

Danke erstmal!
-Sam

Benutzeravatar
pdreker
Beiträge: 8298
Registriert: 29.07.2002 21:53:30
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Nürnberg

Beitrag von pdreker » 27.04.2003 23:33:00

Policy Version, Standards Version ist doch alles das gleiche ;-)

Du brauchst die License nicht zu verlinken. Ein Hinweis im copyright File reicht vollkommen.

Die preinst/postinst/prerm/postrm Dateien werden aus den entsprechenden Vorlagen im debian/ Verzeichnis erzeugt.

Grunsätzlich passt Du alles im rules File an. Dort wird irgendwo halt dh_installinfo aufgerufen und dort wirst Du wahrscheinlich den Aufruf anpassen müssen.

Hast Du das "New Maintainer Guide" gelesen? Wenn nein: Mach es jetzt! http://www.debian.org/doc/maint-guide/ (auch auf deutsch!)

Patrick
Definitely not a bot...
Jabber: pdreker@debianforum.de

knipknap
Beiträge: 3
Registriert: 27.04.2003 02:50:48

Beitrag von knipknap » 28.04.2003 01:03:16

Hast Du das "New Maintainer Guide" gelesen?
Habe ich, das geht aber auf solcherlei Probleme garnicht ein und verweist immer auf die debhelper manpage. Die debhelper manpage ist aber so dürftig, das quasi fast garnichts drinsteht.

Ich habe jetzt aber mit Hilfe der manpages für die "dh_*" debhelper Teile nun noch einige Probleme beheben können.
Es bleiben übrig:

E: gpostman: FSSTND-dir-in-usr usr/doc/

Hatte wohl doch nichts mit "W: gpostman: postinst-should-not-set-usr-doc-link" zu tun.
Was soll das sein? FSSTND hat laut Google irgendwas mit der geänderten Debian Directory Struktur zu tun.

W: gpostman: extra-license-file usr/doc/gpostman/COPYING.gz

Ok, du sagtest, ich solle einen Hinweis in das Debian "copyright" File reinnehmen. Das habe ich, aber dadurch verschwindet diese Warnung nicht. Die Warnung sagt ja auch aus, das ein *File* zu viel da ist, oder irre ich mich?

E: gpostman: changelog-file-not-compressed ChangeLog

Keine Ahnung was ich da machen soll. Verantwortlich für die Installation ist wohl dh_installchangelog, laut manpage gibt es aber keine Option die mit Komprimierung zu tun hat.

Wobei es sich hier auch um das ChangeLog-file aus dem Programm-Root handelt, nicht um den im "debian" Verzeichnis.

Grüße!
-Sam

Benutzeravatar
pdreker
Beiträge: 8298
Registriert: 29.07.2002 21:53:30
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Nürnberg

Beitrag von pdreker » 28.04.2003 14:46:46

Mit dem changelog bin ich jetzt ehrlich gesagt erstmal überfragt, aber ich habe zumindestens eine Vermutung, was den FSSTND Bug angeht...

dpkg-buildpackage führt (über den dicken Daumen gepeilt) ./configure && make && make install --prefix ./debian/programmname aus. Das make install installiert dabei wahrscheinlich Dateien in /usr/doc (dort gehören sie nach FSSTND hin), während Debian diese ausschliesslich in /usr/share/doc (FHS2, Filesystem Hierarchy Standard V2) erwartet.

Evtl. musst Du den configure Aufruf in debian/rules mit einem extra Parameter versehen musst, der dieses Dir von /usr/doc nach /usr/share/doc verlegt. Evtl. kannst Du das mit einem debhelper (dh_install IIRC) von Hand anpassen, indem Du die Dateien von /usr/doc nach /usr/share/doc verschiebst.

Genaueres kann ich Dir nur sagen, wenn ich das Paket selbst in der Hand habe, und testen kann...

Patrick
Definitely not a bot...
Jabber: pdreker@debianforum.de

Antworten