Docker

[OpenGrok] Opengrok 사용시 indexing 안되는 문제

스카이데이즈 2025. 11. 12. 17:42
728x90

sudo docker logs -n 50 [DOCKER_ID] 로 보면 아래와 같이 에러가 발생

processing of project 'src_code' failed failed commands: 'opengrok-mirror -c /opengrok/etc/mirror.yml --api_timeout 8 -I -U http://localhost:8080/ src_code ': 1 Project src_code has not been indexed yet, overriding incoming check Synchronizing repository /opengrok/src/ src_code failed to configure git pull.ff: command ['/usr/bin/git', 'config', '--local', 'pull.ff', 'only'] in directory /opengrok/src/ src_code  exited with 128 failed to perform command ['/usr/bin/git', 'pull', '--ff-only']: command ['/usr/bin/git', 'pull', '--ff-only'] in directory /opengrok/src/src_code exited with 128 output of '['/usr/bin/git', 'pull', '--ff-only']': fatal: detected dubious ownership in repository at '/opengrok/src/ src_code' To add an exception for this directory, call: git config --global --add safe.directory /opengrok/src/ src_code failed to synchronize repository /opengrok/src/ src_code

 

보신 로그의 핵심 에러는 이거

fatal: detected dubious ownership in repository at '/opengrok/src/src_code'
To add an exception for this directory, call:
  git config --global --add safe.directory /opengrok/src/src_code

즉, OpenGrok가 opengrok-mirror로 git pull --ff-only를 하다가 리포지터리 소유자/퍼미션이 현재 실행 유저와 맞지 않아 Git이 “안전하지 않다(dubious ownership)”고 막은 상황입니다. 그 여파로 git config --local pull.ff only(로컬 설정 쓰기)도 128로 실패했어요.

빠른 해결(안전/권장 순서)

  1. 실행 유저가 소유하도록 고치기(권장)
    OpenGrok/인덱서가 어떤 계정으로 도는지 기준으로 소유권을 맞춥니다(예: opengrok 유저).
# 인덱서를 돌리는 유저/그룹에 맞춰 조정
sudo chown -R opengrok:opengrok /opengrok/src/src_code

# 그룹 공유 리포면 퍼미션도 정리(디렉터리 setgid 포함)
sudo find /opengrok/src/src_code -type d -exec chmod 2775 {} \;
sudo find /opengrok/src/src_code -type f -exec chmod 664 {} \;

# (선택) Git 공유 설정
sudo -u opengrok git -C /opengrok/src/src_code config core.sharedRepository group
  1. Git에 “신뢰 디렉터리”로 등록(임시/대안)
    소유권을 당장 바꾸기 어렵다면, 인덱서를 실행하는 유저의 글로벌 설정에 safe.directory를 추가
# 인덱서 실행 유저로 수행 (예: opengrok)
sudo -u opengrok git config --global --add safe.directory /opengrok/src/src_code

시스템 전체에 허용하려면:

sudo git config --system --add safe.directory /opengrok/src/src_code

(보안상 범위를 최소화하는 게 좋아요. * 와일드카드는 가급적 피하세요.)

  1. 다시 동기화/인덱싱 실행
opengrok-mirror -c /opengrok/etc/mirror.yml --api_timeout 8 -I -U http://localhost:8080/ src_code
# 또는 전체 인덱싱 플로우를 다시
opengrok-indexer -R /tmp/tmpu2xerd29 --connectTimeout 8 -r dirbased -G -m 256 --leadingWildCards on \
  -c /usr/local/bin/ctags -U http://localhost:8080/ -H src_code

 

왜 이런 일이 생기나?

Git 2.35+부터 현재 유저가 소유/신뢰하지 않는 디렉터리의 리포지터리 작업을 기본 차단합니다. 지금은 /opengrok/src/src_code의 소유자/권한이 인덱서를 실행하는 유저와 맞지 않아서 막힌 거고, 그 결과 pull.ff 설정 쓰기도 실패

 

 

 

 

728x90