Hallo, Am Mon, 30 Jan 2006, Ralph Müller schrieb:
Ich glaube wir haben das Rätsel zum größten Teil lösen können. Nach einem allerersten Test mit connect und disconnect scheint es jetzt zu funktionieren.
Am Montag, den 30.01.2006, 02:01 +0100 schrieb David Haller:
Mach also bitte auch mal: perl Makefile.PL PREFIX=/tmp/dbitest LIB=/tmp/dbitest/lib verbose
Als ich Deinen Tip mit dem "verbose" an den Befehlsaufruf hintendrangehängt habe ergab das Ergebnis nur ein zusätzliches "Can't open verbose: No such file or directory at Makefile.PL line 24."
Daraufhin habe ich diese ominöse Zeile 24 von Makefile.PL des DBI-Moduls gesucht. Der Anfang dieser Datei sieht so aus: # -*- perl -*- # # $Id: Makefile.PL,v 11.20 2004/01/08 14:03:46 timbo Exp $ # # Copyright (c) 1994-2002 Tim Bunce England # # See COPYRIGHT section in DBI.pm for usage and distribution rights.
BEGIN { require 5.006_00; unshift @INC, "lib"; }
if ($] < 5.008000) { warn qq{\a\a\a ********************************************************** Perl versions below 5.6.1 are no longer supported by the DBI. Perl versions 5.6.x may fail during installation with a complaint about the use of =head3 in the pod documentation. Press return to continue... ********************************************************** }; sleep 3; my $pause = <>; }
Und aaaarghhhh!, die Zeile "my $pause = <>" ist das Fatale. Sie frißt nämlich meine schönen PREFIX und LIB - Parameter einfach weg! Kein Wunder, daß ich davon im erzeugten Makefile nichts mehr gesehen habe.
*ARGS* Kein Wunder, dass es bei mir funktioniert, denn ich habe perl-5.8.6, also '($] < 5.008000)' ist bei mir unwahr, deswegen wird bei mir das 'my $pause = <>;' nicht ausgefuehrt -- und somit werden auch keine Parameter gefressen bzw. als Argumente fuer '<>' angesehen (siehe perldoc weissnichmehr, wo <> eben beschrieben wird, das nimmt ja Argumente als zu lesende Dateien oder, sofern keine vorhanden, eben STDIN). Ergo ist das einen Bugreport wert, denn Makefile.PL sollte in dieser Situation _explizit_ von STDIN lesen. Machst du den Bugreport?
Also diese Zeile gelöscht und anschließend ging DBI als auch DBD::SQLite wunderbar (in priv.Verzeichnis) zu installieren.
s.o. Als "workaround" bei dir ist's ok.
Als letztes ungelöstes Geheimnis verbleibt für mich die Frage, was sich der Autor/Maintainer der Datei Makefile.PL dabei wohl gedacht hat? Auf den ersten Blick siehts für mich so aus als daß er vom Benutzer einen Tastendruck abwarten wollte, aber irgendwie funktioniert das offenbar ja nicht wenn noch etwas wie PREFIX o.ä. hintendranhängt.
Jep. s.o.
Mach das. Und zeig auch mal auf die Ausgabe von getent passwd `id -u` | cut -d: -f6
ergibt "/kunden/homepages/37/d19249310/htdocs"
*MIST* Das heisst, dein ~ ist unter htdocs... Dann musst du zwanglaeufig auch unterhalb davon installieren. Ich wuerde dennoch ~/lib/perl5 vorschlagen, also perl Makefile.PL PREFIX=/kunden/homepages/37/d19249310/htdocs LIB kannst du in dem Fall dann weglassen. Das ist in deiner Situation wohl noch am saubersten. Aber trete mal dem Hoster auf die Fuesse, dass sowas eigentlich ein Unding ist. Wer ist dein Hoster?
Denn wie gesagt: unterhalb von htdocs gehoert sowas nicht hin.
Werde ich versuchen anzupassen.
s.o.
PS: Ohne Dich David hätte ich vorher aufgegeben.
*g* Unter Linux lohnt sich's nicht aufzugeben! -dnh -- GETOPT(3) BUGS This manpage is confusing.