Alexander (HH): CPAN-Module per Hand installieren?

Beitrag lesen

Moin Moin!

Wer sagt, dass man zum Installieren von Perl-Modulen Root-Rechte braucht?

Die FAQ sagt was anderes, siehe Punkt 5.

Sinnvollerweise richtet man sich irgendwo (notfalls im Dokumentenverzeichnis des Webservers) einen Verzeichnis-Baum für eigene Perl-Module ein, genau nach Punkt 5. Den Baum schottet man mit .htaccess oder Server-Konfiguration komplett ab (Order deny, allow; Deny from all), und schreibt in alle Perl-Scripte, die die eigenen Module brauchen, ein "use lib '/wo/auch/immer/myperl/lib';" rein, bevor die eigenen Module geladen werden. Sprich:

  
#!/usr/local/bin/perl -T  
use strict;  
use warnings;  
use lib '/wo/auch/immer/myperl/lib'; # anpassen!  
use Text::CSV_XS; # als Beispiel  
  
# mach was mit Text::CSV_XS  

Ein C-Compiler wird auf dem System der Beschreibung nach ja vorhanden sein.

Um Perl-Module, die C-Erweiterungen benötigen, sicher zu erkennen, reicht DynaLoader als Kriterium nicht aus, es gibt mindestens auch noch den XSLoader. Ein Blick ins TAR-Archiv von CPAN ist in aller Regel hilfreicher. Dateien mit den Extensions C, CPP, CXX, H, HPP, HXX, und vor allem XS sind extrem verdächtig.

DBD::CSV ist übrigens ein sehr schlechtes Beispiel, denn es lädt den DynaLoader zwar, aber es benutzt ihn nicht. DBD::CSV ist ein Pure Perl DBD, aber es nutzt Test::CSV_XS, das definitiv (schon im Namen) ein XS benutzt, sprich: einen C-Compiler braucht. Das könnte übrigens auch die Erklärung für das "require DynaLoader" sein: Ohne DynaLoader-Support macht das gesamte DBD::CSV keinen Sinn.

DBD::ODBC, DBD::Oracle, DBD::DB2, DBD::Pg, DBD::mysql, und fast alle anderen DBDs brauchen definitiv XS, um an die C-API der jeweiligen Datenbank anzudocken.

Alexander

--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".