Installing the Perl module IO::Socket::SSL on NSA325v2 NAS

Frik
Frik Posts: 8
edited September 12 in Personal Cloud Storage
I'm trying to install the Perl module IO::Socket::SSL on my Zyxel NSA325v2. Reason for this: the Logitech Media Server running on my NAS requires this, otherwise the Spotty Spotify plugin doesn't work. When trying to configure the Spotty plugin, I'm getting the following error :
"Spotty requires the Perl module IO::Socket::SSL. You can NOT use Spotty without this module. Please use your operating system's package manager to install it."
So... I performed the following steps on my NAS in order to try and solve the problem:
1. Install Entware-ng software repo on my NAS. I used the web interface for the NSA325v2 to do this. Version is : 20181002zypkg006.
2. Install gcc using opkg package manager : see: https://github.com/Entware/Entware-ng/wiki/Using-gcc-(native-compilation)
3. I then installed openssl libraries using :
opkg install libopenssl and
opkg install openssl (not sure if this was needed, but I got some errors wrt the openssl libraries when I installed the perl modules later on)
4. I then downloaded  the following 2 perl modules from cpan, and installed them manually : Net-SSLeay-1.90.tar.gz  and IO-Socket-SSL-2.072.tar.gz . I installed them on the NAS using the following commands (I installed it manually, so I did not use CPAN) :
    perl Makefile.PL
    make
    make install
I did not get any error messages during installation. I also ran the tests.
5. I restarted the NAS, just to be sure.

However, when going to the web interface of the Logitech Media Server, I still see this error when trying to configure the Spotty plugin : "Spotty requires the Perl module IO::Socket::SSL. You can NOT use Spotty without this module. Please use your operating system's package manager to install it."

I checked that I installed the 2 modules :
opkg list-installed | grep -i socket gives :
perlbase-socket - 5.26.1-2
opkg list-installed | grep -i ssl gives :
libopenssl - 1.0.2n-1 and openssl-util - 1.0.2n-1
opkg list-installed | grep -i io gives : perlbase-io - 5.26.1-2, perlbase-meta-notation - 5.26.1-2, perlbase-perlio - 5.26.1-2 and perlbase-version - 5.26.1-2

Is there another way to verify that the 2 perl modules (Net-SSLeay-1.90.tar.gz and IO-Socket-SSL-2.072.tar.gz) were installed correctly?
I know that Net-SSLeay needs some openssl libraries, I was able to install it without any errors after installing the openssl libraries using opkg.

What else do I need to check? Perhaps the version of openssl is wrong? Any help is greatly appreciated !

(Edit) Here is some additional information from the Logitech Media server log, when starting it up :

[21-09-12 14:17:24.0412] main::init (354) Starting Logitech Media Server (v7.7.1, r33735, Mon Nov 28 16:49:58 MST 2011) perl 5.010000
[21-09-12 14:17:33.3620] main::changeEffectiveUserAndGroup (967) Warning: Logitech Media Server must not be run as root!  Trying user nobody instead.
[21-09-12 14:17:38.8106] Slim::Utils::Misc::msg (1305) Warning: [14:17:38.8088] Async::HTTP: Unable to load IO::Socket::SSL, will try connecting to SSL servers in non-SSL mode
[21-09-12 14:17:38.8124] Plugins::Spotty::Plugin::initPlugin (43) Spotty requires the Perl module IO::Socket::SSL. You can NOT use Spotty without this module. Please use your operating system's package manager to install it.
[21-09-12 14:17:38.8574] Plugins::Spotty::Plugin::initPlugin (119) Please update to Logitech Media Server 7.9.1 if you want to use seeking in Spotify tracks.

So it really looks like it's unable to load the Perl modules....

All Replies

  • Mijzelf
    Mijzelf Posts: 1,721  Guru Member
    That Logitech server, is that the ZyXEL provided one? In that case it can't use Entware-ng perl, as it won't search /opt for binaries.
    *Maybe* it works if you start the Logitech server from a shell which has the /opt directories in PATH.
    That should be something like

    /i-data/md0/.system/zy-pkgs/etc/init.d/Logitech.sh startup

    If that works, it should be possible to edit that startscript to include /opt/bin/ in the PATH.

  • Frik
    Frik Posts: 8
    Hi Mijzelf, I've tried your suggestion, but I cannot find the file Logitech.sh. I have found:

    /i-data/47d31d36/.system/zy-pkgs/etc/init.d/SqueezCenter

    It looks like an executable and starts with the following:

    #!/bin/sh

    export LANG=en_US.UTF-8

    DB_CHECKER=/usr/local/zy-pkgs/bin/squeezecenter_dbchecker
    SHARE_UPDATER=/usr/local/zy-pkgs/bin/squeezecenter_updater

    LIBRARY_PATH=/usr/local/zy-pkgs/lib:/usr/local/zy-pkgs/mysql/lib/mysql
    PERL_LIBRARY_PATH=/usr/local/zy-pkgs/lib/perl5
    PERL_PATH=/usr/local/zy-pkgs/bin/perl

    PORTNUMBER=9000
    SERVER_PATH=/usr/local/zy-pkgs/gui/SqueezeCenter
    AUDIO_PLAYLIST_FOLDER=/i-data/md0/.media/squeezecenter

    CONFIG_FOLDER=/usr/local/zy-pkgs/config/SqueezeCenter
    CONFIG_FILE=${CONFIG_FOLDER}/SqueezeCenter
    PROTOCOL_FILE=/usr/local/zy-pkgs/etc/protocols
    EXECFILENAME=slimserver.pl
    NICE_VALUE="20"

    Is it possible to change this file? Stupid question, but the extension is not .sh, can I run it from the command line?


  • Mijzelf
    Mijzelf Posts: 1,721  Guru Member
    Yes, you can edit that file. It looks like changing the PERL_LIBRARY_PATH and PERL_PATH to the Entware perl version might do the trick.
    Linux doesn't care about file extensions. A file is executable when the executable flag is set (the 'x' when you execute 'ls -l'). An executable text file should have a she-bang (first line starting with #!) to specify which script engine to use.