Perl 스크립트 실행 중 다음과 같은 오류가 발생한 경우, 이를 해결하는 방법을 설명합니다.
OS: Kylin Linux Advanced Server release V10 (Tercel)
MySQL에 연결할 수 없습니다: install_driver(mysql) failed: Attempt to reload DBD/mysql.pm aborted.
Compilation failed in require at (eval 77) line 3.
이러한 오류는 주로 Perl 모듈 DBD::mysql과 관련된 라이브러리가 올바르게 로드되지 않아 발생합니다. 아래 단계를 통해 문제를 해결할 수 있습니다.
문제 분석
먼저, 해당 오류는 다음 요소들로 인해 발생할 가능성이 큽니다:
- Perl의
DBD::mysql모듈이 제대로 설치되지 않았거나 손상되었음. - 필요한 공유 라이브러리(예:
libmariadb.so)가 시스템에 존재하지 않음.
확인 절차
- perl-DBD-MySQL 패키지 확인 현재 설치된 MySQL 관련 패키지를 검사합니다.
[root@localhost ~]# rpm -qa | grep -i --color mysql
perl-DBD-MySQL-4.046-6.ky10.x86_64
- mysql.so 위치 확인
perl-DBD-MySQL패키지에서 제공하는 파일들을 조사합니다.
[root@localhost ~]# rpm -ql perl-DBD-MySQL
/usr/lib64/perl5/vendor_perl/auto/DBD/mysql/mysql.so
- mysql.so 의존성 확인 해당 파일이 필요로 하는 공유 라이브러리를 확인합니다.
[root@localhost ~]# ldd /usr/lib64/perl5/vendor_perl/auto/DBD/mysql/mysql.so
libmariadb.so.3 => not found
libz.so.1 => /lib64/libz.so.1
libdl.so.2 => /lib64/libdl.so.2
...
위 결과에서 libmariadb.so.3가 "not found" 상태임을 확인할 수 있습니다.
해결 방법
- libmariadb.so.3 설치 필요한 라이브러리를 설치합니다.
yum install -y mariadb-libs
- 라이브러리 경로 업데이트 라이브러리 경로를 시스템에서 인식하도록 설정합니다.
ldconfig
- 확인
다시
ldd명령어를 사용하여 의존성을 확인합니다.
[root@localhost ~]# ldd /usr/lib64/perl5/vendor_perl/auto/DBD/mysql/mysql.so
libmariadb.so.3 => /lib64/libmariadb.so.3
libz.so.1 => /lib64/libz.so.1
libdl.so.2 => /lib64/libdl.so.2
...
이제 모든 의존성이 제대로 로드되고 있음을 확인할 수 있습니다.
- 필요시 perl-DBD-MySQL 재설치 문제가 여전히 남아 있다면 해당 모듈을 재설치합니다.
yum reinstall -y perl-DBD-MySQL
추가 참고사항
- 만약 다른 버전의 MySQL 또는 MariaDB 클라이언트를 사용 중이라면, 해당 버전에 맞는 라이브러리를 설치해야 합니다.
cpan을 통한 수동 설치도 고려할 수 있지만, 일반적으로 패키지 관리자(yum)를 통해 설치하는 것이 더 안정적입니다.
위 단계를 완료하면 install_driver(mysql) 오류가 해결됩니다.