티스토리 뷰

언제부터인가 vim을 실행하면 하단의 상태바에 아래와 같은 에러 메시지를 뜨며 YCM plug가 동작하지 않았다. 자동 완성 기능을 제대로 쓸 수 없으니 코딩할 때 이만저만 불편한 게 아니었다. 게다가 소모적인 오타는 분노를 일으키기까지 했다.

"The ycmd server SHUT DOWN (restart with :YcmRestartServer)".

아마도 가상 환경 때문에 인터프리터 등의 환경변수가 바뀌면서 문제가 발생한 것은 아닐까 싶다. 하지만 정확한 원인을 찾지 못한 채 한동안 vim이 아닌 vs code를 사용해 왔다. vs code 등에서 vim 에뮬이나 extension을 사용하며 아쉬움을 달래지만 본격적으로 IDE를 쓸 게 아니면 vim이 제일 편한 건 어쩔 수 없다. 결국 시간을 내서 이 문제의 해결을 시도하였다. 즉 삽질의 시작이었다.

우선 이번 시도를 얻은 교훈을 먼저 정리한다.

  • 개발자 사이트(개발사 홈페이나 github 등)가 있다면 그곳의 QnA, 가이드, Wiki에서 관련 이슈를 찾아 보자.
  • 문제가 발생한 부분을 재설치해 보자.

문제 해결의 단초를 찾기 위해 가장 먼저 시도한 것은 당연히 구글링이었다. mac, vim, ycm, server shut down 등의 키워드를 조합하여 사례와 해결책을 검색했다. 우리나라에서는 사용자가 별로 없는 것인지 관련 이슈에 관한 한글 문서를 찾기는 어려웠다. 대개가 vundle 사용법과 ycm 설치 및 .vimrc에서 관련 내용의 편집에 관한 내용이 주를 이룰 뿐이었다. 결국 짧은 영어로 이런 저런 글타래를 통해 확인된 방법들을 시도해 보았지만 문제가 해결되지 않았다. 시간은 흐르고 짜증지수는 가파른 상승곡선을 그려내고 있을 무렵, 역시 꼬인 데는 재설치가 답이란 무식한 방법이 떠올랐다. 이래서는 문제의 원인과 해결책을 찾는 이성적인 경험을 얻을 수 없지 않은가. 하지만 내 시간과 감정 소모는 ... 결국 vundle을 이용해 YCM을 재설치로 방향을 돌렸다.

기존 YCM 플러그인을 삭제하고 vundle을 이용해 재설치하였다. 이 후에는 당연히 ycm을 자신의 환경에 맞게 컴파일해야 한다. 그런데 이게 ... 어찌된 일인지 ... 계속 python에서 'setup.py'를 찾을 수 없다는 에러와 함께 컴파일에 실패하고 말았다. 대체 뭔가 문제인가? 정신이 혼미해지기 시작한다. 아나콘다의 파이썬 설정을 확인해 보고, 아나콘다의 파이썬도 업데이트 해 봤지만 파이썬 관련 설청에 문제가 화인되지는 않았다. 다시, 또 다시 YCM 플러그인을 재 ... 재설치하고 재 ... 재컴파일을 해 봤지만 상황은 바뀌지 않았다. 아 뭐하는 짓일까? 만사가 귀찮아질 즈음 최근에,

Xcode가 자동 업데이트되었었지!

이 사실이 퍼뜩 떠올랐다. Xcode가 업데이트되면 command-line tools를 다시 설치해야 한다는 데 생각이 미쳤다. 미쳤어! 아니나 다를까 Xcode를 실행하자마자 command-line toots를 재설치하는 게 아닌가? 이후에는 파이썬 관련 에러가 발생하지 않고 YCM은 정상적으로 컴파일되었다. 그럼 이제 server shut down 문제도 해결되었겠지 하는 기대감으로 vim을 실행해 보았지만 여전히 하단에 에러 메시지가 출력되었다. 되돌이표!

이를 어쩐다. 딱히 해결책을 찾지 못한 채 봤던 페이지를 다시 보는 일이 반복될 뿐이었다. 그러다가 그간 간과했던 문장이 눈에 들어왔다.

See CONTRIBUTING.md
Are you sure that you see the CONTRIBUTING.md

성의 없는 답변이라고 간과했던 이 조언이 화면에서 부조되기 시작했다. 구글링으로도 딱히 방법을 찾을 수 없으니 지푸라기 잡는 심정으로 해당 문서를 찬찬히 읽어보기 시작했다.

이 문서 안에서 아래의 구절을 발견했다.

  • For common issues such as "the ycmd server SHUT DOWN", please check the GitHub Wiki.

서버 다운 문제와 관련된 Github Wiki가 있었다! 오 이제야 빛이 보인다. 기대를 저버리지 않고 Wiki에 문제 확인 방법과 그에 따른 해결책이 잘 정리되어 있었다.

Check that ycmd can start manually

The best way to validate installation is to try and start ycmd manually using the process that YouCompleteMe will use.

Do this:

$ cd /path/to/YouCompleteMe/third_party/ycmd/
$ cat PYTHON_USED_DURING_BUILDING
/some/path/to/python3
$ cp ycmd/default_settings.json .
$ /some/path/to/python3 ycmd --options_file=default_settings.json
serving on http://localhost:<some port>

 

If this appears to work, then you probably have g:ycm_server_python_interpreter set, remove that from your vimrc and retry.

Otherwise, check output, it should say something about why it wasn't possible to start up ycmd. (The serving on... output is what you should see if everything works.)

이 방법을 통해 아래와 같은 에러 메시지를 확인할 수 있었다. 이와 관련한 추정 원인 및 해결책도 찾을 수 있었다.

에러 추정 원인 해결책
segmantation fault Use of anaconda don't use anaconda when building ycmd

결국 문제의 해결은 단순했다.

아나콘다를 종료한 다음 ycm을 컴파일한다.

가장 기본적이며 원칙적인 방법이  가장 빠른 첩경, 즉 왕도임을 다시 한번 깨닫게 되었다.


'Terminal' 카테고리의 다른 글

macOS에서 tmux 사용법  (0) 2019.12.09
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함
05-18 17:43