node js express 프로젝트에 패키지를 추가하고 서버에서 git pull 받아서 배포를 하려고 하는데 npm install을 하니 에러가 발생
검색했더니 패키지가 참조해야하는 CXXABI_1.3.8 이 파일이 없어서 그렇다고 한다.
원인은 원래 기존에 사용했던 게 bcrypt 3.0.6인데 이번에 ftp 패키지를 추가하면서 5.1.1로 수정됐다.
그래서 더 높은 버전의 CXXABI_1.3.8이 필요하게 됐다.
일단 bcrypt 버전을 다시 낮춰서 실행을 해봐야겠다. 안된다. 결국 ftp를 사용하려면 이 문제를 해결해야한다.
CXXABI는 gcc 라이브러리에 포함되어 있다. 현재 버전을 확인하고 gcc 버전을 올려 1.3.8을 얻어야 한다.
확인해보자
sudo find / -name libstdc++.so.6 | more
이 명령어로 확인하면 저 이름이 있는 디렉토리들을 찾아준다.
내 경우에는 아래 디렉토리만 나왔다.
/usr/lib64/libstdc++.so.6
안에 어떤 CXXABI 들이 있는지 확인해보자
$ strings /usr/lib64/libstdc++.so.6|grep '^CXXABI_'
CXXABI_1.3
CXXABI_1.3.1
CXXABI_1.3.2
CXXABI_1.3.3
CXXABI_1.3.4
CXXABI_1.3.5
CXXABI_1.3.6
CXXABI_1.3.7
CXXABI_TM_1
이렇게 목록이 나오는데 1.3.8이 없다. centos7에는 gcc 4.8.5가 기본으로 들어가있다. 4.8.5는 1.3.7까지만 포함하나보다. 조금 아쉽다.
그래서 gcc 업데이트가 필요하다.
일단 챗지피티 말대로 scl을 사용하여 devtoolset-7을 설치해 활성화해봤는데 gcc 버전은 7로 올라갔지만 CXXABI_1.3.8은 어디에서도 찾을 수 없었다. 그리고 세션을 종료하면 scl 활성화가 꺼진다. 임시로 개발환경을 구성할 때 사용한다. 글로벌로 실행하여 계속 사용할 수도 있다.
어쨌든 CXXABI_1.3.8을 찾을 수 없으니 다른 방법을 시도해야한다.
패키지를 직접 설치하여 압축을 풀고 넣어주고 하는 방법이 있는데 지금 실서버에서 혼자 해보기엔 조금 부담스러워서 먼저 보고를 해야겠다.
참고
'개발 > JavaScript' 카테고리의 다른 글
| [JS] Optional chaining (0) | 2023.03.28 |
|---|---|
| [JS] addEventListener가 동작을 안한다 (0) | 2022.09.22 |
| [JS] jQuery Ajax를 바닐라 JS fetch()로 바꾸기 (0) | 2022.09.14 |
| [NestJS] logger, Configuration (0) | 2022.09.02 |
| [NestJS] Unit Testing, End-to-End(E2E) (0) | 2022.08.10 |