증상

Remote SSH로 Ubuntu 22.04 LTS 서버에 붙어 Cursor 3.13.10을 쓰면 코드 인덱싱/검색이 통째로 먹통이 됩니다.

  • 화면 우측 하단 토스트: index build failed: miniserde error
  • 출력(Output) 패널 로그: crepectl: /lib/x86_64-linux-gnu/libc.so.6: version 'GLIBC_2.39' not found
  • 함께 뜨는 메시지: cannot index repository without Git, Not creating an indexing watcher: no queryable index to build
  • Codebase 검색·@codebase가 빈 결과이거나 아예 동작 안 함

원인

crepectl은 Cursor의 Instant Grep 인덱서(코드 검색용 인덱스를 만드는 바이너리)입니다. Cursor 3.13.10부터 이 바이너리가 GLIBC 2.39로 컴파일돼 배포됐어요. 그런데 Ubuntu 22.04 LTS는 GLIBC 2.35를 씁니다. 시스템 glibc가 2.39보다 낮으니 바이너리가 아예 로드되지 못하고, 인덱싱 전체가 실패합니다.

3.13.10에서 새로 생긴 회귀(regression)이며, 원 포럼 스레드 기준 Cursor의 공식 수정본이나 스태프 답변은 아직 없습니다. OS를 24.04로 올리면 시스템 glibc가 2.39가 되어 근본 해결이 되지만, 운영 서버엔 부담이 커 보고자도 이 방법을 거부했습니다. 아래는 지금 당장 쓸 수 있는 우회책 두 가지입니다.

방법 1 — 3.13.10 이전 Cursor로 되돌리기 (가장 안전, 추천)

이 문제는 3.13.10에서 처음 생겼으니, 그 이전 버전으로 내리면 GLIBC 2.39를 요구하는 crepectl 자체가 설치되지 않습니다. Cursor 원격은 로컬 클라이언트 버전에 맞는 서버 바이너리를 원격에 밀어넣는 구조라, 로컬을 내리고 원격 서버 캐시를 지우는 것이 핵심입니다.

  1. Cursor 다운로드 페이지/체인지로그에서 3.13.10 직전 빌드(예: 3.13.9 또는 3.12.x)를 받아 로컬 Cursor를 교체 설치합니다.
  2. 자동 업데이트를 끕니다 (다시 3.13.10으로 튀는 것 방지): Settings → Application → Update 에서 auto update 비활성화.
  3. 원격 서버 터미널에서 캐시된 서버 바이너리를 지웁니다:
bash

   rm -rf ~/.cursor-server
  1. Cursor에서 원격에 다시 접속하면, 옛 버전 crepectl(시스템 glibc 2.35와 호환)이 재설치됩니다.

비개발자라면 이 방법이 제일 안전합니다. 패치된 새 버전이 나오면 그때 다시 최신으로 올리세요.

방법 2 — GLIBC 2.39 사이드로드 래퍼 (고급, 커뮤니티 확인, 취약)

원 스레드에서 Instant Grep 한정으로 동작이 확인된 우회책입니다. OS는 안 건드리고, Ubuntu 24.04의 libc6 2.39만 홈 디렉터리에 풀어서 crepectl이 그것을 쓰게 만듭니다. 아래 스크립트는 스레드에 서술된 동작(24.04 libc6 2.39를 ~/.local/share/cursor-glibc239에 내려받고, crepectl을 백업 후 래퍼로 교체)을 표준 방식(새 ld-linux 로더로 원본을 실행)으로 재구성한 것입니다 — 원문 스크립트 자체는 스레드에 공개돼 있지 않습니다.

주의: glibc를 섞어 쓰는 방식이라 취약하고, Cursor 서버가 업데이트될 때마다 래퍼가 덮어써져 다시 실행해야 합니다. 시스템 glibc는 건드리지 않으므로 서버 전체가 망가질 위험은 낮지만, 반드시 crepectl만 대상으로 하세요.

원격 서버 터미널에서:

bash

#!/usr/bin/env bash
set -euo pipefail

# 1) Ubuntu 24.04 libc6(=GLIBC 2.39)만 홈에 풀기 (OS는 안 건드림)
GLIBC_DIR="$HOME/.local/share/cursor-glibc239"
mkdir -p "$GLIBC_DIR"; cd "$GLIBC_DIR"
# 버전 문자열(2.39-0ubuntuX.Y)은 보안 업데이트로 바뀝니다. 404가 나면
# http://archive.ubuntu.com/ubuntu/pool/main/g/glibc/ 에서 최신 libc6_2.39-*_amd64.deb 파일명으로 교체하세요.
wget -N http://archive.ubuntu.com/ubuntu/pool/main/g/glibc/libc6_2.39-0ubuntu8.4_amd64.deb
dpkg -x libc6_2.39-*_amd64.deb .

# 2) crepectl 실제 경로 찾기
CREPECTL="$(find "$HOME/.cursor-server" -type f -name crepectl -path '*helpers*' | head -n1)"
[ -n "$CREPECTL" ] || { echo "crepectl 없음 — Cursor로 원격에 한 번 접속해 서버 설치 후 다시 실행"; exit 1; }

# 3) 원본 백업 (최초 1회만)
[ -f "$CREPECTL.orig" ] || cp "$CREPECTL" "$CREPECTL.orig"

# 4) crepectl을 래퍼로 교체: 새 로더 + 새 libc로 원본 실행
cat > "$CREPECTL" <<EOF
#!/usr/bin/env bash
G="$GLIBC_DIR/lib/x86_64-linux-gnu"
exec "\$G/ld-linux-x86-64.so.2" --library-path "\$G:/lib/x86_64-linux-gnu:/usr/lib/x86_64-linux-gnu" "$CREPECTL.orig" "\$@"
EOF
chmod +x "$CREPECTL"
echo "완료 — Cursor에서 Cmd/Ctrl+Shift+P → 'Developer: Reload Window' 실행"

실행 뒤 Cursor에서 Developer: Reload Window를 하면 인덱싱이 돌아옵니다. 서버 업데이트로 다시 깨지면 이 스크립트를 한 번 더 돌리세요.

근본 해결 & 추적

  • 근본 해결은 (a) 서버를 Ubuntu 24.04로 올려 시스템 glibc를 2.39로 맞추거나, (b) Cursor가 crepectl을 glibc 2.35 호환으로 재빌드하거나 정적 링크로 배포하는 것입니다. (b)는 Cursor 몫이므로, 패치 버전이 나오면 최신으로 업데이트하세요.
  • 원 포럼 스레드를 구독해두고, Cursor 새 버전 체인지로그에 crepectl/GLIBC 관련 수정이 들어왔는지 확인하는 걸 권합니다.