Module nicht im Systempfad installieren und trotzdem testen können

Module nicht im Systempfad installieren und trotzdem testen können

am 29.11.2006 08:06:50 von Gregor Goldbach

Moin,

ich habe folgendes Problem: Module, die nicht im Systempfad
installiert sind, werden bei Tests nicht gefunden (Kurzfassung). Die lange
Fassung:

Ich installiere Module nicht im Systempfad (/usr/lib/perl5 hier), weil ich
das nicht darf oder es aus verschiedenen Gründen nicht möchte.

Der entsprechende Installationspfad ist aber in der Umgebungsvariablen
PERLLIB eingetragen, so dass bei der normalen Ausführung mit dem
Perlinterpreter alles funktioniert.

Bei Tests oder der CPAN-Shell ist das jedoch anders. :(

ExtUtils::MakeMaker und Module::Build manipulieren @INC derart, dass
PERLLIB vollständig ignoriert wird. Das ist sehr misslich, wenn der zu
testende Code eben jene Module benötigt, die nicht im Systempfad
installiert sind.

Die Tests finden die Module, wenn man sie mit 'perl t/test.t' oder 'prove
t/test.pl' aufruft, aber eben nicht, wenn man 'make test' sagt.

Dementsprechend schlagen die Tests in der CPAN-Shell natürlich auch fehl,
wenn ich bei den Makefile.PL-Optionen z.B. 'PREFIX=' genannt
habe.

Wo steckt mein Denkfehler? Kann ich nur richtig testen, wenn ich root bin? ;-)

--
Gregor Goldbach (PKI), DFN-CERT Services GmbH
https://www.dfn-cert.de, +49 40 808077-621 / +49 40 808077-555 (Hotline)

Re: Module nicht im Systempfad installieren und trotzdem testen können

am 29.11.2006 12:56:51 von Joergen Lang

s/PERLLIB/PERL5LIB/;

Nur ein Tippfehler, oder vielleicht sogar schon die Lösung?

Joergen

Gregor Goldbach schrieb:

> ich habe folgendes Problem: Module, die nicht im Systempfad
> installiert sind, werden bei Tests nicht gefunden (Kurzfassung).

> ExtUtils::MakeMaker und Module::Build manipulieren @INC derart, dass
> PERLLIB vollständig ignoriert wird.

Re: Re: Module nicht im Systempfad installieren und trotzdem testen können

am 29.11.2006 14:13:39 von Gregor Goldbach

Am Wed, 29 Nov 2006 12:56:51 +0100 schrieb Joergen Lang:

> s/PERLLIB/PERL5LIB/;
>
> Nur ein Tippfehler, oder vielleicht sogar schon die Lösung?

Aus dem Stand in's Schwarze, danke!

Kleine Frage am Rande: Warum interessieren sich die Module dafür?
Perl selbst nimmt ja PERLLIB, wenn PERL5LIB leer ist...
An welcher Stelle passiert das?

--
Gregor Goldbach (PKI), DFN-CERT Services GmbH
https://www.dfn-cert.de, +49 40 808077-621 / +49 40 808077-555 (Hotline)