steckl: Installation von Image::Magick klappt nicht

hallo,

ich will das Perl-Modul Image::Magick installieren.Ich hab noch nie ein Modul installiert und braechte deshalb dabei mal Hilfe.
so wollte ich es installieren (laut einer Beschreibung aus dem Internet):

/users/sstoeckl/tmp -> gunzip PerlMagick-6.24.tar.gz
/users/sstoeckl/tmp -> tar -xof PerlMagick-6.24.tar
/users/sstoeckl/tmp -> cd PerlMagick-6.24
/users/sstoeckl/tmp/PerlMagick-6.24 -> perl Makefile.PL
Checking if your kit is complete...
Looks good
Note (probably harmless): No library found for -lMagick
Note (probably harmless): No library found for -ltiff
Note (probably harmless): No library found for -ljpeg
Note (probably harmless): No library found for -lpng
Note (probably harmless): No library found for -ldpstk
Note (probably harmless): No library found for -ldps
Note (probably harmless): No library found for -lbz2
Note (probably harmless): No library found for -lxml2
Writing Makefile for Image::Magick
/users/sstoeckl/tmp/PerlMagick-6.24 -> make
mkdir blib
mkdir blib/lib
mkdir blib/lib/Image
mkdir blib/arch
mkdir blib/arch/auto
mkdir blib/arch/auto/Image
mkdir blib/arch/auto/Image/Magick
mkdir blib/lib/auto
mkdir blib/lib/auto/Image
mkdir blib/lib/auto/Image/Magick
mkdir blib/man3
cp Magick.pm blib/lib/Image/Magick.pm
AutoSplitting blib/lib/Image/Magick.pm (blib/lib/auto/Image/Magick)
/usr/local/bin/perl -I/usr/local/lib/perl5/5.00502/sun4-solaris -I/usr/local/lib/perl5/5.00502 /usr/local/lib/perl5/5.00502/ExtUtils/xsubpp  -typemap /usr/local/lib/perl5/5.00502/ExtUtils/typemap Magick.xs >Magick.tc && mv Magick.tc Magick.c
cc -c -I../ -I.. -I/usr/include/freetype2 -I/usr/X11R6/include -I/usr/X11R6/include/X11 -I/usr/include/libxml2 -I/usr/local/include -O3 -g -Wall -pthread -O     -DVERSION="6.2.4"  -DXS_VERSION="6.2.4" -KPIC -I/usr/local/lib/perl5/5.00502/sun4-solaris/CORE -DHAVE_CONFIG_H Magick.c
cc: Warning: option -3 passed to ld
cc: illegal option -Wall
*** Error code 1
make: Fatal error: Command failed for target `Magick.o'
/users/sstoeckl/tmp/PerlMagick-6.24 ->

Hier ist wohl irgendetwas schief gelaufen ... leider hab ich keine ahnung was :(
koennte mir vielleicht jemand erklaeren was ich falsch gemacht habe?

mfG,
steckl

  1. Hey,

    wie ich sehe, hast du Solaris und setzt den SUN-Compiler ein. Probiere es mal stattdessen mit GCC.

    Beachte noch folgende Sachen:

    1. Du benötigst noch einen ganzen Haufen Develdateien (Headerdateien, .h) für die ganzen C-Libraries, gegen die sich ImageMagick verlinken will. Diese musst du installiert haben.
    Ich habe keine Ahnung, wie der Paketmanager von Solaris funktioniert. Im schlimmsten Falle musst du aus den Quellen kompilieren. :(

    2. Dein Perlversion ist uralt, laut perlhist acht Jahre. Wahrscheinlich wirst du mit dem Modul I::M desbezüglich keine Probleme haben, weil es populär ist und solche dann häufig so geschrieben werden, dass keine modernen Techn(ik|ologi)en zum Einsatz kommen.
    Aber früher oder später wirst du wohl ein Upgrade machen müssen, weil deine Version nicht mehr für ein gewisses Modul ausreicht. Der aktuelle Versionszweig ist 5.8.

    Schrei noch mal laut, wenn du etwas an meinem Kommentar nicht verstanden hast, ich bemüh mich dann um eine längere Erläuterung.

    1. Hallo,
      schon mal danke fuer die Antwort.

      wie ich sehe, hast du Solaris und setzt den SUN-Compiler ein. Probiere es mal stattdessen mit GCC.

      wie mach ich das? steht das irgendwo in Umgebungsvariablen,oder im Makefile?
      hier gibts folgende zeilen:

      They may have been overridden via Makefile.PL or on the command line

      CC = cc
      LD = cc

      einfach diese beiden von cc auf gcc aendern? waer wohl zu leicht, oder?

      Beachte noch folgende Sachen:

      1. Du benötigst noch einen ganzen Haufen Develdateien (Headerdateien, .h) für die ganzen C-Libraries, gegen die sich ImageMagick verlinken will. Diese musst du installiert haben.
        Ich habe keine Ahnung, wie der Paketmanager von Solaris funktioniert. Im schlimmsten Falle musst du aus den Quellen kompilieren. :(

      ich hab leider genausowenig Ahnung davon wie du. muss ich dazu noch Files runterladen?

      1. Dein Perlversion ist uralt, laut perlhist acht Jahre. Wahrscheinlich wirst du mit dem Modul I::M desbezüglich keine Probleme haben, weil es populär ist und solche dann häufig so geschrieben werden, dass keine modernen Techn(ik|ologi)en zum Einsatz kommen.

      oha, das ist ja fast so alt wie ich ^^

      Aber früher oder später wirst du wohl ein Upgrade machen müssen, weil deine Version nicht mehr für ein gewisses Modul ausreicht. Der aktuelle Versionszweig ist 5.8.

      ich kann ja nichtmal ein modul installieren ...

      Schrei noch mal laut, wenn du etwas an meinem Kommentar nicht verstanden hast, ich bemüh mich dann um eine längere Erläuterung.

      mach ich gerade ;)

      1. du [...] setzt den SUN-Compiler ein. Probiere es mal stattdessen mit GCC.
        wie mach ich das? steht das irgendwo in Umgebungsvariablen,oder im Makefile?

        Normalerweise bevorzugt MakeMaker schon gcc. Ich fürchte, du hast den nicht installiert.
        Die Kommandos which gcc oder whereis gcc oder locate gcc geben Aufschluss.

        Laut gcc-Homepage gibt's Binaries unter http://www.sunfreeware.com/programlistsparc10.html#gcc33. Die Alternative, mit Hilfe von cc zu versuchen, gcc aus den Quellen zu bootstrappen, ist sehr ärgerlich. Ich hab's damals nicht geschafft und aus Frustration dann Suse-Linux installiert. http://sunsite.mff.cuni.cz/MIRRORS/ftp.suse.com/pub/suse/sparc/7.3/iso/ Da hatte ich dann ein schönes GNU-System ohne Spirenzchen und alles hat auf Anhieb funktioniert. Toll, oder?

        Paketmanager
        muss ich dazu noch Files runterladen?

        Ne, Pakete installierst du von den Betriebssystem-CDs. Die Befehle sind pkgadd, pkginfo und pkgchk. Manpages gibt's auch online. http://docs.sun.com/app/docs/prod/solaris#hic (Ich hab's nicht gebacken gekriegt.)

        ich kann ja nichtmal ein modul installieren ...

        Nur Mut, Perl kompilieren ist einfach, bloß zeitaufwändig.

        1. morgen

          du [...] setzt den SUN-Compiler ein. Probiere es mal stattdessen mit GCC.
          wie mach ich das? steht das irgendwo in Umgebungsvariablen,oder im Makefile?
          Normalerweise bevorzugt MakeMaker schon gcc. Ich fürchte, du hast den nicht installiert.
          Die Kommandos which gcc oder whereis gcc oder locate gcc geben Aufschluss.

          gcc ist schon installiert:
          which gcc/users/sstoeckl/tmp/PerlMagick-6.24 -> which gcc
          /usr/local2/bin/gcc
          /users/sstoeckl/tmp/PerlMagick-6.24 -> gcc -v
          Reading specs from /usr/local2/lib/gcc-lib/sparc-sun-solaris2.6/2.95.2/specs
          gcc version 2.95.2 19991024 (release)

          die cc im Makefile sind aus Makefile.PL gekommen. Makefile.PL hatte sie wiederum von Config.pm im Perl-Verzeichnis. ich hab mal versucht, an die stellen in Makefile.PL fest gcc zu schreiben:
             'CCFLAGS'     => "gcc -O3 -g -Wall -pthread",
          hier stand vorher eine Variable anstatt gcc.

          aber jetzt klappts wohl erst recht nicht mehr:

          gcc -c -I../ -I.. -I/usr/include/freetype2 -I/usr/X11R6/include -I/usr/X11R6/include/X11 -I/usr/include/libxml2 gcc -O3 -g -Wall -pthread -O     -DVERSION="6.2.4"  -DXS_VERSION="6.2.4" -KPIC -I/usr/local/lib/perl5/5.00502/sun4-solaris/CORE -DHAVE_CONFIG_H Magick.c
          gcc: gcc: No such file or directory
          gcc: unrecognized option -pthread' gcc: unrecognized option -KPIC'
          Magick.xs:63: magick/ImageMagick.h: No such file or directory
          Magick.xs:90: warning: PerlIO\_findFILE' redefined /usr/local/lib/perl5/5.00502/sun4-solaris/CORE/perlsdio.h:76: warning: this is the location of the previous definition \*\*\* Error code 1 make: Fatal error: Command failed for target Magick.o'

          ob das wohl ueberhaupt noch was wird?

          1. gcc ist schon installiert

            Ah prima! :)

            die cc im Makefile sind aus Makefile.PL gekommen. Makefile.PL hatte sie wiederum von Config.pm im Perl-Verzeichnis. ich hab mal versucht, an die stellen in Makefile.PL fest gcc zu schreiben:
               'CCFLAGS'     => "gcc -O3 -g -Wall -pthread",
            hier stand vorher eine Variable anstatt gcc.

            Moment, CCFLAGS handelt nur von den Flags, die dem Compiler übergeben werden, hier gehört der Compilername nicht rein. Du siehst hier selber, dass das Wort gcc erneut innerhalb des Kommandos auftaucht und der Compiler hält das für eine Datei, die er verarbeiten soll, aber die gibt's ja gar nicht im aktuellen Verzeichnis:

            gcc [...] gcc -O3 -g -Wall -pthread [...]
            gcc: gcc: No such file or directory

            Bearbeite Makefile.PL nicht. Entweder bearbeite die Datei Makefile, nachdem sie von Makefile.pl erzeugt wurde, und zwar die Zeile, die mit CC = anfängt; oder gib Makefile.pl gleich den richtigen Hinweis:

            perl Makefile.pl CC=gcc

            oder vielleicht

            perl Makefile.pl CC=/usr/local2/bin/gcc

            Du wirst sehen, dass in Makefile gleich passendes steht.

            ob das wohl ueberhaupt noch was wird?

            Der Erfolg ist greifbar nah, und du hast schon einige Sachen gelernt, die nützlich sind!

            1. morgen,

              perl Makefile.pl CC=/usr/local2/bin/gcc

              Du wirst sehen, dass in Makefile gleich passendes steht.

              stimmt ... glaub ich zumindest ;)

              aber irgendwas klappt wohl immer noch nicht richtig:

              /users/sstoeckl/tmp/PerlMagick-6.24 -> perl Makefile.PL CC=/usr/local2/bin/gcc
              Checking if your kit is complete...
              Looks good
              Note (probably harmless): No library found for -lMagick
              Note (probably harmless): No library found for -ltiff
              Note (probably harmless): No library found for -ljpeg
              Note (probably harmless): No library found for -lpng
              Note (probably harmless): No library found for -ldpstk
              Note (probably harmless): No library found for -ldps
              Note (probably harmless): No library found for -lbz2
              Note (probably harmless): No library found for -lxml2
              Writing Makefile for Image::Magick

              Kann ich diese warnings ignorieren, oder liegt hier schon das Problem?

              /users/sstoeckl/tmp/PerlMagick-6.24 -> make
              mkdir blib
              mkdir blib/lib
              mkdir blib/lib/Image
              mkdir blib/arch
              mkdir blib/arch/auto
              mkdir blib/arch/auto/Image
              mkdir blib/arch/auto/Image/Magick
              mkdir blib/lib/auto
              mkdir blib/lib/auto/Image
              mkdir blib/lib/auto/Image/Magick
              mkdir blib/man3
              cp Magick.pm blib/lib/Image/Magick.pm
              AutoSplitting blib/lib/Image/Magick.pm (blib/lib/auto/Image/Magick)
              /usr/local/bin/perl -I/usr/local/lib/perl5/5.00502/sun4-solaris -I/usr/local/lib/perl5/5.00502 /usr/local/lib/perl5/5.00502/ExtUtils/xsubpp  -typemap /usr/local/lib/perl5/5.00502/ExtUtils/typemap Magick.xs >Magick.tc && mv Magick.tc Magick.c
              /usr/local2/bin/gcc -c -I../ -I.. -I/usr/include/freetype2 -I/usr/X11R6/include -I/usr/X11R6/include/X11 -I/usr/include/libxml2 -I/usr/local/include -O3 -g -Wall -pthread -O     -DVERSION="6.2.4"  -DXS_VERSION="6.2.4" -KPIC -I/usr/local/lib/perl5/5.00502/sun4-solaris/CORE -DHAVE_CONFIG_H Magick.c
              gcc: unrecognized option -pthread' gcc: unrecognized option -KPIC'
              Magick.xs:63: magick/ImageMagick.h: No such file or directory
              Magick.xs:90: warning: PerlIO\_findFILE' redefined /usr/local/lib/perl5/5.00502/sun4-solaris/CORE/perlsdio.h:76: warning: this is the location of the previous definition \*\*\* Error code 1 make: Fatal error: Command failed for target Magick.o'

              Hier werden zwar einige Verzeichnisse angelegt, aber das reicht wohl nicht, oder?
              Der Compiler scheint die Schalter -pthread' und -KPIC' nicht zu kennen. Kann das an einer veralteten Version liegen:

              /users/sstoeckl/tmp/PerlMagick-6.24 -> gcc -v
              Reading specs from /usr/local2/lib/gcc-lib/sparc-sun-solaris2.6/2.95.2/specs
              gcc version 2.95.2 19991024 (release)

              Oder interpretiere ich die Fehlermeldung von make falsch?

              mfG,
              steckl

              1. Note (probably harmless): No library found for -lMagick
                Kann ich diese warnings ignorieren, oder liegt hier schon das Problem?

                Ich hab mittlerweile verifiziert, dass das nicht harmlos ist. Diese Nachrichten sind irreführend. Du brauchst die Headerdateien zu den genannten C-Libraries zwingend. Hieran sieht man's:

                /users/sstoeckl/tmp/PerlMagick-6.24 -> make
                Magick.xs:63: magick/ImageMagick.h: No such file or directory

                Du kannst sie entweder mit dem Paketmanager installieren, oder die diversen Quellcodearchive aus dem Web zusammensuchen und dann auspacken, kompilieren und installieren. Die erste Methode ist sauberer, weil sie sich leichter rückgängig machen lässt.

                Hinweis: Im Paketmanagement für Linux sieht das so aus:
                    ImageMagick - Viewer and Converter for Images
                    ImageMagick-devel - Include Files and Libraries Mandatory for Development.
                *-devel enthält die Header.

                gcc: unrecognized option -pthread' gcc: unrecognized option -KPIC'
                Der Compiler scheint die Schalter -pthread' und -KPIC' nicht zu kennen.

                Ich meine, dass das harmlos ist. Wenn es dich stört, schau ins Makefile, woher diese Schalter kommen, und entferne sie dort oder übergebe Makefile.PL wiederum diese Variablen ohne die Schalter. Vielleicht so (ungetestet, nicht blind übernehmen):

                perl Makefile.PL CC=gcc CCFLAGS='-O3 -g -Wall' CCCDLFLAGS=''

                Kann das an einer veralteten Version liegen:
                gcc version 2.95.2 19991024 (release)

                Ein Fossil. :) Mag dran liegen, kann ich aber nicht beantworten.

                1. hallo,

                  Note (probably harmless): No library found for -lMagick
                  Kann ich diese warnings ignorieren, oder liegt hier schon das Problem?
                  Ich hab mittlerweile verifiziert, dass das nicht harmlos ist. Diese Nachrichten sind irreführend. Du brauchst die Headerdateien zu den genannten C-Libraries zwingend. Hieran sieht man's:
                  /users/sstoeckl/tmp/PerlMagick-6.24 -> make
                  Magick.xs:63: magick/ImageMagick.h: No such file or directory

                  Du kannst sie entweder mit dem Paketmanager installieren, oder die diversen Quellcodearchive aus dem Web zusammensuchen und dann auspacken, kompilieren und installieren. Die erste Methode ist sauberer, weil sie sich leichter rückgängig machen lässt.

                  Hinweis: Im Paketmanagement für Linux sieht das so aus:
                      ImageMagick - Viewer and Converter for Images
                      ImageMagick-devel - Include Files and Libraries Mandatory for Development.
                  *-devel enthält die Header.

                  danke für deine recherchen, aber ich kanns erst in 3 wochen ausprobieren ... hab nämlich jetz urlaub :)
                  ich hoffe den thread gibts bis dahin noch.

                  bis dann,
                  steckl