PERL - Probleme beim Kompilieren von CPAN-Modulen [gelöst]

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

PERL - Probleme beim Kompilieren von CPAN-Modulen [gelöst]

Beitrag von Duff » 26.10.2006 20:21:48

Hallo,

wollte gerade ein CPAN-Modul kompilieren, nachdem ich es dekomprimiert hatte.
Doch leider bekam ich folgende Fehlermeldung:

Code: Alles auswählen

daniel@daniel-laptop:~/downloads/perl_module/Tk-804.027$ perl Makefile.PL 
/usr/bin/perl is installed in /usr/lib/perl/5.8 okay
PPM for perl5.008008
Test Compiling config/signedchar.c
Test Compiling config/Ksprintf.c
Test Compiling config/tod.c
Test Compiling -DTIMEOFDAY_TZ config/tod.c
TZ gettimeofday()
Using -L/usr/lib to find /usr/lib/libX11.so.6.2.0
Cannot find X include files via /usr/include
Cannot find X include files anywhere at ./myConfig line 332.
Compilation failed in require at Makefile.PL line 36.
BEGIN failed--compilation aborted at Makefile.PL line 38.
Wie kann ich den Fehler beheben? Fehlt mir irgendeine bestimmte lib?
Zuletzt geändert von Duff am 30.10.2006 08:46:07, insgesamt 1-mal geändert.
Oh, yeah!

Benutzeravatar
herrchen
Beiträge: 3257
Registriert: 15.08.2005 20:45:28
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Re: PERL - Probleme beim Kompilieren von CPAN-Modulen

Beitrag von herrchen » 26.10.2006 20:26:40

Duff hat geschrieben:

Code: Alles auswählen

Using -L/usr/lib to find /usr/lib/libX11.so.6.2.0
Wie kann ich den Fehler beheben?
du kannst solche fälle damit lösen:

http://www.debian.org/distrib/packages

/EDIT:
achja, das geht natürlich auch:

Code: Alles auswählen

apt-file search libX11.so.6.2.0
herrchen

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 26.10.2006 20:35:36

Ja Danke für die Antwort, aber genau das ist ja mein Problem.

Ich kann dieses Package weder über deinen Link noch über apt-cache search libX11.so.6.2.0 finden.
Oh, yeah!

Benutzeravatar
herrchen
Beiträge: 3257
Registriert: 15.08.2005 20:45:28
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von herrchen » 26.10.2006 20:37:56

Duff hat geschrieben:apt-cache search libX11.so.6.2.0
bitte genauer lesen.

herrchen

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 26.10.2006 20:46:59

Ja sorry, ich habe einmal ein

Code: Alles auswählen

apt-file search libX11.so.6.2.0
und auch ein

Code: Alles auswählen

apt-cache search libX11.so.6.2.0
durchgeführt.

Keines der beiden Befehle liefert mir ein Ergebnis zurück. Das einzige, was ich finden konnte ist das Package

Code: Alles auswählen

libx11-6 - X11 client-side library
Dessen Installation brachte mir jedoch auch nichts. Auf http://www.debian.org/distrib/packages konnte ich etch auch nichts finden.

Ich bekomme immer das hier beim Versuch das CPAN-Modul zu installieren:

Code: Alles auswählen

...k-804.027/wal
Tk-804.027/xlib_demo

  CPAN.pm: Going to build N/NI/NI-S/Tk-804.027.tar.gz

/usr/bin/perl is installed in /usr/lib/perl/5.8 okay
PPM for perl5.008008
Test Compiling config/signedchar.c
Test Compiling config/Ksprintf.c
Test Compiling config/tod.c
Test Compiling -DTIMEOFDAY_TZ config/tod.c
TZ gettimeofday()
Using -L/usr/lib to find /usr/lib/libX11.so.6.2.0
Cannot find X include files via /usr/include
Cannot find X include files anywhere at ./myConfig line 332.
Compilation failed in require at Makefile.PL line 36.
BEGIN failed--compilation aborted at Makefile.PL line 38.
Warning: No success on command[/usr/bin/perl Makefile.PL INSTALLDIRS=site]
Running make test
  Make had some problems, won't test
Running make install
  Make had some problems, won't install

Oh, yeah!

Benutzeravatar
herrchen
Beiträge: 3257
Registriert: 15.08.2005 20:45:28
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Berlin

Beitrag von herrchen » 26.10.2006 20:56:28

Duff hat geschrieben:Auf http://www.debian.org/distrib/packages konnte ich etch auch nichts finden.
ich schon:

http://packages.debian.org/cgi-bin/sear ... &arch=i386

herrchen

ps. hast du mal ein "apt-file update" gemacht?

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 26.10.2006 21:11:09

Ok, es lag wohl daran, dass ich ein

Code: Alles auswählen

apt-file update
vergessen hatte. Sorry.

Wenn ich nun ein apt-file search ausführe, bekomme ich folgende beiden Packages angezeigt

Code: Alles auswählen

daniel-laptop:/opt/lampp/etc# apt-file search libX11.so.6.2.0 
libx11-6: usr/lib/libX11.so.6.2.0
libx11-6-dbg: usr/lib/debug/usr/lib/libX11.so.6.2.0
Ich muss doch nun beide Package (die vor dem Doppelpunkt) installieren?
Ein apt-file hat mir doch jetzt die beiden Packages libx11-6 und libx11-6-dbg zurückgeliefert, in denen sich libX11.so.6.2.0 befindet, oder?


Danke.
Oh, yeah!

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 29.10.2006 11:00:51

So, installiert sind die Sachen jetzt.

Funktioniert aber leider noch immer nicht.
Bekomme folgende Fehlermeldungen, wenn ich ein perl Makefile.PL ausführe:

Code: Alles auswählen

daniel@daniel-laptop:~/downloads/perl_module/Tk-804.027$ perl Makefile.PL 
/usr/bin/perl is installed in /usr/lib/perl/5.8 okay
PPM for perl5.008008
Test Compiling config/signedchar.c
Test Compiling config/Ksprintf.c
Test Compiling config/tod.c
Test Compiling -DTIMEOFDAY_TZ config/tod.c
TZ gettimeofday()
Using -L/usr/lib to find /usr/lib/libX11.so.6.2.0
Cannot find X include files via /usr/include
Cannot find X include files anywhere at ./myConfig line 332.
Compilation failed in require at Makefile.PL line 36.
BEGIN failed--compilation aborted at Makefile.PL line 38.
Das sind die besagten Zeilen 36-38 aus dem Makefile.PL-Skript:

Code: Alles auswählen

  require "./myConfig";
  use lib ($Tk::MMutil::dir=getcwd);
 }
Und die Zeile 332 aus myConfig:

Code: Alles auswählen

  unless (defined $xinc)
    {
      warn "Cannot find X include files via $base/include\n";
      $xinc = &IX11(map("$_/include",@xdirs),
                    '/usr/openwin/include',
                    chooseX11(</usr/X11*/include>),
                    chooseX11(</usr/include/X11*>),
                    </usr/Xfree*/include>,
                    '/usr/X386/include',
                    $Config{'usrinc'});
    }

  die "Cannot find X include files anywhere" unless (defined $xinc);
Das einzige, was ich in /usr finden kann, was mit X11 zu tun hat, ist das hier:

Code: Alles auswählen

daniel@daniel-laptop:/usr$ find . -name X11*
./X11R6


Jemand nee Idee, wich das Modul Tk nun installiert bekomme?
Oh, yeah!

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 29.10.2006 11:04:13

Wobei ich im Verzeichnis /usr/include auch ein Verzeichnis X11 habe, welches folgende Unterverzeichnisse hat:

Code: Alles auswählen

daniel@daniel-laptop:/usr/include/X11$ ll
insgesamt 8
drwxr-xr-x 2 root root 4096 2006-09-23 12:31 bitmaps
drwxr-xr-x 2 root root 4096 2006-10-09 19:48 extensions
Was wird denn aus dem X11-Verzeichnis genau benötigt?
Oh, yeah!

DHGE
Beiträge: 59
Registriert: 17.10.2005 23:27:48
Lizenz eigener Beiträge: Artistic Lizenz
Wohnort: Bargteheide

Beitrag von DHGE » 29.10.2006 13:45:01

Besteht denn überhaupt die Notwendigkeit, das tk-Modul selbst zu bauen?

Es ist in den apt-repositories enthalten.

Das letzte Mal, dass ich dieses Modul unfallfrei bauen konnte (hab es unter Linux noch nie versucht) ist viele Jahre her ...

Die make-files scheinen nicht sehr generisch zu sein. Auf bug-reports erfolgte auch keine Reaktion.

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 29.10.2006 16:14:45

Duff hat geschrieben: Wenn ich nun ein apt-file search ausführe, bekomme ich folgende beiden Packages angezeigt

Code: Alles auswählen

daniel-laptop:/opt/lampp/etc# apt-file search libX11.so.6.2.0 
libx11-6: usr/lib/libX11.so.6.2.0
libx11-6-dbg: usr/lib/debug/usr/lib/libX11.so.6.2.0
Ich muss doch nun beide Package (die vor dem Doppelpunkt) installieren?
libx11-5-dbg hättest du nicht benötigt, wenn du zu einem Paket auch die Include Files brauchst, solltest du auch das zugehörige "-dev" Paket installieren.
Im "libx11-dev" Paket sind also die gesuchten "X include files" enthalten

Gruß
gms

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 29.10.2006 20:13:13

Ja danke.

Aber woher weiß ich, dass ich noch das Package libx11-dev installieren musste?

Nachdem ich das Package installiert hatte, konnte ich das CPAN-Modul mit

Code: Alles auswählen

perl Makefile.PL
und einem , ein testen

Code: Alles auswählen

make test
und schließlich mit

Code: Alles auswählen

make install
installieren.

Die Module befinden sich jetzt hier:

Code: Alles auswählen

daniel-laptop:/usr/local/lib/perl/5.8.8# ll
insgesamt 84
drwxr-sr-x 12 root staff  4096 2006-10-29 21:08 auto
-r--r--r--  1 root staff 18517 2006-10-11 19:11 Cwd.pm
drwxrwsr-x  2 root staff  4096 2006-10-26 20:28 Digest
drwxrwsr-x  3 root staff  4096 2006-10-26 20:28 File
-r--r--r--  1 root staff  1395 2003-07-19 10:39 fix_4_os2.pl
-rw-rw-r--  1 root staff  2990 2006-10-29 21:08 perllocal.pod
drwxrwsr-x  2 root staff  4096 2006-10-26 20:29 Term
drwxrwsr-x  2 root staff  4096 2006-10-29 21:08 Tie
drwxrwsr-x  8 root staff  8192 2006-10-29 21:08 Tk
-r--r--r--  1 root staff 17720 2004-04-11 20:39 Tk.pm
-r--r--r--  1 root staff  6219 2003-07-19 10:39 Tk.pod
Kann man eigentlich auch solche fertigen .pm-Dateien einfach in dieses Verzeichnis kopieren?
Oh, yeah!

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Beitrag von gms » 29.10.2006 20:49:48

Duff hat geschrieben:Aber woher weiß ich, dass ich noch das Package libx11-dev installieren musste?
Weil Headerdateien ( include files ) sind bei Debian standardmäßig in einem eigenen "-dev" Paket. (Spezialfälle wie linux-headers ausgenommen)
Duff hat geschrieben: Kann man eigentlich auch solche fertigen .pm-Dateien einfach in dieses Verzeichnis kopieren?
pm-Dateien sind Text-Dateien mit Perlcode, die kannst du einfach kopieren.
Das Perl Tk Module enthält aber auch einige Shared Libraries, die nur bedingt kopierbar sind, weil sie Abhängigkeiten zu anderne Libraries ( Version und RTL Pfad) beinhalten

Gruß
gms

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 29.10.2006 20:56:23

Danke für die schnelle Antwort.

Also muss man die CPAN-Module doch immer installieren.

Entweder mit

Code: Alles auswählen

perl Makefile.PL

make

make test

make install
oder mit

Code: Alles auswählen

perl -MCPAN -e "install 'Irgendein::Modul''
Oh, yeah!

ToPeG
Beiträge: 437
Registriert: 14.04.2004 00:42:06

Beitrag von ToPeG » 29.10.2006 21:05:17

Wenn es keine all zu ausgefallenen cpan-Pakete sind, dann kann man sie auch mit "dh-make-perl" in ein debanpaket konvertieren und installieren, dann sind die Pakete sauber in dpkg eingebunden.

Der Aufruf ginge dann so:

Code: Alles auswählen

dh-make-perl --build --cpan Foo::Bar
oder mit sofortiger Installation

Code: Alles auswählen

dh-make-perl --build --install --cpan Foo::Bar

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 29.10.2006 21:24:01

Ok, danke.

Habe mir das Package mal heruntergeladen.

Code: Alles auswählen

daniel-laptop:~# dh-make-perl --help
cut: Diese Option ben�igt ein Argument -- �d�
�cut --help� gibt weitere Informationen.

Usage:
/usr/bin/dh-make-perl [ --build ] [ --install ] [ SOURCE_DIR | --cpan MODULE ]
Other options: [ --desc DESCRIPTION ] [ --arch all|any ] [ --version VERSION ]
               [ --cpan-mirror MIRROR ] [ --exclude|-i [REGEX] ] [ --notest ]
               [ --nometa ] [ --requiredeps ]

Was ich aber noch nicht so ganz verstanden habe ist, wo die CPAN-Module gesucht werden, wenn man nur --cpan MODULE angibt?
In den manpages gibt es zwar die Option

Code: Alles auswählen

       --cpan-mirror MIRROR
           Specifies a CPAN site to use as mirror.
aber welcher mirror wird standardmäßig genommen?
Oh, yeah!

ToPeG
Beiträge: 437
Registriert: 14.04.2004 00:42:06

Beitrag von ToPeG » 30.10.2006 05:31:39

Es wird das Verzeichnis ".cpan" im Heimverzichnis verwendet. Wenn du cpan eingerichtest hast, dann sollte es keine Probleme geben. Mit "--cpan-mirror" suchst du dir eine der Quellen aus ".cpan/source" heraus.

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Beitrag von Duff » 30.10.2006 08:45:45

Ok. Alles klar.

Danke!
Oh, yeah!

Antworten