sqlite 설치 환경
linux version : Rocky Linux release 8.7 (Green Obsidian)
kernel version : 4.18.0-425.10.1.el8_7.x86_64
sqlite 를 처음 설치하고, 테스트하려고 테스트 명령어를 날려봤다.
sqlite3 test.db
sqlite3 test.db 라는 명령어를 처음 수행하였으나, error 가 발생하였다.
$ sqlite3 test
sqlite3: /lib64/libm.so.6: version `GLIBC_2.29' not found (required by sqlite3)
sqlite3: /lib64/libc.so.6: version `GLIBC_2.33' not found (required by sqlite3)
sqlite3: /lib64/libc.so.6: version `GLIBC_2.34' not found (required by sqlite3)
일단 내가 해석해보자면, sqlite3 를 사용할때 필요한 library 들 中 libm.so.6 과 libc.so.6 라이브러리에 GLIBC_2.29, 2.33, 2.34 버전을 찾을 수 없다는 에러 메시지인거 같다.
우선 ldd 명령어로 라이브러리 의존성을 확인했다.
./sqlite3: /lib64/libc.so.6: version `GLIBC_2.34' not found (required by ./sqlite3)
linux-vdso.so.1 (0x00007ffc239c9000)
libm.so.6 => /lib64/libm.so.6 (0x00007f0c4cc00000)
libz.so.1 => /lib64/libz.so.1 (0x00007f0c4c9e8000)
libc.so.6 => /lib64/libc.so.6 (0x00007f0c4c622000)
/lib64/ld-linux-x86-64.so.2 (0x00007f0c4cf82000)
libm.so.6, libc.so.6 이 버젓이 있다.
결국 라이브러리를 업데이트를 해줘야할것같다.
google에 "version glibc_2.29' not found centos" 로 검색해보았다.
결국 위의 블로그를 참고해 없는 버전에 대해 glibc 를 직접 받아주었다.
나는 2.29, 2.33, 2.34 버전이 없다고 했으니 받아보았다.
linux 서버이니까 다운받아서 filezilla는 번거로우니 wget 으로 설치해보겠다.
wget https://ftp.gnu.org/gnu/glibc/glibc-2.29.tar.gz
wget https://ftp.gnu.org/gnu/glibc/glibc-2.33.tar.gz
wget https://ftp.gnu.org/gnu/glibc/glibc-2.34.tar.gz
압축 푼 뒤 설치하였다.
$ tar zxvf glibc-2.29.tar.gz
$ cd glibc-2.29
$ mkdir build; cd build;
$ ../configure --prefix=/opt/glibc-2.29
$ make -j4
$ sudo make install
$ export LD_LIBRARY_PATH=/opt/glibc-2.29/lib
LD_LIBRARY_PATH 는 재로그인하면 셋팅이 안될꺼기 때문에
.bash_profile 에 아래와 같이 저장하였다.
export LD_LIBRARY_PATH=/opt/glibc-2.29/lib:$LD_LIBRARY_PATH
저장 후에 다시 sqlite3 testdb 를 날려보았다.
결과는?? 똑같았다.... 무엇이 문제인가 생각해보니 /lib64 에 있던 libm.so.6이 링크였고, libm.so-2.28을 물고있어서 링크를 교체해 주었다.
# libm.so.6 이 있는 위치로 이동
cd /lib64
# 기존 링크 삭제
sudo rm libm.so.6
# 삭제후 재 2-29 버전의 libm 으로 교체
sudo ln -s /opt/glibc-2.29/lib/libm-29.so libm.so.6
libc.so.6 같은경우는 조심해야한다... 링크 삭제시에 기본 명령어들을 사용할수없다.
이후 sqlite 재실행 해보았다.
$ sqlite3 testdb
sqlite3: /lib64/libc.so.6: version `GLIBC_2.33' not found (required by sqlite3)
sqlite3: /lib64/libc.so.6: version `GLIBC_2.34' not found (required by sqlite3)
드디어 2.29 버전은 사라졌다!!
2.33 과 2.34를 이제 나머지 셋팅을 해주어야하는데 libc.so.6은 다른 방법이 있는 것 같다...