Der Versuch, das Perl-Modul "WWW::Mechanize" zu installieren scheitert mit der Meldung, daß ein Modul nicht gefunden werden kann:
cpan> install WWW::Mechanize ... Can't load 'C:/Strawberry/perl/vendor/lib/auto/Net/SSLeay/SSLeay.xs.dll' for module Net::SSLeay: load_file:Das angegebene Modul wurde nicht gefunden at C:/Strawberry/perl/lib/DynaLoader.pm line 193. at C:/Strawberry/perl/vendor/lib/IO/Socket/SSL.pm line 19. ... Can't load 'C:/Strawberry/perl/vendor/lib/auto/Crypt/SSLeay/SSLeay.xs.dll' for module Crypt::SSLeay: load_file:Das angegebene Modul wurde nicht gefunden at C:/Strawberry/perl/lib/DynaLoader.pm line 193. at C:/Strawberry/perl/vendor/lib/Net/SSL.pm line 20. ...
Die ausgegebene Fehlermeldung führt allerdings zuerst auf eine falsche Fährte, denn in angegebenen Ordnern ist das Modul sehr wohl zu finden:
C:\>dir C:\Strawberry\perl\vendor\lib\auto\Net\SSLeay\SSLeay.xs.dll ... Verzeichnis von C:\Strawberry\perl\vendor\lib\auto\Net\SSLeay 17.03.2020 05:24 485.888 SSLeay.xs.dll ... C:\>dir C:\Strawberry\perl\vendor\lib\auto\Crypt\SSLeay\SSLeay.xs.dll ... Verzeichnis von C:\Strawberry\perl\vendor\lib\auto\Crypt\SSLeay 17.03.2020 05:26 59.904 SSLeay.xs.dll ...
Die Ursachenforschung im Internet führt überwiegend zu Treffern, die darauf hin deuten, daß ein Problem mit Modulabhängigkeiten besteht und überprüft werden sollte, ob der der Ordner "C:\Strawberry\c\bin" im Pfad enthalten ist. Dies ist der Fall:
Path=...;C:\Strawberry\c\bin;C:\Strawberry\perl\site\bin;C:\Strawberry\perl\bin;
Eine Analyse mit Microsofts Process Monitor zeigt, daß es an insgesamt drei Modulen aus dem Ordner "C:\Strawberry\c\bin" liegt, die trotz vorhandenem Pfad-Eintrag nicht gefunden werden.
Zum Beheben des Fehlers können entweder die drei Module in den Ordner "C:\Strawberry\perl\vendor\lib\auto\Net\SSLeay\" kopiert oder (als vielleicht elegantere Lösung) entsprechende Links gesetzt werden:
C:\>cd C:\Strawberry\perl\vendor\lib\auto\Net\SSLeay\ C:\Strawberry\perl\vendor\lib\auto\Net\SSLeay>mklink libcrypto-1_1-x64__.dll C:\Strawberry\c\bin\libcrypto-1_1-x64__.dll symbolische Verknüpfung erstellt für libcrypto-1_1-x64__.dll <<===>> C:\Strawberry\c\bin\libcrypto-1_1-x64__.dll C:\Strawberry\perl\vendor\lib\auto\Net\SSLeay>mklink libssl-1_1-x64__.dll C:\Strawberry\c\bin\libssl-1_1-x64__.dll symbolische Verknüpfung erstellt für libssl-1_1-x64__.dll <<===>> C:\Strawberry\c\bin\libssl-1_1-x64__.dll C:\Strawberry\perl\vendor\lib\auto\Net\SSLeay>mklink zlib1__.dll C:\Strawberry\c\bin\zlib1__.dll symbolische Verknüpfung erstellt für zlib1__.dll <<===>> C:\Strawberry\c\bin\zlib1__.dll
Anschließend läuft die Installation ohne Probleme durch:
cpan> install WWW::Mechanize ... All tests successful. Files=62, Tests=816, 147 wallclock secs ( 0.23 usr + 0.19 sys = 0.42 CPU) Result: PASS
Geniale Analyse! Vielen Dank!
Der Tipp hat uns viel Arbeit erspart.
Danke für den tollen Tipp mit dem Process-Monitor! Ich hatte ein Problem mit Upload per https und musste diese Kopieraktionen unter Strawberry Perl V5.30.3 (und auch noch neueren Strawberry Perls) unternehmen:
```
set SRC=C:\Strawberry\c\bin
set DEST=C:\Strawberry\perl\site\lib\auto\Net\SSLeay
set FN=libcrypto-1_1_.dll
copy %SRC%\%FN% %DEST%
dir %DEST%\%FN%
set FN=libssl-1_1_.dll
copy %SRC%\%FN% %DEST%
dir %DEST%\%FN%
set FN=zlib1_.dll
copy %SRC%\%FN% %DEST%
dir %DEST%\%FN%
```