| Author |
Message |
NiMhurchu
Moderator


Age: 39
Joined: 04 Mar 2005
Posts: 376
Location: 91xxx

|
Posted:
2006-01-15, 01:50 Perl-Module selber installieren |
  |
Hi,
für diejenigen unter uns, auf deren Webserver zwar kein Compress::Zlib für Perl installiert ist, aber dennoch Shellzugriff auf den Server besteht, sei dieses Tutorial gedacht.
Edit:
Generell sollte man erstmal beim Hoster anfragen und auf die Dringlichkeit der Datenbanksicherung hinweisen. Der ein oder andere läßt sich bestimmt erweichen und installiert euch die fehlenden Module.
Wie installiere ich mir Module, die dem MySQLDumper fehlen?
1. Schritt: fehlende Module ausfindig machen.
Im MySQLDumper auf "Backup" klicken und den Button "Perl-Module testen" betätigen. Der Dumper nennt die Module, die nicht gefunden werden können.
2. Schritt: besorgen der Module
Wer nicht weiß, was der PPM ist, der hat ihn auch nicht. Daher hier der Weg über's Web:
a) auf http://www.cpan.org/ surfen
b) "CPAN modules, distributions, and authors" klicken
c) in das Suchfeld einen Teilstring oder den ganzen Modulnamen eingeben (z. B. Compress::Zlib)
d) in der folgenden Liste Compress::Zlib auswählen
e) rechts oben befindet sich ein Downloadlink für ein .tar.gzip-Paket. Dieses herunterladen
f) WinZip ist in der Lage, solche Pakete zu extrahieren. Also das Paket in einen beliebigen Ordner entpacken
3. Schritt: hochladen
Vermutlich ist das Modul wieder in mehrere Unterordner eingepackt. Welchen der Ordner ihr hochladet, ist egal, Hauptsache, die Files sind dabei. Also: hochladen und Verzeichnis auf dem Webserver merken.
4. Schritt: Installationsordner anlegen
Da es sich um Perlmodule handelt, sollten sie im dafür vorgesehenen cgi-bin-Verzeichnis liegen. Am besten erstellt ihr einen Unterordner perlmodule im Verzeichnis cgi-bin. Also z. B. www/cgi-bin/perlmodule/.
5. Schritt: Shell öffnen
Mit dem SSH-Client eurer Wahl (z. B. Putty) mit dem Webserver verbinden. Ihr seid jetzt in eurem Homeverzeichnis. Ein ls bringt die Dateien und Ordner zum Vorschein, die dort liegen, z. B. private und www.
6. Schritt: Modul suchen und finden
Ihr habt euch hoffentlich den Ordner gemerkt, in den ihr das Modul hochgeladen habt. Wenn ihr den Ordner private/hans/perl/Compress-Zlib/ gewählt habt, dann wechselt jetzt in dieses Verzeichnis: cd private/hans/perl/Compress-Zlib [Enter]. Falls ihr euch verlaufen habt: mit cd .. geht's ein Verzeichnis höher, mit cd ~ zum Homeverzeichnis zurück.
Wenn ihr im vermeintlich richtigen Verzeichnis seid, führt ein ls aus, ob's auch wirklich das richtige ist. Bei einem Perlmodul sollte zumindest eine Datei namens Makefile.PL dabei sein.
7. Schritt: Pfade überdenken -- Konzentrationsarbeit!
Benötigt ihr für den nächsten Schritt. Ihr seid jetzt im Verzeichnis private/hans/perl/Compress-Zlib/. Das Perlmodul soll aber im Ordner www/cgi-bin/perlmodule/ installiert werden. Ihr benötigt für den nachfolgenden Schritt einen relativen Pfad. Also. Um von private/hans/perl/Compress-Zlib/ nach www/cgi-bin/perlmodule/ zu kommen, müßt ihr in der Verzeichnishierarchie "nach oben klettern", also von private/hans/perl/Compress-Zlib/ nach private/hans/perl/, von private/hans/perl/ nach private/hans/ und so weiter. Das funktioniert mit "..". Für jedes Verzeichnis, aus dem ihr nach oben steigt, setzt ihr "..". Also lautet der Pfad von private/hans/perl/Compress-Zlib/ nach private/: "../../../".
Ihr wollt aber nach www/cgi-bin/perlmodule/. Also lautet der komplette Pfad: ../../../../www/cgi-bin/perlmodule/
8. Schritt: Makefile generieren
Zur Installation ist ein sogenanntes Makefile vonnöten. Dieses Makefile enthält einen standardmäßig gesetzten Pfad zur Installation des Moduls -- und den könnt ihr nicht brauchen! Daher muß der Pfad für die Installation geändert werden. Und dafür auch die kleine Konzentrationsübung aus Schritt 7.
Mit "perl Makefile.PL LIB=../../../../www/cgi-bin/perlmodule" wird dann schlußendlich das Makefile generiert.
9. Schritt: Kompilieren
Das Makefile an sich beherbergt nur Informationen für den Compiler. Den schmeißt ihr mit "make" an. Es erscheinen Meldungen auf dem Bildschirm. Solange kein Fehler gemeldet wird, kein Problem. Sieht in etwa so aus:
user@sh4-1:~/private/perl/Compress-Zlib-1.41$ make
Skip blib/lib/Compress/Zlib.pm (unchanged)
cc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -DVERSION=\"1.41\" -DXS_VERSION=\"1.41\" -fPIC "-I/usr/lib/perl/5.8/CORE" Zlib.c
cc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -DVERSION=\"1.41\" -DXS_VERSION=\"1.41\" -fPIC "-I/usr/lib/perl/5.8/CORE" adler32.c
cc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -DVERSION=\"1.41\" -DXS_VERSION=\"1.41\" -fPIC "-I/usr/lib/perl/5.8/CORE" crc32.c
cc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -DVERSION=\"1.41\" -DXS_VERSION=\"1.41\" -fPIC "-I/usr/lib/perl/5.8/CORE" infback.c
cc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -DVERSION=\"1.41\" -DXS_VERSION=\"1.41\" -fPIC "-I/usr/lib/perl/5.8/CORE" inflate.c
cc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -DVERSION=\"1.41\" -DXS_VERSION=\"1.41\" -fPIC "-I/usr/lib/perl/5.8/CORE" uncompr.c
cc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -DVERSION=\"1.41\" -DXS_VERSION=\"1.41\" -fPIC "-I/usr/lib/perl/5.8/CORE" compress.c
cc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -DVERSION=\"1.41\" -DXS_VERSION=\"1.41\" -fPIC "-I/usr/lib/perl/5.8/CORE" deflate.c
cc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -DVERSION=\"1.41\" -DXS_VERSION=\"1.41\" -fPIC "-I/usr/lib/perl/5.8/CORE" gzio.c
cc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -DVERSION=\"1.41\" -DXS_VERSION=\"1.41\" -fPIC "-I/usr/lib/perl/5.8/CORE" inffast.c
cc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -DVERSION=\"1.41\" -DXS_VERSION=\"1.41\" -fPIC "-I/usr/lib/perl/5.8/CORE" inftrees.c
cc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -DVERSION=\"1.41\" -DXS_VERSION=\"1.41\" -fPIC "-I/usr/lib/perl/5.8/CORE" trees.c
cc -c -I./zlib-src -D_REENTRANT -D_GNU_SOURCE -DTHREADS_HAVE_PIDS -DDEBIAN -fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -O2 -DVERSION=\"1.41\" -DXS_VERSION=\"1.41\" -fPIC "-I/usr/lib/perl/5.8/CORE" zutil.c
Running Mkbootstrap for Compress::Zlib ()
chmod 644 Zlib.bs
rm -f blib/arch/auto/Compress/Zlib/Zlib.so
LD_RUN_PATH="" cc -shared -L/usr/local/lib Zlib.o adler32.o crc32.o infback.o inflate.o uncompr.o compress.o deflate.o gzio.o inffast.o inftrees.o trees.o zutil.o -o blib/arch/auto/Compress/Zlib/Zlib.so
chmod 755 blib/arch/auto/Compress/Zlib/Zlib.so
cp Zlib.bs blib/arch/auto/Compress/Zlib/Zlib.bs
chmod 644 blib/arch/auto/Compress/Zlib/Zlib.bs
Manifying blib/man3/Compress::Zlib.3pm
user@sh4-1:~/private/perl/Compress-Zlib-1.41$
10. Schritt: Kompilat testen
Mit "make test" wird überprüft, ob sich irgendwo ein Fehler eingeschlichen hat.
user@sh4-1:~/private/perl/Compress-Zlib-1.41$ make test
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/01version.....ok
t/02zlib........ok
t/03examples....ok
t/04encoding....ok
t/05gzsetp......ok
t/06gzdopen.....ok
All tests successful.
Files=6, Tests=305, 1 wallclock secs ( 0.49 cusr + 0.09 csys = 0.58 CPU)
user@sh4-1:~/private/perl/Compress-Zlib-1.41$
11. Schritt: Installieren
Mit "make install" wird das Modul installiert, wie man sieht auch an die richtige Stelle: ../../../www/cgi-bin/perlmodule/. Es werden noch weitere Unterordner angelegt, aber das stört nicht. Auch die Meldung "You do not have permissions..." stört nicht weiter, wenn es sich z. B. um ein "man" handelt. Das ist quasi die Hilfedatei für das Modul.
user@sh4-1:~/private/perl/Compress-Zlib-1.41$ make install
Warning: You do not have permissions to install into /usr/local/man/man3 at /usr/share/perl/5.8/ExtUtils/Install.pm line 114.
Installing ../../../www/cgi-bin/perlmodule/i386-linux-thread-multi/auto/Compress/Zlib/Zlib.so
Installing ../../../www/cgi-bin/perlmodule/i386-linux-thread-multi/auto/Compress/Zlib/Zlib.bs
Files found in blib/arch: installing files in blib/lib into architecture dependent library tree
Installing ../../../www/cgi-bin/perlmodule/i386-linux-thread-multi/Compress/Zlib.pm
Installing ../../../www/cgi-bin/perlmodule/i386-linux-thread-multi/auto/Compress/Zlib/autosplit.ix
Installing /usr/local/man/man3/Compress::Zlib.3pm
Writing ../../../www/cgi-bin/perlmodule/i386-linux-thread-multi/auto/Compress/Zlib/.packlist
Appending installation info to ../../../www/cgi-bin/perlmodule/i386-linux-thread-multi/perllocal.pod
ftp2240-2532247@sh4-1:~/private/perl/Compress-Zlib-1.41$
12. Schritt: und jetzt?
Glückwunsch! -- Modul ist installiert. Unter cgi-bin/perlmodule/ sollte sich jetzt ein Unterordner mit Prozessortyp und Betriebssystem befinden (bei mir i386-linux-thread-multi/), in dem weitere Unterordner liegen. Dieser Ordner ist jetzt sozusagen die Bibliothek für das Perlmodul (und für weitere, wenn ihr sie installieren wollt). Prozessortyp und Betriebssystem sind übrigens der Grund dafür, daß man ein Modul nicht einfach auf dem Rechner zuhause installieren und dann hochladen und verwenden kann. Es sei denn, jemand hätte die gleiche Konstellation zuhause, die der Webserver auch bietet.
Jetzt müßt ihr dem MySQLDumper nur noch sagen, daß er es auch verwenden soll. Vermutlich habt ihr die Dateien "crondump.pl/.cgi" und "perltest.pl/.cgi" bereits in eurem cgi-bin-Verzeichnis. Dann ladet sie runter und öffnet sie.
Änderung in crondump.pl/.cgi:
Unter die Zeile mit dem "shebang" kommt jetzt:
push(@INC,'/physikalischer/absoluter/pfad/zu/perlmodule/i386-linux-thread-multi');
In unserem Beispiel also in etwa: /hp/kd/ha/hans/cgi-bin/perlmodule/i386-linux-thread-multi. Komplett:
#!/usr/bin/perl -w
push(@INC,'/hp/kd/ha/hans/cgi-bin/perlmodule/i386-linux-thread-multi');
########################################################################################
# MySQLDumper CronDump
...
Änderung in perltest.pl/.cgi:
Hier genau das gleiche wie in crondump.pl/.cgi:
Unter die Zeile mit dem "shebang" kommt jetzt:
push(@INC,'/physikalischer/absoluter/pfad/zu/perlmodule/i386-linux-thread-multi');
In unserem Beispiel also in etwa: /hp/kd/ha/hans/cgi-bin/perlmodule/i386-linux-thread-multi. Komplett:
#!/usr/bin/perl -w
push(@INC,'/hp/kd/ha/hans/cgi-bin/perlmodule/i386-linux-thread-multi');
use strict;
use Socket;
...
13. Schritt: (ist jemand abergläubisch?) -- Test, ob's funktioniert
MySQLDumper aufrufen, "Backup" klicken, dann "Perl-Module testen" betätigen. Und? Funktioniert? Sehr gut. Dann könnt ihr jetzt, wenn ihr wollt, in der Konfiguration sowohl für "Cronscript" GZip-Kompression anschalten, als auch bei "allgemein" die komprimierten Logfiles. Dann "Backup" -- "Perl-Cronscript ausführen" -- sollte klappen.
Edit:
Mit was komme ich auf die Shell?
Der übliche Weg führt über ein SSH-Terminalprogramm, z. B. die Freeware Putty (http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html) oder das teure SecureCRT (http://www.vandyke.com/products/securecrt/).
Wenn kein Zugriff über SSH gestattet ist, dann könnt ihr noch die PHP-Shell ausprobieren (http://mgeisler.net/php-shell/). Diese hat allerdings einige Einschränkungen, siehe auf der Produktseite.
Achtung: ich bin gerne bereit, zu helfen, wo es geht, aber ich bin auch kein großer Linux-/Unix-Guru. Bei mir hat dieser Weg wunderbar funktioniert, und ich erhalte jetzt wunderbar gepackte Datenbanken und Logfiles vom Perlscript. Ich übernehme allerdings keine Verantwortung für Schäden oder Datenverluste in anderen Installationen, das mögt ihr bitte verstehen.
Wer sich weiter informieren möchte, der kann sich gerne den Artikel auf http://aktuell.de.selfhtml.org/artikel/server/linux/index.htm ansehen (Linux für Webworker). Die Linuxkenntnisse, die man benötigt, um mit seinem Webserver zurande zu kommen.
Gruß,
NiMhurchu
_________________ "Man muß keine Noten lesen können,
um Musiker zu sein."
Jeanette Biedermann, deutsche Popsängerin, 25.11.2005
Last edited by NiMhurchu on 2006-01-15, 16:29; edited 2 times in total
|
|
  |
 |
Anzeigen
|
Posted:
Anzeigen |
 |
|
| |
 |
st@eff.en
MSD-God


Age: 50
Joined: 11 May 2004
Posts: 885
Location: Haan

|
Posted:
2006-01-15, 12:33 (No subject) |
  |
Wow, vielen Dank für die Mühe. Das ist Gold wert für alle, denen das Compress verwehrt wird.
Als ersten Schritt empfehle ich trotzdem, den Provider anzuschreiben und ihn zu bitten, die fehlenden (und wichtigen) Module nachzuinstallieren. Wenn man die Wichtigkeit unterstreicht, sollten eigentlich alle Provider positiv darauf reagieren.
Als 2. möchte ich erwähnen, das die meisten keinen Shellzugriff haben, also mit Putty keine Verbindung zustande bekommen.
Hier kann man sich auch eine PHP-Shell installieren => http://mgeisler.net/php-shell/
_________________ vg st@eff.en
sk-typo3
|
|
   |
 |
NiMhurchu
Moderator


Age: 39
Joined: 04 Mar 2005
Posts: 376
Location: 91xxx

|
Posted:
2006-01-15, 16:19 (No subject) |
  |
Hi,
Wow, vielen Dank für die Mühe. Das ist Gold wert für alle, denen das Compress verwehrt wird. ... wie z. B. mir...
Als ersten Schritt empfehle ich trotzdem, den Provider anzuschreiben und ihn zu bitten, die fehlenden (und wichtigen) Module nachzuinstallieren. Wenn man die Wichtigkeit unterstreicht, sollten eigentlich alle Provider positiv darauf reagieren. Stimmt, da hast Du recht. Compress::Zlib gehört in meinen Augen sowieso irgendwie zur Standardinstallation auf einem Webserver. (Ich hatte meinen Hoster gefragt, der hatte mich dann aber -- marketingtechnisch und geldverdienwollerisch -- auf einen Rootserver für schlappe 50 Tacken pro Monat verwiesen.)
Ich denke aber auch, daß sich der ein oder andere Hoster dazu überreden läßt, wenn man darstellt, daß es um die Sicherung der Datenbank geht.
Als 2. möchte ich erwähnen, das die meisten keinen Shellzugriff haben, also mit Putty keine Verbindung zustande bekommen.
Hier kann man sich auch eine PHP-Shell installieren => http://mgeisler.net/php-shell/
Also das Ding klingt mal echt gut! Da gibt's nur einen Haken an der Sache, und das ist der verflixte Safe Mode. Mit dem kommt die PHP-Shell nicht zurecht. Mit dem kommt so ziemlich jede coole Routine nicht zurecht. Und jeder Hoster hat ihn eingeschaltet. (Zumindest jeder, den ich kenne).
Gruß,
NiMhurchu
_________________ "Man muß keine Noten lesen können,
um Musiker zu sein."
Jeanette Biedermann, deutsche Popsängerin, 25.11.2005
|
|
  |
 |
st@eff.en
MSD-God


Age: 50
Joined: 11 May 2004
Posts: 885
Location: Haan

|
Posted:
2006-01-16, 11:15 (No subject) |
  |
manchmal hilft da auch eine .htaccess mit dem Inhalt
php_admin_flag safe_mode Off
jedenfalls bei Confixx - Systemen, der Syntax kann schon mal leicht differieren, da müsste man Googeln. Pech, wenn der Provider das Override von htaccess deaktiviert hat, aber wir sprechen ja wohl nicht von funpic
_________________ vg st@eff.en
sk-typo3
|
|
   |
 |
NiMhurchu
Moderator


Age: 39
Joined: 04 Mar 2005
Posts: 376
Location: 91xxx

|
Posted:
2006-01-16, 18:04 Re: Perl-Module selber installieren |
  |
Hi,
das wäre natürlich das große Los gewesen... aber das bringt den Server so in Verwirrung, daß er mir die dicke 500 zeigt...
Schade, aber guter Tip, vielleicht kann's ja jemand anders verwenden.
Gruß,
NiMhurchu
_________________ "Man muß keine Noten lesen können,
um Musiker zu sein."
Jeanette Biedermann, deutsche Popsängerin, 25.11.2005
|
|
  |
 |
krusty
uses MSD regulary


Joined: 03 Feb 2006
Posts: 19

|
Posted:
2006-03-21, 16:17 (No subject) |
  |
Es geht auch noch nen bissel komfortabler.
Wenn der Shellzugriff besteht und die Verbindung mit dem Internet ebenfalls, kann man auch folgendes verwenden.
perl -MCPAN -e shell > Beim ersten Aufruf wird man nach einigen Dingen gefragt. Einfach alle bestätigen bis auf die Auswahl der Quellserver. Hier ein paar auswählen, werden angezeigt.
i /<Modul>/ > sucht dann alle Module mit dem angegebenen Namen. Bsp: i /MIME::Lite/ zeigt dir alle Module an, die MIME::Lite beinhalten.
install MIME::Lite > Installiert das Modul mit allen dazu benötigten Modulen. Wenn es also Abhängigkeiten zwischen Modulen gibt, werden alle für das gewählte Modul benötigten Module mitinstalliert. Sehr praktisch.
? > Zeigt eine kurze Hilfeübersicht an.
exit > Verlässt die "Perl Shell"
|
|
  |
 |
DannyFD
knows MySQLDumper

Age: 38
Joined: 23 Nov 2005
Posts: 7

|
Posted:
2006-07-11, 10:02 (No subject) |
  |
Ganz so klappt es nicht mit dem install-Befehl, ich hab es so installiert:
In der shell:
perl -MCPAN -e shell
i /mime::lite/
Dann kopiert man sich den richtigen Pfad zum File zB.:
Y/YV/YVES/MIME-Lite-3.01.tar.gz
Nun gibt man ein:
install Y/YV/YVES/MIME-Lite-3.01.tar.gz
Und schon klappt auch die Installation.
Gruß Danny
|
|
  |
 |
|
|
CrackerTracker © 2004 - 2012 CBACK.de
Powered by Orion based on phpBB
© 2001, 2002 phpBB Group
CBACK Orion Style based on FI Theme
All times are GMT + 2 Hours
phpBB SEO
|