반응형

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" 로 검색해보았다.

참고 : https://www.deok.me/entry/CentOS-6x-%EC%97%90%EC%84%9C-version-GLIBC214-not-found-%EC%97%90%EB%9F%AC%EA%B0%80-%EB%B0%9C%EC%83%9D%ED%95%A0%EB%95%8C

 

CentOS 6.x 에서 version 'GLIBC_2.14' not found 에러가 발생할때

CentOS 6.x 에서 version 'GLIBC_2.14' not found 와 같이 에러가 날 경우 처리 방법 입니다. 제 경우 docker-compose 를 사용하려는데 아래와 같이 에러가 나네요. $ docker-compose -v docker-compose: /lib64/libc.so.6: version `

www.deok.me

 

결국 위의 블로그를 참고해 없는 버전에 대해 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은 다른 방법이 있는 것 같다...

 

반응형
반응형

esxi 의 경우 다른 물리적인 장비와 nfs 연결 시에 ip가 다르다. 

따라서 /etc/exports 에서 esxi 에서 vm 생성시 고정 ip 가 아닌 외부로 나가는 ip로 nfs가 연결될 때 해당 error 가 난다.

( ※ No route to host 가 날 수도 있는데 이 error 도 똑같이 조치해보자) 

따라서 /etc/exports 부분에 모든 ip에 대해서 허용하던지 아니면 esxi 의 물리적 nic 의 ip를 허용해주던지 해야한다.

# /etc/exports
# 모든 ip에 대해 허용한다.
/test *(rw,no_root_squash,async)

 

위와 같이 esxi 가 아닌 경우에 할 수 있는 조치는 다음과 같다.

1. nfs 재기동

# nfs 재기동
systemctl restart nfs-server
# nfs 상태 확인
systemctl status nfs-server

2. nfs 방화벽 설정 확인

3. nfs 버전 확인

# nfs 버전 확인
cat /proc/fs/nfsd/versions
-2 +3 +4 +4.1 +4.2
# -는 지원 안함. +는 지원함.
# 해당 버전이 client 와 server 모두 동일한 지

4. selinux 설정 확인 

# selinux 설정 해제 방법
# setenforce 0
# sestatus
반응형

+ Recent posts