Schrift
[thread]3680[/thread]

DBD-Pg unter Win32 kompilieren: bisher erfolglos



<< |< 1 2 >| >> 19 Einträge, 2 Seiten
chkabel
 2006-04-24 14:17
#34320 #34320
User since
2006-04-24
8 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen.

Ich stehe vor dem Problem DBD-Pg (Vorzugsweise 1.4x)
für WindowsXP zu kompilieren. Allerdings gestaltet sich das
leider nicht so einfach wie gewünscht. Sämtliche Recherchen
brachten keine befriedigende Lösung hervor,
obwohl das ein häufiges Problem zu sein scheint
(z. B. hier im Forum unter dem Thema: "PostgreSQL mit Perl unter Win32 ansteuern, es klappt nicht").

Wenn also jemand DBD-Pg schon erfolgreich unter WindowsXP im Einsatz hat, würde ich mich sehr über eine Lösung freuen.

Gebraucht wird das ganze für den Produktiveinsatz, deshalb entfallen alle Alternativen (siehe Pkt. C).
Standardmäßig läuft alles problemlos unter Linux - ein Setup unter WindowsXP wäre allerdings wünschenswert,
daher die Notwendigkeit für DBD-Pg unter XP.

Hier nun mein Vorgehen zur genaueren Beschreibung.

A. Folgende Lösungsmöglichkeiten bin ich durch:
---------------------------------------------

1. Genau nach Anleitung in der Readme.win32 des Moduls.

Also zuerst eigenes PostgreSQL (8.1.3) bauen - erfolgreich.
Perl (stable=5.8.8) bauen (non-threaded) - erfolgreich
DBI (1.50)bauen - erfolgreich
DBD-Pg 1.48 - kein Erfolg

Versucht mit den Buildumgebungen: VS6,VS7,VS8,MinGW
Ebenfalls versucht mit dem installierbaren PostgreSQL - Ergebnis gleich

2. Mit ActivePerl (http://www.activestate.com/Products/ActivePerl/ in den Versionen 5.6.1.6, 5.7 , 5.8.8.817)

2.1 DBI jeweils selbst übersetzt, DBD-Pg scheitert jedes mal
2.2 DBI über ppm, DBD-Pg scheitert wieder.
2.3 DBI über ppm, DBD-Pg ebenfalls über ppm (http://theoryx5.uwinnipeg.ca/ppms/)
Nachdem es installiert ist, explodiert Perl bei jedem Versuch einer Datenbankverbindung zum PostgreSQL-Server.

3. Mit PxPerl (http://www.pxperl.com/)

Wirklich schönes Packet, Compiler lassen sich leicht switchen und nmake ist dabei.
Leider das gleiche Problem, da es nichts mit Perl selbst zu tun hat.

4. Mit dem Camelpack (http://stennie.org/camelpack/)

Da ist schon alles dabei (ActivePerl, Dev-Cpp, nmake).
Ansonsten siehe Pkt. 3.


B. Inakzeptable Alternativen:
---------------------------

Es darf nicht unter cygwin laufen.
DBD-PgPP ist unzureichend, da es keine BLOBs unterstützt (sind aber zwingend erforderlich)
ODBC aus diversen Gründen ebenfalls unzureichend.

C. Eingrenzung (spekulativ):
--------------------------
Scheint dann kritisch zu werden, wenn von WinAPI gebrauch gemacht wird.

...
C:\Dev-Cpp\include\winbase.h(1446) : error C2085: 'GetProcessTimes' : not in formal parameter list
C:\Dev-Cpp\include\winbase.h(1447) : error C2085: 'GetProcessVersion' : not in formal parameter list
C:\Dev-Cpp\include\winbase.h(1448) : error C2085: 'GetProcessWindowStation' : not in formal parameter list
C:\Dev-Cpp\include\winbase.h(1449) : error C2085: 'GetProcessWorkingSetSize' : not in formal parameter list
...
auch nicht unüblich sind etliche Fehlermeldungen wie:
...
dbdimp.o(.text+0x8bd4):dbdimp.c: undefined reference to `lo_tell'
dbdimp.o(.text+0x8c6e):dbdimp.c: undefined reference to `lo_unlink'
dbdimp.o(.text+0x8d5e):dbdimp.c: undefined reference to `lo_import'
dbdimp.o(.text+0x8e4f):dbdimp.c: undefined reference to `lo_export'
collect2: ld returned 1 exit status
...




Es wäre wirklich schön, wenn jemand einen Rat bzw. eine Lösung oder gar ein fertiges und funktionierendes ppm wüsste.
Auf jeden Fall vielen Dank im Voraus.
"Wer mit Ungeheuern kämpft, mag zusehn, dass er nicht dabei zum Ungeheuer wird.
Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein." - F. Nietzsche
renee
 2006-04-24 16:20
#34321 #34321
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Bekommst Du irgendwelche Fehlermeldungen?? Wenn ja, dann bitte hier posten.
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Strat
 2006-04-24 18:47
#34322 #34322
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
hast du schonmal mit einem perl5.8 von http://www.activestate.com/ und DBD::Pg von http://theoryx5.uwinnipeg.ca/ppms/ versucht?
(Siehe auch: http://faq.perl-community.de/bin....inModul )

update:
und das postgreSQL mit installer verwenden, nicht das selbst gebaute (funktioniert bei mir)\n\n

<!--EDIT|Strat|1145893306-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
Dubu
 2006-04-24 19:08
#34323 #34323
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Offensichtlich (siehe Punkt 2.3)
Strat
 2006-04-24 19:39
#34324 #34324
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
oben noch was hinzugefuegt... so funktionierts bei mir\n\n

<!--EDIT|Strat|1145893200-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
chkabel
 2006-04-24 20:30
#34325 #34325
User since
2006-04-24
8 Artikel
BenutzerIn
[default_avatar]
[quote=Strat,24.04.2006, 16:47]update:
und das postgreSQL mit installer verwenden, nicht das selbst gebaute (funktioniert bei mir)[/quote]
hmmm,

hab ich natürlich schon ausprobiert.
Zumindest die aktuelle (8.1.3).

Dann ist es dem leider auch egal, wenn ich die mitgelieferten Header und Libs beim kompilieren zu den entsprechenden Systemvariablen hinzufüge.

Dass via ppm installierte Modul bringt Perl scheinbar unabhängig von
der Postgres Version zum crash sobald ich einen Verbindungsversuch starte (DBI->connect(DBI:Pg:dbname=...)).

Das Problem ist auf x Computern reproduzierbar ( allerdings immer XP, ist allerdings auch Voraussetzung ).

Könntest du bitte die Versionnummern der Komponenten deiner funktionierenden Installation posten. Wobei ich annehme, dass es sich ume etwa folgendes Setup handelt:
Postgres: 8.1.3
Perl: 5.8.x
DBI: 1.50
DBD-Pg: 1.45
Wenn dem so ist und du nichts selbst kompiliert hast ist es zweifellos Windows-spezifisch :-( .

Danke im Voraus.
"Wer mit Ungeheuern kämpft, mag zusehn, dass er nicht dabei zum Ungeheuer wird.
Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein." - F. Nietzsche
Strat
 2006-04-25 00:57
#34326 #34326
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
ich habe die kiste leider nicht mehr hier
perl 5.8.7 (AS 815)
DBI: 1.49
DBD::Pg: ??
PostgreSQL: war die erste, die es fuer Windows (ohne cygwin) gab. Ich glaube, 8.0
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
renee
 2006-04-25 09:22
#34327 #34327
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
[quote=chkabel,24.04.2006, 18:30][...]
Dass via ppm installierte Modul bringt Perl scheinbar unabhängig von
der Postgres Version zum crash sobald ich einen Verbindungsversuch starte (DBI->connect(DBI:Pg:dbname=...)).

Das Problem ist auf x Computern reproduzierbar ( allerdings immer XP, ist allerdings auch Voraussetzung ).
[...][/quote]
Was heißt "Crash"? Bekommst Du eine Fehlermeldung? Wenn ja, dann poste die doch bitte mal. Und poste bitte mal etwas Code...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
chkabel
 2006-04-25 10:31
#34328 #34328
User since
2006-04-24
8 Artikel
BenutzerIn
[default_avatar]
Crash bedeutet, dass Perl mit einer Windowstypischen Fehlermeldung beendet wird.

"Perl Command Line Interpreter hat ein Problem
festgestellt und muss beendet werden."

Problemsignatur:
AppName: perl.exe AppVer: 5.8.7.815 ModName: unknown
ModVer: 0.0.0.0 Offset: 00905a4d

Code Posten hilft eigentlich nicht weiter, da jeder Verbindungsversuch scheitert. Jedes Script, das unter Linux
oder Cygwin anstandslos läuft scheitert immer an dieser Addresse
(00905a4d). Hier mal ein normalerweise funktionierendes "Script":

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
use strict;
use warnings;

use DBI;

my $dbname = "test";
my $dbstring = "dbi:Pg:dbname=$dbname";
my $dbuser = "postgres";
my $dbpwd = "postgres";

my $dbh = DBI->connect($dbstring, $dbuser, $dbpwd, {AutoCommit => 0})
|| die "connection failed: $DBI::errstr\n";

$dbh->disconnect();
"Wer mit Ungeheuern kämpft, mag zusehn, dass er nicht dabei zum Ungeheuer wird.
Und wenn du lange in einen Abgrund blickst, blickt der Abgrund auch in dich hinein." - F. Nietzsche
esskar
 2006-04-25 10:37
#34329 #34329
User since
2003-08-04
7321 Artikel
ModeratorIn

user image
könnte an der perl version liegen.
die speicheradresse ist die strcmpiW funktion in kernel32.dll . aber das bringt uns auch nicht weiter :/\n\n

<!--EDIT|esskar|1145947107-->
<< |< 1 2 >| >> 19 Einträge, 2 Seiten



View all threads created 2006-04-24 14:17.