Manchmal ist es notwendig, Perl-Scripts auf Systeme zu verteilen, auf denen entweder kein Perl installiert ist oder auf dem keine zusätzlichen Perl-Module installiert werden können.
Für diesen Fall gibt es ein Perl-Modul namens PAR::Packer, mit dem beliebige Perl-Scripts inklusive aller Abhängigkeiten kompiliert und in ein einziges Binary gelinkt werden können.
PAR::Packer ist dabei plattformunabhängig und kann so z.B. unter Windows und Linux eingesetzt werden.
Zunächst installieren wir PAR::Packer mit Hilfe von CPAN:
# cpan install PAR::Packer
Je nach Anzahl der noch fehlenden Perl-Module kann dies einige Minuten dauern. Da Windows von Haus aus kein Perl anbietet, muss dieses evtl. vorher installiert werden (Tipp: Strawberry Perl – .
Danach können wir unser erstes Perl-Script kompilieren:
$ cat hello.pl
print "Hello World!\n";
$ pp -o hello hello.pl
$
Als Ergebnis erhalten wir ein Binary namens „hello“, das nun neben dem kompilierten Script auch die Teile der Perl-Laufzeitumgebung enthalten, die zum Ausführen des Scripts notwendig sind. Das Binary hat dabei keine Abhängigkeiten auf Perl-Libraries:
$ ldd hello
linux-vdso.so.1 => (0x00007fffad7ff000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f5a23cc0000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f5a23921000)
/lib64/ld-linux-x86-64.so.2 (0x00007f5a23f0a000)
Ansonsten verhält sich das Binary genauso wie unser ursprüngliches Perl-Script:
$ ./hello
Hello World!
$
Weitere Informationen zu PAR::Packer gibt es z.B. unter http://search.cpan.org/dist/PAR/lib/PAR/Tutorial.pod.
End of Life von CentOS Linux 7 – Was bedeutet das für mich?
Der ein oder andere Admin wird sich vermutlich schon lange den 30. Juni 2024 im Kalender vorgemerkt haben, denn dann ist für CentOS Linux 7 das "End of Life" erreicht. Aber auch Benutzer von Red Hat Enterprise Linux 7 sollten sich Gedanken machen, denn auch dieses...
The post about Perl-Script compilation is now 5 years old. Are there any new important things to know? I want to produce an independend exe for various Windows-versions? Is this possible? Do I need another exe for each OS-System (W7,W8,W10)?