Mac 클린 설치 이후 개발 환경 구축/세팅 하기

Mac osX은 매년 메이저 업데이트가 진행되며 올해에도 9월 25일에 High Sierra 에서 Mojave로 새로운 버전이 출시되었다. 기존의 OS에서 포멧 후 클린 설치를 하지 않는 업그레이드 기능을 지원하며 해당 기능을 통해 업데이트를 진행하는 것이 매우 간단하지만 그럼에도 불구하고 메이저 업데이트는 메이저 업데이트인지라 종종 예상치 못한 곳에서 해결하기 쉽지 않은 오류들을 생성해 내곤 한다.

그렇기에 이러한 문제를 미연에 방지하고자 많은 맥 사용자들이 메이저 업데이트가 배포될 때마다 포멧후 클린 설치를 진행하곤 한다. 나 또한 이러한 부류에 속하는 편인데 올해에는 귀찮음을 견디지 못하고 약 한달간 업데이트 상태에서 지속적으로 사용해 오다가 오늘 큰 마음을 먹고 포멧 후 재설치를 진행하였다.

앞으로도 매년 이러한 현상은 반복될 것이기에 무엇보다 미래의 귀찮음과 반복작업을 줄이기 위하여 이번 포스트를 마련해 보았다. 포멧 후 완벽하게 깨끗한 상태에서부터 어떠한 과정을 통해 다시 개발환경을 세팅할 것인지, 미래의 나를 위한 가이드라인이다.

시작하기에 앞서

백업은 필수이다! 물론 google drive, dropbox 혹은 git을 통해 많은 데이터가 저장되어 있지만 그럼에도 불구하고 일년이상 사용해온 맥북은 귀중한 많은 자료들을 가지고 있다. 나중에 포멧후에 자료가 어디갔는지 한참을 찾다가 땅을 치며 후회해도 이미 때는 늦었다. 꼼꼼하게 놓친 자료는 없는지, 혹은 재설치 후 진행할 세팅 파일(zshrc, vimrc, *.sublime-settings 등)들은 다 챙겼는지 확인하여야 한다.

Clean Installation

인터넷에 많은 자료들이 있기때문에 자세한 내용은 생략하고자 한다. 요새는 윈도우와 맥 모두 booting usb를 만드는데 큰 어려움이 없어 더더욱 그렇다. 옛날옛적 설치용 윈도우 CD를 굽고 애지중지 보관하던 시절이 아련히 떠오른다…

After Installation

  1. 맥 설정 변경
  2. 백업 자료 복구
  3. App Store를 통한 앱 다운로드
  4. 인터넷을 통한 앱 다운로드
  5. Terminal & Brew 설정
  6. Sublime Text 환경 설정

순으로 진행한다.

맥 설정 변경

  • 가장 먼저 진행할 것은 한영전환 키 변경이다.

    기존의 control + space, 혹은 TABS 키보다는 shift+space가 손 모양을 유지한 상태에서 가장 빠르게 한영전환을 진행하기 쉬우며 이후 linux에서도 동일한 키 세팅을 하여 사용하는 것이 가장 쉽게 느껴졌다.

    1.  메뉴 > 시스템 환경설정 > 키보드 > 단축키 탭으로 이동한 다음 입력 소스 단축키를 다음과 같이 변경한다. keyboard_setting

    2. 파인더에서 command + shift + G 키를 사용하여 ~/Library/Preferences/ 로 이동하여 com.apple.symbolichotkeys.plist 파일을 연다.
    3. 61

      를 찾아 해당 키의 파라미터 중 1048576을 찾아 131072로 변경한다.

    4. 재시작 혹은 사용자 계정에서 로그아웃한 후 다시 로그인 하여 변경사항을 적용시킨다.
  • Home Folder 이름 변경

    단순히 홈 폴더 이름에 대문자를 섞고 싶어서 진행했다. 루트 디렉토리의 이름이 바뀌는 것이기 때문에 가능하면 설치 직후에 진행하는 것이 좋다.

  • 파인더의 설정 변경

    Advanced 탭에서 파일 확장자 보기와 검색 진행을 현재 폴더로 변경한다.
    Download 폴더에서 + J (View > Show View Options)를 선택한 후 Group By: Data Added, Sort by: Name으로 설정한다.

  • 스크린샷 저장 위치 변경

터미널에 아래 명령어를 입력한다. {경로 ex) /Users/LazyRen/Pictures/ScreenShot}

defaults write com.apple.screencapture location 경로 && killall SystemUIServer
  • Dashboard 사용안함

    defaults write com.apple.dashboard mcx-disabled -boolean YES
    killall Dock
    
  • key hold 시 반복

    defaults write -g ApplePressAndHoldEnabled -bool false
    
  • 한글에서도 ₩ 대신 ` 사용하기

    터미널에서 아래의 명령어를 실행시킨다.

    if ! [ -f ~/Library/KeyBindings/DefaultkeyBinding.dict ]; then mkdir -p ~/Library/KeyBindings && echo '{"₩" = ("insertText:", "\`");}' > ~/Library/KeyBindings/DefaultkeyBinding.dict; fi
    

    이후 재실행시 설정이 적용된다.

  • 로그인시 Other… 삭제

    sudo defaults write /Library/Preferences/com.apple.loginwindow SHOWOTHERUSERS_MANAGED -bool FALSE
    
  • cmd+ctrl+d Dictionary 실행 제거

    defaults write com.apple.symbolichotkeys AppleSymbolicHotKeys -dict-add 70 '<dict><key>enabled</key><false/></dict>'
    
  • System Preferences

    • General
      Show scroll bars: Always
      Ask to keep changes when closing documents : True
    • Dock
      Prefer tabs when opening documents: Always
      Automatically hid and show Dock: True
      Show recent applications in Dock: False
    • Mission Control
      Automatically rearrange Spaces based on most recent use: False
    • Language & Region
      Set English as Primary(place it on the top)
    • Security & Privacy - General
      Show a message when the screen is locked : True
    • Keyboard
      • Keyboard
        Touch Bar shows F1, F2, etc. Keys
        Press Fn key to Show Control Strip
      • Text
        All set to False
      • Shortcuts
        Full Keyboard Access: All controls
        • Mission Control
          Switch to Desktop x : Enable
        • Spotlight
          Disable all (use Alfred instead)
    • Trackpad
      • Point & Click
        All set to True
      • More Gestures
        Swipe between full-screen apps : three fingers
        Mission Control : four fingers
    • Bluetooth
      Show Bluetooth in menu bar : True
    • Sharing
      Change Computer Name as desire.
    • Accessibility
      • Mouse & Trackpad
        Trackpad Options…
        Enable dragging with drag lock 설정시 드래그 도중 손을 떼어도 드래그가 해체되지 않는다.

백업 자료 복구

필요한 자료들을 복구한다. 특정 앱들은 sync folder를 통한 영혼 백업이 가능하므로 사용하여 귀찮은 설정 파트를 생략할 수 있다.

App Store를 통한 앱 다운로드

  • Xcode

    솔직히 IDE로서 Xcode가 좋은지는 잘 모르겠다. iOS앱 개발을 하며 써보았지만 원래 IDE를 무거워서 싫어할 뿐더러 이게 애플이 정식으로 출시한 제품이 맞는지 싶을 정도로 완성도가 떨어진다는(특히 플레이그라운드 사용시) 생각이 든다. 그럼에도 불구하고 개발자 도구 사용을 위하여 Xcode는 필수적으로 설치하여야한다.

  • Spark

    기본 메일 앱은 사이드바 환경설정도 불가능해서 찾은 대안품이다. 사실 브라우저를 통해 메일 사용하는 경우가 가장 잦지만 메일 작성은 아무래도 브라우저보다는 앱을 사용하는 것이 더 편하다.

  • App Cleaner & Uninstaller

    다들 하나쯤은 사용한다는 앱 제거용 앱

  • Microsoft Remote Desktop

    크롬 원격 접속 프로그램도 많이 사용한다고 들었는데 개인적으로 이 프로그램이 원격접속을 위해 가장 좋다고 생각한다. 마이크로소프트에서 공식적으로 무료 배포하는 프로그램이며 원격접속을 위한 세팅도 쉽다.(하지만 WOL 세팅은 쉽지 않지…) 집에 있는 윈도우와 원격접속을 열어놓으면 VM을 사용해 윈도우를 깔아둘 필요성이 전혀 없어진다.

  • Rocket Fuel

    맥 화면꺼짐 방지 앱. 장시간 비사용 상태로 맥을 켜놔도 화면이 계속 켜져있도록 하는 프로그램이다.

  • Keynote, Pages, 한컴오피스 한글 2014 VP 뷰어

    개인적으로 이제 키노트는 파워포인트보다 편하다! 다만 제공하는 기능은 파워포인트가 더 많은 듯 싶다. 한글은 맥을 사용하면서 정말 애증의 존재이다. 윈도우용 한글 2018은 구매하였지만 맥용 한글을 위해 추가지출을 하기에는 부담되는데 학교에서 주는 자료들은 항상 한글이고… 일단 다른 앱들은 .hwp를 읽지도 못하기 때문에 필수적으로 뷰어라도 설치해 두어야 한다.

  • GoodNotes

    아이패드용 필기앱으로 구매한 이후 맥에도 구매하여 잘 사용하고 있다. 동기화가 매우 우수한 편이며 만원 남짓한 가격이 절대 아깝지 않은 앱으로 내가 아이패드로 필기하는 모습을 보고 아이패드를 구매한 많은 친구들에게 꼭 설치하라고 권유해주는 앱이다. 아쉬운 점이 있다면 윈도우용 GoodNote가 존재하지 않는다는 것?

  • Keka

    유료 압축해제 프로그램. 윈도우에서는 반디집을 애용하고 있지만 맥용 반디집은 매우 비싸다. 원래 아이콘이 많이 징그러웠는데 업데이트 이후 많이 귀여워졌다.

  • KakaoTalk

    맥용 카카오톡이 출시되었을 때 정말 기뻤다. 한국인이라면 필수 어플 아닐까?

  • Wunderlist

    기억력이 나쁜 나에게 필수적인 어플. 할일 관리를 위한ToDo App이며 마이크로소프트가 인수한 이후 Microsoft Todo를 내면서 지원이 중단되었지만 해당 어플이 아직까지도 공식 맥용 앱이 없는 관계로 아이폰, 아이패드, 맥에서 Wunderlist를 사용하고 있다.

  • Microsoft To Do 맥용 마이크로소프트 공식 To Do 앱이 나왔다. 이후 폰/패드/크롬을 포함하여 모두 Wunderlist에서 To Do로 갈아탔다. 매우 만족하며 사용중인 앱.

  • Clear

    간단한 메모 용도로 사용중인 앱. 이 앱 또한 아이폰, 아이패드용 앱이 존재한다.

  • Day One

    일기장 앱. 일기를 위해 도대체 얼마를 투자하는 건지 모르겠지만(Plus 계정이 단돈 6.5만원!) 그럼에도 불구하고 일기는 써둘 가치가 있는 것 같다. 정말 슬프게도 난 기억력이 나쁘기에 일기마저 쓰지 않으면 정말 단 일주일전에 내가 무엇을 했었는지 기억이 안날때가 많다. 또한 나중에 일기를 읽고 있자면 다시 그때의 추억이 떠올라서 생각보다 재밌다. ‘소중한 나의 병영일기’ 속칭 소나기는 읽고 있으면 홧병 날 수도 있지만… 하여튼 일기를 쓰는 버릇은 정말 좋다! 초등학교때 단 한번도 일기 과제를 안해가서 매주 복도 청소를 해온 내가 할 말은 아니지만!

  • Movist

    약 일년동안 업데이트가 없는 앱이지만, 개발자님께서 꾸준히 베타버전 업데이트를 통해 곧 정식 버전 업데이트가 나올 것으로 기대하고 있는 앱. 맥에서 동영상을 보는데 좋은 앱이라고 생각한다.

  • Keyboard Pilot

    앱으로 포커스를 옮길때마다 자동으로 키보드 언어를 설정해주는 어플이다. 여러 앱에 적용시키면 일관성이 떨어지고 타이핑 시 무슨 언어가 나올지 스스로가 헷갈릴 수 있지만 다른 무엇보다 terminal에 한하여 English는 무조건 적으로 설정하는 편이 좋다. 일단 terminal은 한국어를 쓸 일이 거의 없는 데다가 다른곳에서 한글 치다가 돌아와서 한글이 쳐지면 백스페이스 누르면서 화가 치솓는다.

인터넷을 통한 앱 다운로드

  • Chrome

    크롬은 윈도우와 맥에서의 연속성 유지뿐 아니라 한국 사이트 접속을 위한 필수 앱이다. 아직도 몇 한국 사이트들은 사파리에서 제대로 동작하지 않는 경우가 있다.

  • Alfred

    이 앱을 사용하지 않는 유저는 맥을 100% 활용하는 것이 아니다라고 확신할 수 있다. 정말 자잘한 부분에서 많은 시간을 세이브해주는 앱이다. 해당 앱의 사용법은 워낙 방대한지라 생략하지만, Powerpack 구매이후 조금만 학습해보면 정말 여러모로 도움이 많이 된다는 것을 알 수 있다.

  • Sublime Text

    업데이트는 자주 해주지 않지만 대학교 들어와서 가장 많이, 가장 오랫동안 사용해온 앱. 단순한 텍스터 에디터이지만 패키지를 설치하고 셋팅함으로서 IDE 못지않은 나만의 텍스터 에디터로 발전해 나아갈 수 있다. 가벼운 프로그램이기에 빠른 동작속도는 덤이다. 대항마로서 github에서 만든 Atom이 있지만 처음 실행시에 굼뜬듯한 느낌을 받아서 몇 번 사용하다가 다시 서브라임 텍스트로 넘어왔다.

    서브라임 텍스트 설정은 따로 포스팅해야할만큼 길다. 그만큼 스스로에게 딱 맞는 텍스트 에디터로 커스텀할 수 있다는 장점을 가지고 있다.

    이제 대세는 vscode다! 넘어가는게 정말 귀찮았지만 아주 잘 쓰고 있다. 무엇보다, 라이센스에서 자유로워 회사에서도 눈치 보지 않고 다운받아 사용할 수 있다.

  • Typora

    마크다운 에디터. 처음에는 마크다운 문서도 서브라임 텍스트를 통해 raw format으로 필기해 왔는데 Typora를 사용하니 변환이 실시간으로 되어 훨씬 문서 작성이 쉬워졌다. 이제 화려할 필요가 없는 문서들은 마크다운으로 만든 이후 pdf 변환하여 제출하는 것이 편할 정도. 일단 한번 써보면 안다. 마크다운을 자주 접해야한다면 필수적으로 사용해야 할 앱.

  • Google Drive

    구글 드라이브는 15GB 라는 넉넉한 무료 용량을 제공한다. 그렇기에 개인적인 용도의 Sync로 사용하는데에 전혀 무리가 없다. 구글 드라이브를 통해 필요한 파일들을 집에 있는 윈도우 컴퓨터에서, 맥북, 아이폰, 아이패드에서 동일하게 접속하고 변경할 수 있다는 것은 큰 축복이다. 또한 저장용량 업그레이드 가격도 비싼 편이 아니기 때문에 필요시에는 업그레이드할 의향도 있다. 아직까진 15GB가 모자르지 않아 그대로 사용중이지만..

  • Dropbox

    개인적인 사용으로는 Goodgle Drive를 사용하지만, 무료 용량의 압박이 있어 지난 학기 Goodnote Backup 및 특정 앱들(Alfred라던지)은 설정파일 공유를 위하여 사용한다.

  • Better Touch Tool

    키보드, 마우스를 사용한 단축키 및 트랙패드 제스쳐 추가, 창 사이즈 조절등 여러 부가기능이 포함된 프로그램. 한번 설정하고 나면 꾸준히 알게모르게 해당 기능을 사용하고 있다. 나중가면 이게 맥 기본 기능이었나 싶을 정도로 알게 모르게 많이 사용되는 프로그램이다.

    BTT-1

    BTT-2

    BTT-3

    BTT-4

  • Bartender 3

    많은 프로그램을 다운받고 사용하다보면 맥의 상단 메뉴바가 엄청나게 더러워짐을 확인할 수 있다. Bartender는 필요없는 메뉴 아이콘을 숨기거나, 토글 할 수 있게 해준다.

    Bartender Show

    Bartender Hide

  • iStat Menus

    시스템 모니터링용 앱이다. 시스템 정보들을 위젯 혹은 메뉴 막대에서 확인 가능하며 매일 아침 날씨 기능 알림을 보내준다. 이외에 배터리, 시계 등 메뉴바에 올라가는 기본 메뉴들도 다 iStat에서 제공하는 메뉴들로 사용하고 있다.

  • Karabiner

    키보드 맵핑 프로그램으로, 개인적으로는 터미널에서 단축키 추가와 remote desktop 사용시 왼쪽 command 와 option key swap 용으로 사용하고 있다.

  • Jettison

    usb 나 다른 외장 하드를 사용하다가 잠들기 모드로 들어갈경우 맥은 해당 장치가 정상적으로 추출되지 않았다는 에러 메시지를 띄운다. 잠들기나 종료, 재시작 등을 진행할때에 자동으로 장치를 추출하기 위해 사용하는 앱이다.

  • Scroll Reverser

    Trackpad 의 스크롤 방향은 매우 직관적이다. 하지만 맥북에 마우스를 연결하게 되면 휠 방향이 평소 윈도우에서 사용하던 때와 반대로 된다. 이러한 상황을 해결하기 위한 앱으로, Trackpad, Mouse 각각의 휠 방향 지정을 따로 해줄 수 있다. 단점이라면 가끔 가다가 설정이 풀린다는 것인데, 설정을 해제했다가 다시 해주면 해결된다.

  • BeardedSpiceForKorean

    touch bar의 멀티미디어 키나 추가 세팅한 단축키를 이용해 모든 멀티 미디어(iTunes는 물론이고 Genie, 멜론, Youtube…)를 컨트롤 할 수 있게 해주는 훌륭한 프로그램이다. Safari/Chrome 사용시 처음에 한해 애플이벤트의 자바스크립트 허용을 해줘야한다.

  • Mac Fan Control

    더위에 고생하는 맥북을 위한 앱. 2017년형 맥북프로를 처음 사고 놀랐던건 정말 아무것도 안하고 외장 디스플레이만 하나 연결했을 뿐인데 너무 뜨거워진다는 거였다. 2018년형은 발열 문제가 더 심하다고 하니… 조금 시끄럽더라도 팬을 더 열심히 돌리기 위해 설치하는 앱. 기본 팬 센서를 유지하고 싶으면 안깔아도 무방하다.

Terminal & Brew 설정

su 명령어 사용을 위하여 아래 명령어를 사용한다

sudo -s
passwd root
  • 명령어 도구 설치 xcode-select --install

  • brew 설치

    /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
    
  • git 설치

    brew install git git-lfs
    

    설정

    git config --global user.name "Your Name"
    git config --global user.email "yourID@your-domain.com"
    git config --global core.precomposeunicode true
    git config --global core.quotepath false
    
  • oh-my-zsh 설치

    brew install zsh
    sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
    
    • Pure 테마 설치

      brew install nodejs
      npm install --global pure-prompt
      echo 'autoload -U promptinit; promptinit
      prompt pure' >> ~/.zshrc
      
    • zsh 관련 플러그인 설치

      자동완성 플러그인 zsh-completion, zsh-autosuggestions, 하이라이팅 플러그인 zsh-syntax-highlighting

      brew install zsh-completions zsh-syntax-highlighting zsh-autosuggestions autojump
      
      echo 'fpath=(/usr/local/share/zsh-completions $fpath)' >> ~/.zshrc
      echo 'source /usr/local/share/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh' >> ~/.zshrc
      echo 'source /usr/local/share/zsh-autosuggestions/zsh-autosuggestions.zsh' >> ~/.zshrc
      echo '[ -f /usr/local/etc/profile.d/autojump.sh ] && . /usr/local/etc/profile.d/autojump.sh' >> ~/.zshrc
      source ~/.zshrc
      
    • 기타 ~/.zshrc 변경 내용

      plugins=(
        git
        fzf
      )
      
      # You may need to manually set your language environment
      export LANG=en_US.UTF-8
      export LC_ALL=en_US.UTF-8
      
      # Preferred editor for local and remote sessions
      if [[ -n $SSH_CONNECTION ]]; then
        export EDITOR='vim'
      else
        export EDITOR='code -n -w'
      fi
      
      # Get OS X Software Updates, and update installed Homebrew, Ruby, npm, oh_my_zsh and pip
      alias update='echo sudo softwareupdate; sudo softwareupdate -i -a;
       echo brew update; brew update; echo brew upgrade; brew upgrade;
       echo brew cask upgrade; brew cask upgrade;
       echo brew cleanup; brew cleanup;
       echo sudo gem update --system; sudo gem update --system; echo sudo gem update; sudo gem update;
       echo sudo npm update -g; sudo npm update -g;
       echo upgrade_oh_my_zsh; upgrade_oh_my_zsh;
       echo pip3 install --upgrade pip; pip3 install --upgrade pip;
       echo pip install --upgrade pip; pip install --upgrade pip;
       echo pip3update; pip3update;
       echo pipupdate; pipupdate;'
      
      pipupdate() {
       pip list --outdated | cut -d ' ' -f1 | xargs -n1 pip install -U --user;
      }
      
      pip3update() {
       pip3 list --outdated | cut -d ' ' -f1 | xargs -n1 pip3 install -U --user;
      }
      
      alias convmvnfc='convmv -r -f utf8 -t utf8 --nfc --notest .'
      alias zshrc='code ~/.zshrc'
      alias diff='diff -ibE'
      alias gs='git status'
      alias gcm='git commit -m'
      alias gp='git push'
      alias gpl='git pull'
      alias undo-commit='reset --soft HEAD~1'
      alias clean-merged='!git branch --merged | grep -v \"\\*\" | xargs -n 1 git branch -d'
      alias rmout='find . -type f -name \"*.out\" -delete'
      
  • 기타 개발용 소프트웨어 설치

    # Ruby 및 Bundler 설치
    brew install ruby
    echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.zshrc
    sudo gem install bundler
    
    # Python3 설치
    brew install python3
    
    # 코딩용 폰트 Source Code Pro 설치
    brew tap homebrew/cask-fonts
    brew cask install font-source-code-pro
    brew cask install font-source-code-pro-for-powerline
    
    # Terminal 앱 Hyper 설치
    brew cask install hyper
    
    # convmv (NFD to NFC 유니코드 변경)
    brew install convmv
    # convmv -r -f utf8 -t utf8 --nfc --notest .
    
  • 기본 맥 터미널 용 테마 다운로드/설치

    터미널 설정(cmd + ,)에서 원하는 프로파일을 default로 설정

  • 서브라임 텍스트 심볼릭 링크 등록(subl)

    ln -s /Applications/Sublime\ Text.app/Contents/SharedSupport/bin/subl /usr/local/bin/subl
    

Sublime Text 환경 설정

서브라임 텍스트 설정은 그 자체만으로 하나의 포스트를 적어야 할 분량이 나오기 때문에 다른 포스트에서 다루기로 한다.

References

많은 선배님들의 좋은 포스트가 있었기에 그래도 수월하게 셋업을 마칠 수 있었다. 아래 포스트들을 많이 참고하였으며, 조금 더 발전시킬 수 있을 것 같은 부분은 발전시켜 포스팅하였다.

이외에도 많은 자료들을 참고하였으며 가능한 한 해당 글/자료들의 링크를 포스트에 첨부시켜 놓았다.


© 2020. All rights reserved.