Beefy Boxes and Bandwidth Generously Provided by pair Networks
Syntactic Confectionery Delight
 
PerlMonks  

Re^3: Net-SSH2 on Windows with Perl 5.14

by salva (Canon)
on Sep 11, 2015 at 08:30 UTC ( [id://1141651]=note: print w/replies, xml ) Need Help??


in reply to Re^2: Net-SSH2 on Windows with Perl 5.14
in thread Net-SSH2 on Windows with Perl 5.14

Hi bogi, I am one of the maintainers.

You are right, installing Net::SSH2 on ActiveState Perl on Windows is pretty difficult. A document explaining how to do it exists on the distribution but to be honest, I wasn't able to successfully follow it myself.

So, anybody willing to volunteer to improve that would be really welcome in the project!!!

BTW, the keep-alive functionality in libssh2 is still quite buggy, and if you use it you risk breaking the connection.

  • Comment on Re^3: Net-SSH2 on Windows with Perl 5.14

Replies are listed 'Best First'.
Re^4: Net-SSH2 on Windows with Perl 5.14
by Anonymous Monk on Sep 11, 2015 at 08:44 UTC

    You are right, installing Net::SSH2 on ActiveState Perl on Windows is pretty difficult. A document explaining how to do it exists on the distribution but to be honest, I wasn't able to successfully follow it myself.

    :) Well step 1 is wrong :D for all perls you want http://mingw-w64.sourceforge.net/ its the better compiler

    Also, the latest strawberryperl comes bundled with libssh2 and all the prereqs including the compiler, also the module, and the better compiler ...

    So if you want to install it into ActivePerl, install strawberryperlportable, so you get all the prerequisites pre compile..... then use the activeperl...perl.exe to run Makefile.PL and compile the thing specifically for activeperl .... copy some .dlls and you're done

    Actually that just more of the same busywork, http://www.sisyphusion.tk/ppm/Net-SSH2.ppd has already gone through all those steps and provided binaries

Re^4: Net-SSH2 on Windows with Perl 5.14
by bogi (Initiate) on Sep 11, 2015 at 22:37 UTC

    I did not know that there are instructions on the distribution itself, i.e. ActiveState Perl?!

    I only know about the BUILDING.WIN32 in the github repo (https://github.com/rkitover/net-ssh2), which, when following, end up in a perl 5.8.8 under MinGW ...

    Do you have a pointer for me of the ActiveState instructions?

      I did not know that there are instructions on the distribution itself, i.e. ActiveState Perl?! I only know about the BUILDING.WIN32 in the github repo (https://github.com/rkitover/net-ssh2), which, when following, end up in a perl 5.8.8 under MinGW ... Do you have a pointer for me of the ActiveState instructions?

      Its the same file :) why do you want to compile everything from source? Most of the time that is just a hassle, so you go to looking for binaries from the devs/maintainers so you only have to compile the perl side of things

      Easiest path (since strawberryperl folks already compiled the prerequisites)

      Go to http://strawberryperl.com/releases.html and get a portablezip edition, unzip it, then

      run "portableshell.bat"

      download/unzip Net-SSH2... then chdir to that directory in the portableshell window

      Then edit Makefile.PL essentially as per https://github.com/rkitover/net-ssh2/blob/master/BUILDING.WIN32 , set basic http://gcc.gnu.org/onlinedocs/gcc/Environment-Variables.html

      $ENV{LIBRARY_PATH}='strawberry-perl-5.22.0.1-64bit-portable/c/lib'; $ENV{C_INCLUDE_PATH}='strawberry-perl-5.22.0.1-64bit-portable/c/includ +e';

      so gcc... knows how to find libssh2.h/libssh2.a

      Then run ....fullpathtoactivestate\bin\perl.exe Makefile.PL

      The whole trick of it most of the time is simple "%PATH%" manipulation

      Post details if you get stuck

      links like these talk about it or link to links that talk about it... most of it is "sh configure ... make" or "perl Makefile.PL... make" ... A Guide To Installing Modules...copy/paste

        Thanks to your instructions, I managed to successfully build NetSSH2 for 5.16 and also for 5.14, each in 32 Bit.

        I stick to the 32 bit version, because I had problems with method scp_get in the past returning only an empty file, even using the pre-compiled binaries 0.53.

        What I did in short:

        • Downloaded Strawberry-Perl Portable 32bit 5.14
        • Extracted to c:\strawberry, opened cmd.exe and called portableshell.bat
        • Downloaded the alpha version of Net::SSH2 (0.54_02), extracted somewhere else and cd'd into that dir
        • Set lib/include paths for gcc, as recommended by you
          set LIBRARY_PATH=c:\strawberry\c\lib
          set C_INCLUDE_PATH=c:\strawberry\c\include
        • c:\perl\bin\perl.exe Makefile.PL (this is my ActiveState installation)
        • dmake (in order to build it)

        I did not test the libraries yet, but I'd expect that it'll be ok...

        But I did not manage to build it for perl versions above perl 5.16:
        I looks to me that there are two different versions, one with 64 bit integers and one without. No matter which version I try, every time I get pages of this kind of error:

        SSH2.c:1103:14: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast] ss = (SSH2 *)SvIV((SV*)SvRV(ST(0))); ^

        Sometimes I get even this error:

        SSH2.o:SSH2.c:(.text+0x14f8d): undefined reference to `CRYPTO_set_dyn lock_destroy_callback' C:/STRAWB~1/c/bin/../lib/gcc/i686-w64-mingw32/4.8.3/../../../../i686- w64-mingw32/bin/ld.exe: SSH2.o: bad reloc address 0x1768 in section `.rdata' C:/STRAWB~1/c/bin/../lib/gcc/i686-w64-mingw32/4.8.3/../../../../i686- w64-mingw32/bin/ld.exe: final link failed: Invalid operation collect2.exe: error: ld returned 1 exit status dmake: Error code 129, while making 'blib\arch\auto\Net\SSH2\SSH2.dl l'

        Before your advice, I did not try to use a strawberry perl because I thought that strawberry is compiled with gcc, whereas ActivePerl used Microsoft compilers. But this has turned out to be WRONG! Both use gcc.

        I will continue to test the perls 5.18 and above and also 64 bit versions. Right now, I am able to test the new version of Net::SSH2.

        Thanks for your wisdom!
        Bogi

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://1141651]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others romping around the Monastery: (3)
As of 2024-04-25 13:58 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found