Devlog.
게시일

Ubuntu 18.04에서 Node.js v18+ 실행하기

cover
date
Oct 26, 2023
slug
ubuntu-1804에서-nodejs-v18-실행하기
status
Published
tags
Ubuntu
Node.js
summary
version `GLIBC_2.28' not found 오류 해결
type
Post

발단

NAVER Cloud Platform 서버 초기 설정을 마무리하고 asdf를 통해 Node.js 18.18.2를 설치하고 실행하는데 다음과 같은 문제가 발생했다.
node -v /home/m4nd4r1n/.asdf/installs/nodejs/18.18.2/bin/node: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found (required by /home/m4nd4r1n/.asdf/installs/nodejs/18.18.2/bin/node)
검색을 통해 해당 문제를 다루는 이슈 페이지를 확인할 수 있었다.
요약하자면 Node.js 18 버전부터 glibc 2.28 이상 기반의 Linux 배포판(Debian 10, RHEL 8 및 Ubuntu 20.04 등)과 호환되고 그 이하의 버전과는 호환되지 않는다는 내용이었다.
NAVER Cloud Platform에서 제공하는 클래식 서버의 OS는 CentOS 7.3, CentOS 7.8, Ubuntu 18.04로 모두 Node.js 18버전과 호환되지 않는 Linux 배포판이었다.
Node.js 16버전은 2023년 9월 11일자로 EOL 상태로 변경되어서 다운그레이드해서 사용하기에는 좋지 않다고 생각되었고, 위 이슈 페이지에서 직접 glibc를 빌드해서 사용하는 방식을 확인해서 해당 방법으로 18버전을 사용하기로 했다.

glibc 2.28 빌드하기

1. 빌드에 필요한 패키지 설치

sudo -i apt install -y gawk g++ bison make

2. glibc 2.28 소스코드 다운로드

cd ~ wget -c https://ftp.gnu.org/gnu/glibc/glibc-2.28.tar.gz tar -zxf glibc-2.28.tar.gz

3. 빌드 설정 및 빌드 진행

mkdir temp cd temp ../glibc-2.28/configure --prefix=/opt/glibc-2.28 make -j 2 # 코어 수 만큼 작성 make install

4. 설치된 Node.js 패치

💡
서버의 아키텍처, node 설치 경로를 환경에 맞게 작성한다.
apt install -y patchelf patchelf --set-interpreter /opt/glibc-2.28/lib/ld-linux-x86-64.so.2 --set-rpath /opt/glibc-2.28/lib/:/lib/x86_64-linux-gnu/:/usr/lib/x86_64-linux-gnu/ /home/m4nd4r1n/.asdf/installs/nodejs/18.18.2/bin/node

5. 파일 정리 및 node 실행

cd ~ rm -rf temp glibc-2.28 glibc-2.28.tar.gz exit node -v v18.18.2
node 명령이 제대로 실행되는 것을 확인할 수 있었다.

Reference