Thread debian-Pakete von core-Perl-Modulen bauen (1 answers)
Opened by pq at 2010-06-16 19:06

pq
 2010-06-16 19:06
#138421 #138421
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
Wer schonmal debian-Pakete gebaut hat und ein Modul eine sehr neue Version von ExtUils::MakeMaker oder Module::Build z.B. als Abhängigkeit hat, kennt vielleicht das Problem.

Am Beispiel Module::Build:
das core-Paket von perl auf debian liefert eine Datei /usr/bin/config_data.
Module::Build liefert aber auch dieses Skript mit, eine geänderte Version.

Im Prinzip gibt es das Problem auch mit jedem core-Modul, welches Skripte unter /usr/bin ausliefert.

Wenn man nun ein Paket von Module::Build bauen will, z.b. mit dh-make-perl oder cpan2dist, dann klappt das Bauen zwar, aber beim installieren meckert dpkg, dass es schon ein anderes Paket (nämlich perl) gibt, welches diese Datei beinhaltet. Dies ist ein Konflikt, und ein überschreiben der Datei würde eine Inkonsistenz zur Folge haben.

Als Workaround muss man dem Paket jeweils ein Script für die Installation und eins für das Entfernen des Pakets mitgeben.
Diese Dateien legt man in das CPAN-Modulverzeichnis unter:
debian/preinst
Code: (dl )
1
2
3
#!/bin/sh
dpkg-divert --package libmodule-build-perl --add --rename --divert \
/usr/bin/config_data.perl /usr/bin/config_data


debian/postrm
Code: (dl )
1
2
3
#!/bin/sh
dpkg-divert --package libmodule-build-perl --remove --rename --divert \
/usr/bin/config_data.perl /usr/bin/config_data


Dann ganz normal cpan2dist oder dh-make-perl aufrufen.

Das hat zur Folge, dass vor der Installation von libmodule-build-perl die Datei /usr/bin/config_data nach /usr/bin/config_data.perl umbenannt wird und beim Entfernen des Pakets wieder zurückverschoben.

Ich fand es nicht so leicht, diesen Workaround im Netz zu finden, und jemand im IRC hat mir heute erklärt, was genau in die Dateien rein muss. Vielleicht hilft dieser Artikel, dass andere Suchende die richtige Lösung finden. Ich stelle das am besten auch mal ins Wiki ein.

Der Autor von Module::Build überlegt, diese Dateien vielleicht gleich mit im CPAN-Package auszuliefern, sie existieren nämlich schon im svn-Repository.
Last edited: 2010-06-16 19:11:33 +0200 (CEST)
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem

View full thread debian-Pakete von core-Perl-Modulen bauen