(macOS) Jekyll server 돌리기 + GitHub commit 하기

벌써 한 달 후면 새 학기가 시작될 예정이다.

홈페이지에 담당 과목 관련 내용을 업데이트 하기 위해 오랜만에 다시 Windows 10에서 GitHub commit 방법을 복습했다.

그런데 오늘은 MacBook을 들고 나왔기 때문에 macOS에서 Visual Studio Code를 통해 Jekyll server를 돌려 웹페이지를 확인하는 방법과 commit 하는 방법을 기록해 보려고 한다.


1. Commit 하기
2. Visual Studio Code에서 Jekyll server 돌리기

1. Commit 하기

일단 macOS는 Xcode Command Line Tools를 설치했다면 Git이 함께 설치된다고 한다. (출처: git-scm)


> git version

Terminal에서 위 명령어를 통해 Git이 정말 설치되어 있는지, 그리고 버젼은 무엇인지 확인 가능

그 후 cmd 창에서 현재 위치를 commit 할 폴더, 즉 웹페이지의 소스 파일들이 있는 곳으로 옮기고 (나의 경우 Website_repo) 다음의 명령어들을 사용하여 commit을 해준다.

> git add --all

> git commit -m "Initial commit of Jekyll blog"

> git push -u origin master



Windows 10에서와 마찬가지로 중간에 GitHub 계정 정보와 비밀 번호를 물어보니 확인.

위 예시에서는 따로 수정한 파일이 없기 때문에 (모두 up-to-date) Git이 굳이 같은 파일들을 commit 하지 않음.

2. Visual Studio Code에서 Jekyll server 돌리기

먼저 Visual Studio Code terminal에서 바로 아래의 명령어를 실행하면 "Gem::GemNotFoundException" 오류가 발생할 수 있다.

> bundle exec jekyll server


웹페이지를 위한 적합한 Bundler가 설치되어 있지 않기 때문인 것 같음.

macOS terminal에서 웹페이지 폴더로 위치를 옮긴 뒤 다음의 명령어로 따로 Bundler를 설치해줬다.

> sudo gem install bundler


다시 서버 시작을 시도해 보자.

그럼 이번엔 "bundler: command not found: jekyll" 오류를 볼 수 있다.


Jekyll을 실행하기 위한 gem (일종의 모듈/라이브러리인듯?) 이 없다는 뜻.

이 경우 위에서 설치한 Bundler를 통해서 현재 작업하고 있는 웹페이지 폴더에 필요한 gem들을 자동으로 다운/설치할 수 있다.

따라서 다음의 명령어를 실행하고 결과를 쭉 보니

> bundler


"Gem::Ext::BuildError: ERROR: Failed to build gem native extension." 오류가 발생하면서 



바로 위 세 줄에 써져 있는 http_parser.rb, eventmachine, ffi 설치에 실패했다는 메시지가 나온다.

(위 사진은 eventmachine에 대한 오류 메시지 부분 예시)

설치되지 않은 eventmachine을 개별적으로 설치해 보았다.

> sudo gem install eventmachine


여전히 비슷한 오류가 발생함


답이 없기에 열심히 Googling하여 다음의 Jekyll 관련 Q&A 웹사이트를 발견했다.

Installation Issues on MacOSX - Gem::Ext::BuildError: ERROR: Failed to build gem native extension

일단 질문자와 답변자의 대화를 살펴보면 Catalina 이후 macOS에 pre-install된 시스템 gem과 ruby은 잠겨있는듯 하다. (일반 사용자 권한이 없다는 뜻인듯?)

그래서 gem 설치 시 명령어 뒤에 '사용자 수준에서의 설치를 한다'는 --user-install를 추가해 줘야 한다는 내용을 확인함.

> gem install eventmachine --user-install


끝이 없다.

이번엔 "You don't have /Users/사용자이름/.gem/ruby/2.6.0/bin in your PATH" 오류 발생

뭔가 설치를 위한 경로 또는 권한이 시스템에 제대로 등록되어 있지 않은 모양.

다시 아까 참조한 Jekyll 웹사이트 마지막 게시글을 읽어보니 .bash_profile 파일에 해당 경로를 추가해 줘야하는 것 같다.



.bash_profile은 숨김 파일이기 때문에 단축키 command+shift+. 를 통해 볼 수 있다.

어 그런데...

여기는 Anaconda 관련 내용 밖에 없는딩...

다시 처음으로 돌아가 오류 메시지 중 왜 위 gem들이 정상적으로 설치되지 않았는지에 대해 기록해 놓은 log 파일을 확인해 보았다.

/Library/Ruby/Gems/2.6.0/extensions/universal-darwin-20/2.6.0/eventmachine-1.2.7/mkmf.log


이곳을 보니 Command Line Tools 하위 폴더에서 ruby/config.h 파일을 찾을 수 없다는 오류 메시지가 기록되어 있었다.

하... 다시 시작된 Googling

Stackoverflow에서 "macOS Mojave 'ruby/config.h' file not found" 질문에 대한 답변들 중 두 번째 답변을 읽어보니 기존 Comman Line Tools 버전 중 macOS 10.14, 10.15 버전의 ruby 폴더에는 config.h 파일이 존재하지 않는 것이 정상인 것 같다.

반면 macOS 11.1 버전에는 존재하는듯!?

어차피 Command Line Tools를 설치한 지도 1년이 넘어가고, 또 Big Sur로 update한 이후 제대로 재update를 하지 않았던 것 같아 이 기회에 싹 갈아엎고 다시 설치하기로 결정.

그렇다면 Command Line Tools는 어떻게 (깔끔하게) 삭제하는가?

난 다음의 Stackoverflow 질의응답 중 첫 번째 답변을 참조하였다.

"How to update Xcode from command line"

> sudo rm -rf /Library/Developer/CommandLineTools

> xcode-select --install

정말 물리적으로 CommandLineTools 폴더를 밀고 다시 설치하네.. ㄷㄷ

여튼 재설치가 끝나고 다시 eventmachine gem을 설치해 보았음.

> sudo gem install eventmachine


헐 ㅋ

성공함

이 기세를 타 바로 bundler 명령어를 시도했다.


성공...

그럼 최종적으로 Visual Studio Code에서 서버도 다시 시도해 볼까?


성공...

오랜만에 또 겁나 돌아 돌아 도착한 뿌듯하면서도 구린 기분


결론:

macOS에서 bundler 명령어가 실행되지 않고 "Gem::Ext::BuildError: ERROR: Failed to build gem native extension." 오류가 발생할 시 Command Line Tools를 완전히 삭제한 후 다시 설치해 보자.

Comments