내 서버에 3가지 버전의 BerkeleyDB가 설치되어 있습니다.
다음 2가지 버전
Package db4-4.3.29-10.el5_5.2.x86_64
Package db4-4.3.29-10.el5_5.2.i386
Centos 5 Distro에 포함됨
여기에 있는 소스에서 설치된 세 번째 버전
/usr/local/BerkeleyDB.4.5
(그리고 모든 Berkeley 유틸리티는 /usr/local/BerkeleyDB.4.5/bin에 설치되어 있습니다.)
Berkeley를 사용하는 프로그램(ASSP 2.4.4 사용 중)을 실행하면 BerkeleyDB 4.3.29를 보고 사용할 수 있습니다. ASSP에는 Berkeley 버전 >= 4.5가 필요하기 때문에 이는 좋지 않습니다.
4.3.29 대신 /usr/local/BerkeleyDB.4.5에 BerkeleyDB.4.5의 기본 설치를 설정하는 방법은 무엇입니까?
답변1
일반적으로 패키지(예: 미리 컴파일된 바이너리)에서 무언가를 실행하려는 경우 PATH
및/또는 을 설정하거나 바이너리 자체를 조정하는 데 LD_LIBRARY_PATH
사용할 수 있습니다. chrpath
주의한다면 여러 버전의 BerkeleyDB를 설치하지 못할 이유가 없습니다. ( configure
스크립트는 이를 쉽게 수행하도록 설정되었으며 --program-suffix
PATH에 버전이 지정된 바이너리를 더 쉽게 유지할 수 있도록 지원(및 변환)합니다.)
그러나 ASSP는 Perl로 구현되므로 현재 컴파일된 Perl BerkeleyDB.so
라이브러리를 사용하여 빌드된 Berkeley 라이브러리에 대해 연결됩니다. (사용되는 많은 패키지와 달리 DB::File
assp는 BerkeleyDB
직접 사용됩니다.)
너는 볼 수있어Perl은 어떤 라이브러리를 사용합니까?다음과 같은 것 :
perl -e 'print join "\n",@INC;' | xargs -i find {} -name BerkeleyDB.so
ldd
그런 다음 찾은 모듈을 실행하십시오 .
일반적으로 CentOS를 사용할 때 (원하든 원하지 않든) CentOS 패키지 중심 세계로 들어가므로 "올바른" 해결책은 CentOS 버전과 일치하는 ASSP 패키지 또는 Perl도 포함되어 있는 Berkeley RPM을 찾는 것입니다 BerkeleyDB.so
. 또는 CentOS를 업그레이드하세요.
CentOS에 서비스 배포를 피합니다왜냐하면패키지 종속성 문제. 나는 소스에서 빌드했지만 그것은 "구식"입니다. (RPM을 통해 소프트웨어를 설치하지 않으면 유해한 영향을 받을 수 있는 가벼운 독자는 위 내용을 읽지 마십시오.)
이 문제를 수동으로 해결하려면 ASSP만을 위한 Perl의 병렬 버전을 설치할 수 있습니다(잠재적인 유지 관리 문제, 지난번 확인했을 때 CentOS 5.x에 ASSP를 실행하지 않는 perl-5.8이 포함되어 있었으므로 이미 설치했을 수도 있음). ) 또는 아래 지침에 따라 BerkeleyDB 모듈만 업그레이드할 수 있습니다.읽어보기 파일config.in
, 컴파일하기 전에 올바른 경로를 확인/설정하십시오. 이 모듈은 BerkeleyDB.4.5 소스 코드 아카이브에 포함되어 있으며 기본값은 다음과 같습니다.
INCLUDE=/usr/local/BerkeleyDB/include
LIB=/usr/local/BerkeleyDB/lib
따라서 심볼릭 링크를 추가하고 /usr/local/BerkeleyDB
→ /usr/local/BerkeleyDB.4.5
수동으로 빌드하세요(또는 최신 상태이고 거의 모든 기본 bdb 버전을 지원하는 CPAN을 사용하여 설치/업그레이드).
BerkeleyDB를 업그레이드하는 경우 다른 Perl 스크립트나 특정 버전에 의존하는 경우 일부 문제가 발생할 수 있습니다. 내가 아는 한, 이것은 일반적으로 설치되는 모듈이 아니며 일반 Perl 또는 Berkeley db4 CentOS 패키지에 포함되어 있지 않습니다( perl-BerkelyDB
RHEL에 있으며 CentOS 5.x에서는 본 적이 없습니다).
cd /usr/local/src/db-4.5.x # or where ever you build
cd perl/BerkeleyDB
vi config.in # check INCLUDE and LIB [optional]
perl Makefile.pl # select the correct perl
make
make test && make install
그런 다음 위의 지침을 반복하여 find
모든 ldd
것이 예상한 대로인지 확인합니다. (펄이 여러 개인 경우 일반적으로 PERL
시작하기 전에 환경 변수를 내보내는 것이 가장 좋지만 여기서는 필요하지 않다고 생각합니다.)