有時用 cpan安裝失敗,或許可以採用改用tarball安裝,perl的模組tarball可以去metacpan找
1. 下載及解壓tar檔
以實際例子舉例,例如執行某 perl檔時發生以下錯誤:
Can't locate Text/Iconv.pm in @INC (you may need to install the Text::Iconv module) (@INC contains: …)
可以發現Text/Iconv模組不存在,因此到 metacpan的網站,貼上Text/Iconv並搜尋。
清單可能會找到很多的目標,選擇 Text::Iconv 這種多半就是套件本身。
點進去後,左側 Download 下方複製連結網址
並到系統中下載即可
解壓
2. 安裝
進到解壓後的目錄,因為安裝會動到系統目錄,用root權限執行
# cd Text-Iconv-1.7
# perl Makefile.PL
上面的指令如果沒安裝cpan模組的話會出錯,請參看下面錯誤排除
# make
# make install
Manifying 1 pod document
Files found in blib/arch: installing files in blib/lib into architecture dependent library tree
Installing /usr/local/lib64/perl5/5.32/auto/Text/Iconv/Iconv.so
Installing /usr/local/lib64/perl5/5.32/Text/Iconv.pm
Installing /usr/local/lib64/perl5/5.32/auto/Text/Iconv/autosplit.ix
Installing /usr/local/share/man/man3/Text::Iconv.3pm
Appending installation info to /usr/lib64/perl5/perllocal.pod
錯誤排除
1. 下指令 perl Makefile.PL 出現錯誤 Can't locate ExtUtils/MakeMaker.pm in @INC (you may need to install the ExtUtils::MakeMaker module)
解決[1]:
# yum install perl-CPAN
2. make 出現 -bash: make: command not found
解決:
# yum install gcc
3. Can't locate IO/Socket/INET6.pm in @INC (you may need to install the IO::Socket::INET6 module)
解決:
[Centos]
# yum install perl-IO-Socket-INET6 perl-Socket6
[Ubuntu]
# apt-get install -y libio-socket-inet6-perl
4. Can't locate Net/DNS.pm in @INC (you may need to install the Net::DNS module)
解決:
[Centos]
# dnf install perl-Net-DNS
[Ubuntu]
# apt-get install -y libnet-dns-perl
5. Can't locate Text/Iconv.pm in @INC (you may need to install the Text::Iconv module)
[Centos]
上方tarball安裝
[Ubuntu]
# apt-get install libtext-iconv-perl
參考資料
[2] https://zoomadmin.com/HowToInstall/UbuntuPackage/libnet-dns-perl