簡體   English   中英

嘗試在 macOS、ventura、13.2(Intel 機器)上安裝 perl Image::Magick 模塊時出錯

[英]Errors trying to install perl Image::Magick module on macOS, ventura, 13.2 (Intel machine)

我安裝了 imagemagick 和 brew 以及 opencl-headers。 嘗試安裝在 Perl 5.36 上運行的 perl Image::Magick 模塊,我在運行cpanm Image::Magick時遇到以下錯誤:

Writing MYMETA.yml and MYMETA.json
OK
Checking dependencies from MYMETA.json ...
Checking if you have ExtUtils::MakeMaker 0 ... Yes (7.64)
Checking if you have parent 0 ... Yes (0.238)
Building and testing Image-Magick-v7.0.11 ... cp Magick.pm blib/lib/Image/Magick.pm
AutoSplitting blib/lib/Image/Magick.pm (blib/lib/auto/Image/Magick)
Running Mkbootstrap for Magick ()
chmod 644 "Magick.bs"
"/Users/steve/perl5/perlbrew/perls/perl-5.36.0/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- Magick.bs blib/arch/auto/Image/Magick/Magick.bs 644
"/Users/steve/perl5/perlbrew/perls/perl-5.36.0/bin/perl" "/Users/steve/perl5/perlbrew/perls/perl-5.36.0/lib/5.36.0/ExtUtils/xsubpp"  -typemap '/Users/steve/perl5/perlbrew/perls/perl-5.36.0/lib/5.36.0/ExtUtils/typemap' -typemap '/Users/steve/.cpanm/work/1675177488.60361/Image-Magick-7.0.11/typemap'  Magick.xs > Magick.xsc
mv Magick.xsc Magick.c
cc -c  -I/usr/local/include/ImageMagick-7 -DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=16 -I/usr/include/libxml2 -I"/usr/include/ImageMagick-7" -fno-common -DPERL_DARWIN -mmacosx-version-min=12.5 -fno-strict-aliasing -pipe -fstack-protector-strong -I/usr/local/include -DPERL_USE_SAFE_PUTENV -I/usr/include/freetype2 -g -O2 -Wall -pthread -DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=16 -Wno-error=implicit-function-declaration -O3   -DVERSION=\"7.0.11\" -DXS_VERSION=\"7.0.11\"  "-I/Users/steve/perl5/perlbrew/perls/perl-5.36.0/lib/5.36.0/darwin-2level/CORE"  -D_LARGE_FILES=1 -DHAVE_CONFIG_H Magick.c
rm -f blib/arch/auto/Image/Magick/Magick.bundle
LD_RUN_PATH="/usr/local/lib:/usr/lib" cc -Wl,-rpath,"/usr/local/lib:/usr/lib" -L/usr/local/lib -lMagickCore-7.Q16HDRI  -mmacosx-version-min=12.5 -bundle -undefined dynamic_lookup -L/usr/local/lib -fstack-protector-strong   Magick.o  -o blib/arch/auto/Image/Magick/Magick.bundle  \
           -L/usr/local/lib -lMagickCore-7.Q16HDRI -lm -L/Users/steve/perl5/perlbrew/perls/perl-5.36.0/lib/5.36.0/darwin-2level/CORE   \

ld: warning: -undefined dynamic_lookup may not work with chained fixups
ld: warning: dylib (/usr/local/lib/libMagickCore-7.Q16HDRI.dylib) was built for newer macOS version (13.0) than being linked (12.5)
chmod 755 blib/arch/auto/Image/Magick/Magick.bundle
Manifying 1 pod document
"/Users/steve/perl5/perlbrew/perls/perl-5.36.0/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- Magick.bs blib/arch/auto/Image/Magick/Magick.bs 644
PERL_DL_NONLAZY=1 "/Users/steve/perl5/perlbrew/perls/perl-5.36.0/bin/perl" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/blob.t .......... ok
t/composite.t ..... ok
t/filter.t ........ ok
t/getattribute.t .. ok
t/montage.t ....... ok
t/ping.t .......... ok
t/read.t .......... ok
t/setattribute.t .. ok
t/write.t ......... Failed 1/32 subtests

Test Summary Report
-------------------
t/write.t       (Wstat: 0 Tests: 32 Failed: 1)
  Failed test:  24
Files=9, Tests=273,  2 wallclock secs ( 0.06 usr  0.02 sys +  4.10 cusr  0.56 csys =  4.74 CPU)
Result: FAIL
Failed 1/9 test programs. 1/273 subtests failed.
make: *** [test_dynamic] Error 255
FAIL

似乎也有問題

基於失敗的測試的名稱:

t/write.t......... Failed 1/32 subtests

看起來問題可能是某種許可問題。 所以我做了“cpanm --force Image::Magick”。 安裝后,我的 Perl 使用 ImageMagick 的腳本工作正常。

絲毫不希望貶低任何為我們移植和維護軟件包的好人的工作,我注意到以下幾點:

  • StackOverflow上只有 37 個問題被標記為 ,而在ImageMagick上有 9,000 多個問題 - 所以您在Perl上獲得支持/協助的機會明顯較低

  • Apple 已表示打算在下一個macOS版本中停止使用PerlPHP和其他解釋器,並且隨着每個macOS版本的發布,使用ImageMagickPHPPerl變得越來越困難。


鑒於上述情況,我個人會三思而后行,在macOS上對PerlMagick投入大量精力 - 特別是當您認為使用docker非常簡單並且如果您以這種方式使用go時,您可以在任何 macOS 或Linux機器不用擔心變幻莫測的配置。 因此,這是在docker中運行PerlMagick的一種非常簡單的方法:

docker run -it alpine                                  # 2 seconds later
apk update && apk add perl imagemagick-perlmagick      # 8 seconds later

# All ready to run PerlMagick - let's test a simple example
perl -MImage::Magick -le 'print Image::Magick->QuantumDepth'
16

當然,你可以把package這兩個apk管理命令放到一個Dockerfile里面,這樣就內置了,不用每次都運行。

您還可以動態綁定掛載任何充滿圖像的macOS目錄以處理到 docker 圖像中,以便它可以讀取/寫入它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM