Frage

Ich verwende derzeit die PAR Packer (pp) ein paar pl Skripte zu verpacken, so dass sie sich auf eine Maschine kopiert werden können und „einfach funktionieren“ ohne meinen Mandanten mit CPAN Dreck müssen.

Leider ist die PAR Packer nicht für tiefe Abhängigkeiten arbeiten. Zum Beispiel importiert ein Skript CHI :: Treiber :: Datei aber nicht explizit Log importieren :: Alle :: Adapter :: Null, die CHI :: Treiber :: Datei erfordert. PAR nicht diese Abhängigkeit aufheben und das generierte Skript ausgeführt wird mit der folgenden Fehlermeldung abstürzen:

Can't locate Log/Any/Adapter/Null.pm in @INC (@INC contains: CODE(0x874aab8) /tmp/par-apache/cache-7b4508ab92efb43271da1629e8eb654c1572cc55/inc/lib /tmp/par-apache/cache-7b4508ab92efb43271da1629e8eb654c1572cc55/inc CODE(0x87e8f54) CODE(0x87e9194)) at (eval 215) line 3.
Compilation failed in require at CHI/Driver/File.pm line 11.
BEGIN failed--compilation aborted at CHI/Driver/File.pm line 11.

Meine Work-around ist ausdrücklich „Log :: Alle :: Adapter :: Null“ importieren, aber es muss einen besseren Weg geben. Vielleicht ist dies ein Fehler mit dem PAR Packer? Ich habe die neueste Version installiert ist (0,994).

War es hilfreich?

Lösung

Wenn Sie ein eigenständiges Skript wollen als zu einem eigenständigen binären Gegensatz (das ist der Standardmodus für pp), fügen Sie dann die Option -P. Ich würde davon abraten, though. Es ist die am wenigsten getestet Betriebsart.

Beachten Sie auch, dass PAR :: Packer DOES für tiefe Abhängigkeiten arbeiten. Das Thema Ihrer Frage ist ein bisschen protzig. In der Tat, PAR :: Packer prüft nicht wirklich alle Abhängigkeiten selbst, sondern delegiert diese zu Module :: ScanDeps. Nun Module :: ScanDeps ist ein heuristischer Ansatz zur Abhängigkeit Scannen und es kann durch hässlichen Fuzzing mit dynamischer Belastung von Abhängigkeiten gebrochen werden. (D Modulnamen zur Laufzeit zu erzeugen und mit ihnen dann in einem EVAL).

Ja, wenn man sich die Module :: ScanDeps , können Sie die -c verwenden oder -x-Optionen pp, um die Verwendung der Auflösung von Abhängigkeiten zu haben Kompilierung oder Ausführung des Programms statt nur auf statische Analyse angewiesen zu sein. Der Augmented-Module :: ScanDeps hat Version 0.95 und sollte von CPAN im Laufe des Tages zur Verfügung.

Andere Tipps

Nun, habe Sie die Dokumentation ? Es gibt eine Reihe von Befehlszeilenoptionen Abhängigkeiten enthalten, und sogar die Möglichkeit, manuell Module zwingen aufgenommen werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top