Technik

Net::SSLeay: load_file:Das angegebene Modul wurde nicht gefunden

09. April 2021 · Programmierung · andreas · 3 Kommentare

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

Referrer oder Referer?

03. April 2021 · Programmierung · andreas · Kein Kommentar

Ich bin gerade darüber gestolpert, daß der Referrer in der Verwendung als HTTP_REFERER nur mit einem “R” geschrieben wird. Wie die Wikipedia erläutert, ist ein Versehen in der RFC 2068 dafür verantwortlich:

Die korrekte englische Schreibweise lautet Referrer. Der ursprüngliche RFC (RFC 2068) enthielt jedoch versehentlich die falsche Schreibweise Referer und erhebt diesen Wortlaut damit zum Standard innerhalb von HTTP. [Quelle]


Verzeichnis für Benutzerschriftarten

05. März 2021 · Betriebssysteme · andreas · Kein Kommentar

Schriftarten für Benutzer sollten nicht mehr in “~/.fonts” abgelegt werden. Hinweisegeber ist ein Eintrag in der Datei “/etc/fonts/fonts.conf”:

<!-- the following element will be removed in the future --> <dir>~/.fonts</dir>

Bevorzugter Speicherort für Schriftarten eines Benutzers ist

<dir prefix="xdg">fonts</dir>

Die Dokumentation von Fontconfig erklärt

If ‘prefix’ is set to “xdg”, the value in the XDG_DATA_HOME environment variable will be added as the path prefix.

Die Definition von XDG_DATA_HOME wiederum ergibt sich aus der XDG Base Directory Specification

There is a single base directory relative to which user-specific data files should be written. This directory is defined by the environment variable $XDG_DATA_HOME.

Sollte die Umgebungsvariable nicht gesetzt sein, so wird ein Default verwendet:

$XDG_DATA_HOME defines the base directory relative to which user specific data files should be stored. If $XDG_DATA_HOME is either not set or empty, a default equal to $HOME/.local/share should be used.

Somit sollte auf einem Standardsystem das Verzeichnis “$HOME/.local/share/fonts” für Benutzerschriftarten verwendet werden.


Congstar, VoLTE und ein Google Pixel der ersten Generation

02. März 2021 · Anwendungen · andreas · Kein Kommentar

Technik kann frustrierend sein, vor allem, wenn die mehr oder minder geplante Obsoleszenz zuschlägt. Ein gutes Beispiel dafür ist VoLTE, eine neue Technik, deren Vorteil in einem schnelleren Gesprächsaufbau sowie dem Wegfallen des Netzwechsels auf 2G / 3G beim Telefonieren liegt.

Das Google Pixel der ersten Generation ist seit Android 7.1.1 VoLTE-fähig, Congstar hat VoLTE im Laufe des Jahres 2020 freigeschaltet, trotzdem fehlt im Einstellungsdialog die benötigte Option:

Weiterlesen


is_admin() ist keine Sicherheitsfunktion

16. Februar 2021 · Anwendungen · andreas · Kein Kommentar

Manche Funktionsbezeichnungen lassen Interpretationsspielraum, wo besser keiner sein sollte. Die WordPress-Funktion “is_admin()” ist so ein Fall, denn wie die WordPress Code Refernce erklärt

Does not check if the user is an administrator

“is_admin()” prüft lediglich, ob der Aufruf innerhalb der Administrations-Oberfläche erfolgte. Wer sich für die tatsächlichen Berechtigungen des angemeldeten Benutzers interessiert, sollte “current_user_can()” verwenden.