さまざまなPerl依存関係を持つプログラムをインストールしようとしています。インストール中にPerl依存関係の1つ(BerkeleyDB)が失敗しました。私はPerlについて知っていることはほとんどありません。 (ユーザーとして)この問題を解決する方法はありますか?以前のバージョンで試すことができるSPANコマンドはありますか?
cpan[49]> install BerkeleyDB
Running install for module 'BerkeleyDB'
Fetching with HTTP::Tiny:
https://cpan.org/authors/id/P/PM/PMQS/BerkeleyDB-0.65.tar.gz
Checksum for /root/.local/share/.cpan/sources/authors/id/P/PM/PMQS/BerkeleyDB-0.65.tar.gz ok
Configuring P/PM/PMQS/BerkeleyDB-0.65.tar.gz with Makefile.PL
Parsing config.in...
Looks Good.
Checking if your kit is complete...
Looks good
Warning (mostly harmless): No library found for -ldb
Generating a Unix-style Makefile
Writing Makefile for BerkeleyDB
Writing MYMETA.yml and MYMETA.json
PMQS/BerkeleyDB-0.65.tar.gz
/usr/bin/perl Makefile.PL -- OK
Running make for P/PM/PMQS/BerkeleyDB-0.65.tar.gz
cp BerkeleyDB/Hash.pm blib/lib/BerkeleyDB/Hash.pm
cp scan.pl blib/lib/scan.pl
cp BerkeleyDB.pod blib/lib/BerkeleyDB.pod
cp mkconsts.pl blib/lib/mkconsts.pl
cp BerkeleyDB/Btree.pm blib/lib/BerkeleyDB/Btree.pm
cp BerkeleyDB.pm blib/lib/BerkeleyDB.pm
Running Mkbootstrap for BerkeleyDB ()
chmod 644 "BerkeleyDB.bs"
"/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- BerkeleyDB.bs blib/arch/auto/BerkeleyDB/BerkeleyDB.bs 644
"/usr/bin/perl" "/usr/share/perl5/vendor_perl/ExtUtils/xsubpp" -noprototypes -typemap '/usr/share/perl5/ExtUtils/typemap' -typemap '/root/.local/share/.cpan/build/BerkeleyDB-0.65-0/typemap' BerkeleyDB.xs > BerkeleyDB.xsc
Warning: Found a 'CODE' section which seems to be using 'RETVAL' but no 'OUTPUT' section. in BerkeleyDB.xs, line 5936
Warning: Found a 'CODE' section which seems to be using 'RETVAL' but no 'OUTPUT' section. in BerkeleyDB.xs, line 5964
mv BerkeleyDB.xsc BerkeleyDB.c
gcc -c -I/usr/local/BerkeleyDB/include -D_REENTRANT -D_GNU_SOURCE -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -march=x86-64-v2 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -fwrapv -fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -g -DVERSION=\"0.65\" -DXS_VERSION=\"0.65\" -fPIC "-I/usr/lib64/perl5/CORE" BerkeleyDB.c
BerkeleyDB.xs:76:10: fatal error: db.h: No such file or directory
76 | #include <db.h>
| ^~~~~~
compilation terminated.
make: *** [Makefile:349: BerkeleyDB.o] Error 1
PMQS/BerkeleyDB-0.65.tar.gz
/usr/bin/make -- NOT OK
Failed during this command:
PMQS/BerkeleyDB-0.65.tar.gz : make NO
答え1
出力を見ると、次の行を見ることができます。
BerkeleyDB.xs:76:10: fatal error: db.h: No such file or directory
開発ヘッダーとそれを提供するパッケージが欠落しているためビルドされます。
使用しているOSを指定していませんが、Fedora、RHEL、Alma、Rockyなどでは、次のコマンドを使用してファイルを提供しているOSを確認できます。
yum provides */db.h
dnf provides */db.h
これは返すので非常に簡単ですlibdb-devel-5.3.28-53.el9.x86_64 : C development files for the Berkeley DB library
。これは明らかに必要なものです。
Debian、Ubuntuなどは少し難しいです。
これを使用して、apt-file search db.h
その文字列を含むパッケージを返してからgrepすることができますが、必要なものを知る必要があります。より良い選択は行くことですhttps://packages.ubuntu.comファイルを含むパッケージを検索しますdb.h
。パッケージ名が表示され、libdb5.3-dev
を使用するとapt show libdb5.3-dev
次の行が返され、非常に明確になります。
Description: Berkeley v5.3 Database Libraries [development]
This is the development package which contains headers and static
libraries for the Berkeley v5.3 database library.
ファイルは次の場所にある可能性が高い/usr/include/db.h
ため、次を使用することもできます。
apt-file search /usr/include/db.h
返されます
libdb5.3-dev: /usr/include/db.h
その後、パッケージをインストールするとインストールがcpan
機能します。