리눅스 기초
Terminal Based Development
터미널 환경
백앤드 개발을 처음 입문하는 분들에게 저자가 추천하는 것중 하나가 명령어 인터페이스(CLI, Command Line Interface)에 익숙해지라는 것이다. 그 이유는 대부분의 백앤드 시스템이 리눅스 기반의 서버에서 운영되기 때문이다. 그럼으로 리눅스 서버에 접속해서 작업을 할때 텍스트 터미널을 통해 작업을 하는 경우가 대부분이다. 예를 들어, 백앤드 시스템에 오류가 났을때 서버에 접속해 로그를 보면서 오류를 해결해야 하는 경우 모든 작업이 다 터미널 상에서 이루어지기 때문에 만일 명령어 인터페이스와 터미널 환경에 익숙하지 않다면 많은 어려움을 겪게 될것이다. 그래서 개발할때는 UI나 여러 편리한 툴(tool)에 의존하는것을 최소화 하고 최대한 터미널을 통해서 개발하는것을 습관화 하는것을 권장한다.
쉘(Shell)
쉘(Shell)은 터미널 환경에서 운영체제의 커널(kernel)과 사용자의 유저 스페이스(user space)를 이어주는 인터페이스(interface) 역활을 하는 프로그램 이다. 아주 간단하게 설명하면 사용자의 명령어를 운영체제에 전달하여 실행되게 하고 그 결과물을 유저에게 전달하는 역활을 하는 프로그램이라고 생각하면 된다. 인터페이스 역활외에도 쉘 스크립트(Shell Script)라는 쉘 전용 프로그래밍 언어를 사용해서 터미널 환경에서 다양한 자동화를 실행할 수도 있다.
대표적인 쉘로는 Bash(Bourne-Again Shell)가 있다. Bash는 거의 대부분의 리눅스 기반의 운영체제에서 기본 쉘로 설치된다. 하지만 쉘은 Bash이외에도 여러 다양한 쉘이 있다. 그중에 최근에 인기를 얻고 있는 쉘로는 ZSH(Z Shell) 있다. 기본적인 기능은 Bash와 큰 차이는 없으나 여러 다양한 편리한 기능을 제공하고 있다. 특히 Oh My Zsh라는 ZSH 설정 매니져 플러그인을 통해서 편리하게 쉘을 설정할 수 있게 되어서 널리 사용되고 있다.
참고로 Terminal과 Shell은 틀리다. Terminal은 Shell을 실행시키는 프로그램이다. Terminal에서 Bash를 실행시킬수도 있고 ZShell을 실행 시킬수도 있다.
Package Manager
Windows나 Mac 처럼 개발자가 아닌 일반인들도 사용 가능하게 만들어진 OS(운영체제) 에서 새로운 프로그램을 설치할때는 일반적으로 다음의 과정을 거친다.
- 원하는 프로그램 설치 파일을 다운로드 한다.
- 다운로드한 프로그램 설치 파일을 더블 클릭하여 실행한다.
- 프로그램이 설치된다.
하지만 많은 개발 툴들이 terminal 에서만 사용되는 목적으로 나오는 tool 들이 많다. 그리고 terminal 에서는 더블클릭을 할 수 없다. 그러면 terminal 전용 tool들은 어떻게 설치를 하고 관리할 수 있을까?
예전에는 터미널 상에서 프로그램을 설치할려면 프로그램의 소스코드를 직접 컴파일 했어야 했다. 그리고 이러한 컴파일 과정은 까다롭고 복잡한 경우가 많았다. 그 이유는 컴파일을 제대로 하기 위한 설정과 필요한 dependency (의존성) 라이브러리들 연결 등을 전부 사용자가 직접 해결해야 했기 때문이다. 게다가 리눅스 종류마다 컴파일 하는 과정 혹은 결과가 다를 수 있고, 심지어 같은 리눅스 종류라도 버전이 다르면 컴파일이 안되기도 했다. 이러다 보니 같은 프로그램 이라도 어떠한 리눅스 에서는 쉽게 설치되고 실행되지만 다른 리눅스에서는 설치도 안되거나 설치가 되도 실행이 제대로 안되는 경우도 많았다.
그래서 프로그램 하나 설치하는데도 시간이 굉장히 오래걸리는 경우가 많았고, 개발에서 가장 어려운 부분이 "환경 설정하기" 라는 농담도 나올 정도 였다.
이러한 문제를 해결하기 위해 package manager 혹은 package management system 이 사용된다. Package manager는 terminal 성에서 쉽게 원하는 프로그램을 설치하고 사용할 수 있도록 해주는 시스템 이다. 여기서 "package"는 프로그램을 뜻한다. 다른 사람들이 개발하고 대중에게 공유한 프로그램을 package라고 한다. 그래서 뭔가를 새로 설치할때도 package를 설치한다고 이야기 한.
Ubunut 구버전들은 apt-get을 사용해야 하고 최신 버전들은 apt 나 apt-get 둘다 사용 가능하지만 apt 사용이 추천된다.
미션
Git 설치
- Git 을 설치보자.
- 아직 Git이 무엇인지 감이 오지 않아도 괜찮다. 곧 Git에 대해 자세히 배울 것이다.
Zsh과 Oh My Zsh 설치
- 앞서 보았듯이 shell 은 bash 말고도 여러 shell이 있다. 그 중 최근 가장 많이 사용되는 shell은 zsh이다. Zsh과 Oh-my-zsh을 직접 설치해보자.
- Zsh 과 Oh-my-zsh을 설치 하였으면 zsh 플러그인들을 설치하고 theme도 바꾸어 보자. 원하는 플러그인과 theme을 설치하되 다음 pluging들은 꼭 설치하도록 하자.
- git
- osx
- autojump
- python
- pip
- github
- gnu-utils
- zsh-syntax-highlighting
- history-substring-search
- colored-man-pages