Install issue with PerlMagick

PerlMagick is an object-oriented Perl interface to ImageMagick. Use this forum to discuss, make suggestions about, or report bugs concerning PerlMagick.
Post Reply
Posts: 60
Joined: 2016-08-12T13:19:13-07:00
Authentication code: 1151

Install issue with PerlMagick

Post by miket »


I'm running Ubuntu 16.04LTS in Virtualbox with Windows10 as host.

I have a functional version of ImageMagick v7.0.2-4 with Q16 and HDR which I have been using successfully for a couple of months.

I'm now trying to install PerlMagic but am running into some trouble.

The latest available version of Perl is installed v5.22.1 and a $perl -V gives:

Code: Select all

perl -V
Summary of my perl5 (revision 5 version 22 subversion 1) configuration:
    osname=linux, osvers=3.16.0, archname=x86_64-linux-gnu-thread-multi
    uname='linux localhost 3.16.0 #1 smp debian 3.16.0 x86_64 gnulinux '
    config_args='-Dusethreads -Duselargefiles -Dcc=x86_64-linux-gnu-gcc -Dcpp=x86_64-linux-gnu-cpp -Dld=x86_64-linux-gnu-gcc -Dccflags=-DDEBIAN -Wdate-time -D_FORTIFY_SOURCE=2 -g -O2 -fstack-protector-strong -Wformat -Werror=format-security -Dldflags= -Wl,-Bsymbolic-functions -Wl,-z,relro -Dlddlflags=-shared -Wl,-Bsymbolic-functions -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=x86_64-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.22 -Darchlib=/usr/lib/x86_64-linux-gnu/perl/5.22 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/x86_64-linux-gnu/perl5/5.22 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.22.1 -Dsitearch=/usr/local/lib/x86_64-linux-gnu/perl/5.22.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -dEs -Duseshrplib'
    hint=recommended, useposix=true, d_sigaction=define
    useithreads=define, usemultiplicity=define
    use64bitint=define, use64bitall=define, uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
    cc='x86_64-linux-gnu-gcc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
    optimize='-O2 -g',
    cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include'
    ccversion='', gccversion='5.3.1 20160311', gccosandvers=''
    intsize=4, longsize=8, ptrsize=8, doublesize=8, byteorder=12345678, doublekind=3
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16, longdblkind=3
    ivtype='long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
    alignbytes=8, prototype=define
  Linker and Libraries:
    ld='x86_64-linux-gnu-gcc', ldflags =' -fstack-protector-strong -L/usr/local/lib'
    libpth=/usr/local/lib /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed /usr/include/x86_64-linux-gnu /usr/lib /lib/x86_64-linux-gnu /lib/../lib /usr/lib/x86_64-linux-gnu /usr/lib/../lib /lib
    libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt
    perllibs=-ldl -lm -lpthread -lc -lcrypt, so=so, useshrplib=true,
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
    cccdlflags='-fPIC', lddlflags='-shared -L/usr/local/lib -fstack-protector-strong'

Characteristics of this binary (from libperl): 
                        USE_64_BIT_ALL USE_64_BIT_INT USE_ITHREADS
  Locally applied patches:
	DEBPKG:debian/cpan_definstalldirs - Provide a sensible INSTALLDIRS default for modules installed from CPAN.
	DEBPKG:debian/db_file_ver - Remove overly restrictive DB_File version check.
	DEBPKG:debian/doc_info - Replace generic man(1) instructions with Debian-specific information.
	DEBPKG:debian/enc2xs_inc - Tweak enc2xs to follow symlinks and ignore missing @INC directories.
	DEBPKG:debian/errno_ver - Remove Errno version check due to upgrade problems with long-running processes.
***	DEBPKG:debian/libperl_embed_doc - Note that libperl-dev package is required for embedded linking
	DEBPKG:fixes/respect_umask - Respect umask during installation
	DEBPKG:debian/writable_site_dirs - Set umask approproately for site install directories
	DEBPKG:debian/extutils_set_libperl_path - EU:MM: set location of libperl.a under /usr/lib
	DEBPKG:debian/no_packlist_perllocal - Don't install .packlist or perllocal.pod for perl or vendor
	DEBPKG:debian/fakeroot - Postpone LD_LIBRARY_PATH evaluation to the binary targets.
	DEBPKG:debian/instmodsh_doc - Debian policy doesn't install .packlist files for core or vendor.
	DEBPKG:debian/ld_run_path - Remove standard libs from LD_RUN_PATH as per Debian policy.
	DEBPKG:debian/libnet_config_path - Set location of libnet.cfg to /etc/perl/Net as /usr may not be writable.
	DEBPKG:debian/mod_paths - Tweak @INC ordering for Debian
	DEBPKG:debian/prune_libs - Prune the list of libraries wanted to what we actually need.
	DEBPKG:fixes/net_smtp_docs - [ #36038] Document the Net::SMTP 'Port' option
	DEBPKG:debian/perlivp - Make perlivp skip include directories in /usr/local
	DEBPKG:debian/deprecate-with-apt - Point users to Debian packages of deprecated core modules
	DEBPKG:debian/squelch-locale-warnings - Squelch locale warnings in Debian package maintainer scripts
	DEBPKG:debian/skip-upstream-git-tests - Skip tests specific to the upstream Git repository
	DEBPKG:debian/patchlevel - List packaged patches for 5.22.1-9 in patchlevel.h
	DEBPKG:debian/skip-kfreebsd-crash - [perl #96272] Skip a crashing test case in t/op/threads.t on GNU/kFreeBSD
	DEBPKG:fixes/document_makemaker_ccflags - [ #68613] Document that CCFLAGS should include $Config{ccflags}
	DEBPKG:debian/find_html2text - Configure CPAN::Distribution with correct name of html2text
	DEBPKG:debian/perl5db-x-terminal-emulator.patch - Invoke x-terminal-emulator rather than xterm in
	DEBPKG:debian/cpan-missing-site-dirs - Fix CPAN::FirstTime defaults with nonexisting site dirs if a parent is writable
	DEBPKG:fixes/memoize_storable_nstore - [ #77790] Memoize::Storable: respect 'nstore' option not respected
	DEBPKG:debian/regen-skip - Skip a regeneration check in unrelated git repositories
	DEBPKG:debian/makemaker-pasthru - Pass LD settings through to subdirectories
	DEBPKG:fixes/pod_man_reproducible_date - Support POD_MAN_DATE in Pod::Man for the left-hand footer
	DEBPKG:debian/locale-robustness - [perl #124310] Make t/run/locale.t survive missing locales masked by LC_ALL
	DEBPKG:fixes/podman-utc - Make the embedded date from Pod::Man reproducible
	DEBPKG:fixes/podman-utc-docs - Documentation and test suite updates for UTC fix
	DEBPKG:fixes/podman-empty-date - Support an empty POD_MAN_DATE environment variable
	DEBPKG:fixes/podman-pipe - Better errors for man pages from standard input
	DEBPKG:debian/pod2man-customized - Update porting/customized.dat for pod2man modifications
	DEBPKG:debian/makemaker-manext - Make EU::MakeMaker honour MANnEXT settings in generated manpage headers
	DEBPKG:debian/makemaker_customized - Update t/porting/customized.dat for files patched in Debian
	DEBPKG:debian/do-not-record-build-date - [6baa8db] [perl #125830] Allow overriding the compile time in "perl -V" output
	DEBPKG:fixes/podman-source-date-epoch - Make Pod::Man honor the SOURCE_DATE_EPOCH environment variable
	DEBPKG:fixes/podman-source-date-epoch-cleanups - Coding style and documentation for SOURCE_EPOCH_DATE
	DEBPKG:fixes/podman-source-date-epoch-testfix - Guard for building with SOURCE_DATE_EPOCH or POD_MAN_DATE set
	DEBPKG:debian/devel-ppport-reproducibility - Sort the list of XS code files when generating RealPPPort.xs
	DEBPKG:fixes/encode-unicode-bom - [ #107043] Address
	DEBPKG:debian/encode-unicode-bom-doc - Document Debian backport of Encode::Unicode fix
	DEBPKG:debian/kfreebsd-softupdates - Work around Debian Bug#796798
	DEBPKG:fixes/autodie-scope - Fix a scoping issue with "no autodie" and the "system" sub
	DEBPKG:debian/debugperl-compat-fix - [perl #127212] Disable PERL_TRACK_MEMPOOL for debugging builds
	DEBPKG:fixes/CVE-2015-8607_file_spec_taint_fix - [perl #126862] ensure File::Spec::canonpath() preserves taint
	DEBPKG:fixes/mkstemp-umask - [perl #127322] [e57270b] Fix umask for mkstemp(3) calls
	DEBPKG:fixes/crosscompile-no-targethost - [perl #127234] Fix the Configure escape with usecrosscompile but no targethost
	DEBPKG:fixes/podlators-no-encode - [ #111156] Degrade gracefully if utf8 is requested but Encode is not available
	DEBPKG:debian/cross-time-hires - [ #111391] Add an environment variable to skip running configuration probes
	DEBPKG:fixes/encode-unicode-pod - Fix POD error
	DEBPKG:fixes/memoize-pod - [ #89441] Fix POD errors in Memoize
	DEBPKG:fixes/ok-pod - Added encoding for pod.
	DEBPKG:fixes/CVE-2016-2381_duplicate_env - remove duplicate environment variables from environ
  Built under linux
  Compiled at Mar 13 2016 11:54:18
Installing IM using:

Code: Select all

./configure --with-modules=yes --enable-shared=yes --with-perl
sudo make install

sudo ldconfig /usr/local/lib

make check
The appears to run successfully (i.e. gives a working version of IM) but perl cannot see IM. Running in (very) basic perl script gives:

Code: Select all

Can't locate Image/ in @INC (you may need to install the Image::Magick module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.22.1 /usr/local/share/perl/5.22.1 /usr/lib/x86_64-linux-gnu/perl5/5.22 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.22 /usr/share/perl/5.22 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base .) at /home/mike/bin/ line 5.
BEGIN failed--compilation aborted at /home/mike/bin/ line 5.
On closer inspection of the IM install there is a failure listed towards the end of the install. The relevant excerpt is:

Code: Select all

Running Mkbootstrap for Image::Magick::Q16HDRI ()
chmod 644 ""
"/usr/bin/perl" "/usr/share/perl/5.22.1/ExtUtils/xsubpp"  -typemap "/usr/share/perl/5.22/ExtUtils/typemap" -typemap "typemap"  Q16HDRI.xs > Q16HDRI.xsc && mv Q16HDRI.xsc Q16HDRI.c
gcc -c  -I../../ -I../..   -DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=16  -I"/usr/include/ImageMagick" -D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fwrapv -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -I/usr/include/libxml2 -I/usr/include/libpng12  -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 -I/usr/include/OpenEXR  -I/usr/include/lqr-1 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include  -I/usr/include/graphviz -I/usr/include/freetype2 -I/usr/include/freetype2 -pthread    -fopenmp -g -O2 -Wall -mtune=nehalem -fexceptions -pthread -DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=16 -O2 -g   -DVERSION=\"7.02\" -DXS_VERSION=\"7.02\" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.22/CORE"  -D_LARGE_FILES=1 -DHAVE_CONFIG_H Q16HDRI.c
rm -f ../blib/arch/auto/Image/Magick/Q16HDRI/
LD_RUN_PATH="/usr/local/src/ImageMagick-7.0.2-4/PerlMagick/quantum/../../MagickCore/.libs" x86_64-linux-gnu-gcc  -L../../MagickCore/.libs -lMagickCore-7.Q16HDRI -shared -L/usr/local/lib -fstack-protector-strong   Q16HDRI.o  -o ../blib/arch/auto/Image/Magick/Q16HDRI/ 	\
   -L/usr/local/src/ImageMagick-7.0.2-4/PerlMagick/quantum/../../MagickCore/.libs -lMagickCore-7.Q16HDRI -lperl -lm  	\
/usr/bin/ld: cannot find -lperl
collect2: error: ld returned 1 exit status
Makefile:476: recipe for target '../blib/arch/auto/Image/Magick/Q16HDRI/' failed
make[4]: *** [../blib/arch/auto/Image/Magick/Q16HDRI/] Error 1
make[4]: Leaving directory '/usr/local/src/ImageMagick-7.0.2-4/PerlMagick/quantum'
Makefile:545: recipe for target 'subdirs' failed
make[3]: *** [subdirs] Error 2
make[3]: Leaving directory '/usr/local/src/ImageMagick-7.0.2-4/PerlMagick'
Makefile:12538: recipe for target 'install-exec-perl' failed
make[2]: *** [install-exec-perl] Error 2
make[2]: Leaving directory '/usr/local/src/ImageMagick-7.0.2-4'
Makefile:12308: recipe for target 'install-am' failed
make[1]: *** [install-am] Error 2
make[1]: Leaving directory '/usr/local/src/ImageMagick-7.0.2-4'
Makefile:12302: recipe for target 'install' failed
make: *** [install] Error 2

Trying the PerlMagic install instructions on the IM website (./configure -with-perl make) falls over at the make stage:
(I'm guessing this stage is redundant given the -with-perl modifier in the original build ??)

Code: Select all

CCLD     utilities/magick
MagickCore/.libs/ undefined reference to `analyzeImage'
collect2: error: ld returned 1 exit status
Makefile:7754: recipe for target 'utilities/magick' failed
make[1]: *** [utilities/magick] Error 1
make[1]: Leaving directory '/usr/local/src/ImageMagick-7.0.2-4'
Makefile:5749: recipe for target 'all' failed
make: *** [all] Error 2

I suspect this is a simple referencing issue, but I've only been using Linux for about 2 months (and it's 30+ years since I last used Unix :) ) so I'm still struggling a bit with the labyrinthine filing structure.

Any help/pointers that anybody can give would be very much appreciated.


Last edited by miket on 2016-09-14T22:24:24-07:00, edited 2 times in total.
Posts: 60
Joined: 2016-08-12T13:19:13-07:00
Authentication code: 1151

Re: Install issue with PerlMagick

Post by miket »

I think I've found the problem :) :).

$ perl -V gave a clue (now highlighted in red in my original post -Edit-> Can't seem to add colour to code snippet. Have added "***" to beginning of the relevant line).

I had not installed libperl-dev.

Now installed and IM recompiled&installed using the first install method. (The second install appears to be superfluous).

My simple test perl program now appears to work.

It's late (early) so time for bed. Will do a more thorough test tomorrow and mark as solved once I'm sure.

It's amazing how often simply verbalising/documenting a problem leads to a self-solution !!

Post Reply