Net::SSH::Perl installieren
21. April 2008Im Gegensatz zu Net::SSH bietet das Modul Net::SSH::Perl eine voll in Perl integrierten SSH-Client, der in den Perl-Scripts verwenet werden kann. D.h. dieser ist von der installierten SSH-Version unabhängig, forked nicht bei jedem Aufruf was für Performance und Sicherheit sorgt.
Das große Problem an diesem Modul ist die Installation. Es gibt zahlreiche Abhängigkeiten und die Installation via CPAN scheiterte sowohl auf Mac OS X (10.5.2) als auch im Ubuntu Server 6.01 (LTS). Als Troublemaker hab ich die Module Math::Pari, Math::BigInt::GMP und Crypt::DSA geortet. Diese habe ich nun manuell installiert. Dazu die folgenden Schritte zunächst für Ubuntu und dann für OS X:
Installation von Net::SSH::Perl auf Ubuntu 6.01.1 Server
Falls man das nicht schon hinter sich hat müssen perl und cpan installiert werden:
# apt-get install perl
Dann geht’s los …
Math::Pari
$sudo -s
# apt-get update
# apt-get upgrade
# apt-get install gcc
#apt-get install g++
Dann hole man sich das Tar von der Pari-Homepage und packe es im CPAN-Build-Verzeichnis aus:
# cd ~/.cpan/build
# wget http://pari.math.u-bordeaux.fr/pub/pari/unix/pari-2.3.3.tar.gz
# tar -xzf pari-2.3.3.tar.gz
Nun kann man den Anweisungen aus dem INSTALL folgen:
b) ./Configure c) make all, make bench d) make install e) cp misc/gprc.dft /etc/gprc
Tipp: Wenn man diese Fehlermeldung bekommt „C compiler does not work. PARI/GP requires an ANSI C compiler“ dann hat man vergessen den c++-Kompiler zu installieren. Siehe oben!
Math::BigInt::GMP
Damit dieses Modul installiert werden kann, muss man erst einmal eine GMP-Library im OS installieren:
# apt-get install libgmp3-dev cpan> install Math::BigInt::GMP
Crypt::DSA
Crypt::DSA muss manuell (ohne CPAN) installiert werden, da make test sich aufhängt.
# wget http://search.cpan.org/CPAN/authors/id/B/BT/BTROTT/Crypt-DSA-0.14.tar.gz # tar xzf Crypt-DSA-0.14.tar.gz # cd Crypt-DSA-0.14 # perl Makefile.PL # make # make install
Nun kann man den Rest mit CPAN installieren:
cpan> install Net::SSH::Perl
Bei der Auswahl der Algorithmen würde ich noch DES3 hinzunehmen – NetApp z.B. unterstützt das out-of-the-box:
[1] IDEA [2] DES [3] DES3 [4] Blowfish [5] RC
Enter your choices, separated by spaces: [1] 1 3
Möchte man Tripple-DES ergänzen, nachdem man das Modul Net::SSH::Perl schon einmal nur mit IDEA installiert hat, so ruft man einfach in der cpan-Shell make Net::SSH::Perl auf.
Installation von Net::SSH::Perl auf Mac OS X
Zunächst ein Hinweis: Die Developer-Tools waren bei mir installiert (siehe http://developer.apple.com/tools/xcode/index.html ) – das muss so sein, schon alleine damit die später benötigte port-Software funktioniert.
Ansonsten versuchte ich sinngemäß zu verfahren wie beim Ubuntu-Server. Die Installation von Crypt::DSA mittels CPAN war kein Problem (OS X 10.5.2). Somit bleiben Math::Pari und GMP als „Sonderfälle“. Und da war nichts zu machen. Weder mittel CPAN noch durch den Weg „zu Fuß“ mittels Download, Auspacken und dann ./Configure und make. Somit änderte ich die Strategie komplett und installierte das ganze mittels darwin-ports. Falls noch nicht geschehen, ist die Darwinport-Software zunächst zu installieren. (Siehe http://darwinports.com/ bzw. http://guide.macports.org/)
Installation von Pari
ich habe zunächst einmal Pari installiert. Das Paket liegt hier (http://pari.darwinports.com/), muss aber nicht heruntergeladen werden. Das macht das Komando:
$ sudo port install pari
Installation von Convert::PEM und Net::SSH::Perl
http://p5-convert-pem.darwinports.com/
Da hat sich ein Problem ergeben: Nach einiger Zeit bleibt der Installationsprozess hängen, die CPUs laufen auf jeweils 100% und nichts geht mehr weiter. Auch viel Geduld ändert da nichts. Wenn man die Installation im Debugmodus startet, sieht man die Ursache des Problems:
$sudo port -d install p5-convert-pem
Wenn CPAN für diesen User noch nicht konfiguriert ist, frägt Darwinport nach dem Kontinent für Downloads. Und aus dieser Schleife findet er icht mehr heraus. Die Lösung ist also, cpan zuvor zu konfigurieren und sicher zustellen, dass diese Konfiguration dauerhaft gespeichert wurde. (Ich hab dazu sudo -s und dann als root cpan gestartet, Bundle::CPAN installiert, CPAN nochmal gestartet und die diversen Dialoge beantwortet wobei ich die Frage nach der Speicherung der Konfiguration entgeggen dem Default mit yes statt mit no beantwortet hatte.)
Nach diesem Heckmeck durfte ich dann endlich Convert::PEM und Net::SSH::Perl installieren; und zwar so:
$ sudo port install p5-net-ssh-perl
Nacharbeiten
Die Module werden so out of the Box nicht gefunden. Man kann deren Verzeichnisse (/opt/local/lib/perl5/5.8.8) aber mit lib im Perlscript hinzufügen.
Veränderungen an den Modulen
Wenn man diese mit port installierten Module allerdings editiert und die Veränderten in ein eigenes Verzeichnis kopieren, funktioniert das ganze nur noch teilweise. Net::SSH::Perl kommt damit zurecht. Math::Pari sträubt sich aber. Das führt dazu, dass in diesem Fall nur SSH1 Verbindungen mit Net::SSH::Perl möglich sind.
Hallo,
bei mir funktioniert die Installation (vielen Dank!) aber wenn ich versuche das Net::SSH::Perl Modul zu benutzen, klappt es nicht. Ich kann sehen, das perl ein Verbindung zu richtige IP versucht aufzubauen, aber kurz danach bekomme ich diesen Fehler:
$ perl myscript.pl
Can’t load ‚/opt/local/lib/perl5/vendor_perl/5.8.8/darwin-2level/auto/Math/Pari/Pari.bundle‘ for module Math::Pari: dlopen(/opt/local/lib/perl5/vendor_perl/5.8.8/darwin-2level/auto/Math/Pari/Pari.bundle, 1): Symbol not found: _hiremainder
Referenced from: /opt/local/lib/perl5/vendor_perl/5.8.8/darwin-2level/auto/Math/Pari/Pari.bundle
Expected in: dynamic lookup
Falls dieser Fehler jemandem bekannt ist, wäre ich dankbar für eine Idee…
Gruß,
von kaz 6. Mai 2008 at 11:48Hallo kaz,
von lanti 6. Mai 2008 at 11:55verbindest du dich mit SSH1 oder 2? Wenn 2, dann probier bitte SSH1 – das könnte das Pari-Problem umgehen.
Gruß, Ingo
That does work, thanks! Unfortunately my host doesn’t accept ssh-1 connections…
von kaz 7. Mai 2008 at 3:51Tut mir Leid, habe unabsichtlich auf englisch geantwortet. Hatte gerade in englisch „gepostet“ und habe mich irgendwie nicht umgestellt ;)
von kaz 7. Mai 2008 at 3:52Ich brauche keine win32 Kompatibilität, also habe ich Net::SSH2 probiert, und es geht. Das reicht mir.
Danke für die Hilfe, auf jeden Fall.
von kaz 8. Mai 2008 at 13:43Perfekt…saved my day :-)
von Chris 18. Februar 2010 at 12:19