Emcas 초기 설정하기(cask 패키지 관리)

Andy·2020년 12월 20일
0

Emacs

목록 보기
1/1

Emacs 초기설정...

Emacs를 접하고 초기 설정이 없는 Emacs를 사용할 때는 불편한점이 너무 많았다. 애초에 터미널 환경에서 특별히 뭔가를 한일이 거의 없었고 intelliJ, webStrom에 익숙해져 있었기 때문에 자동완성 및 편리한 기능에 너무 익숙해져 있어서 서버환경에서 코딩하는것 자체가 매우 불편했다. 이런 나를 위해 시니어 개발자분이 이미 개발 서버에 굉장히 다양한 패키지를 설정해 놓으셔서 자동완성, 검색 등 편리기능을 다 사용할 수 있었다. 문제는 다른 서버에서 작업을 하면 이 설정을 사용할 수 없다는 점이었다... 개발서버에 적용된 설정을 내 스스로 다른 서버에서도 적용해 보기로 했다.

Emacs 패키지 관리자 : cask

Emacs는 정말 어마어마하게 많은 라이브러리들이 존재한다. 불편한 점이 있어서 검색을 하면 해결할 수 있는 것들이 정말 다양하다. 문제는 이런 패키지들을 제대로 관리해야하는데 개발서버에서는 cask를 통해 Emacs 패키지들을 관리하고 있었다. 결국 사용하는데는 이유가 있다라는 생각이 들어서 cask를 공부하고 적용해보기로 했다.

cask 설치

$ curl -fsSkL https://raw.github.com/cask/cask/master/go | python

cask는 Emacs24버전이상부터 사용이 가능하다.

export PATH=/home/ubuntu/.cask/bin:$PATH

설치가 된 후에 사용하는 쉘에 따라서 .zshrc , bashrc , bash_profile 등에 Path를 설정해줘야한다.

cask설정

Emacs는 일단 시작하게 되면 .emacs.d 폴더에 있는 init.el 파일이 실행이 된다. 결국 Emacs 설정의 시작은 init.el 파일부터 시작하게된다.

(require 'cask "~/.cask/cask.el")
(cask-initialize)

일단 사진과 같이 다음과 같은 코드를 통해 cask를 초기화 해줘야한다. C-x , C-e 단축키를 괄호가 닫히는 부분에서 적용하면 cask라는 문구가 아래 상태창에 나오는걸 확인할 수 있다. 이렇게 미리 실행을 시켜보고 혹여나 오류가 있는지 확인할 수 있다. 내 경우에는 이런 과정을 통해 오타를 찾아서 수정할 수 있었다.

이제 위와 같이 Cask파일에 소스와 의존성을 적용해줘야하는데 일단 .emacs.d 폴더에서 cask init이라는 명령어를 사용하게 되면 Cask 파일을 만들어 준다. 물론 직접 만들어서 내용을 적용해도 문제는 없다. 굉장히 많은 의존성을 사용하고 있었다.
이제 Cask 파일이 있는 위치에서 cask 명령어를 실행시켜서 의존성을 설치하면 된다. 명령어가 실행된 후에 의존성이 제대로 설치되었는지 확인해 보자.

/.cask/emacs버전(ex. 27.1)/elpa

명령어를 실행한 후에는 그 위치에 .cask 폴더가 있을 것이다. 해당 폴더에서 위 경로로 들어가게 되면 의존성이 설치된 것을 확인할 수 있다.

init-loader 설정

의존성이 설치된 후에는 실행했을 때 바로 내가 원하는 의존성에 있는 설정들을 사용할 수 있어야 하는데 init-loader 패키지를 통해 emacs가 실행되자마자 바로 설정을 불러올수 있다.

(depends-on "init-loader")

일단 init-loader 의존성을 위와 같이 Cask파일에 적용해 놓아야한다.

(init-loader-load "~/.emacs.d/init-loader/")

이후 init.el 파일에 위와 같은 코드를 적용해야 한다. 위에 init.el 사진을 보면 이미 위 코드를 적용한것을 볼 수 있다.

이후 적용한 코드의 경로에 init-loader 폴더를 만들고 앞에 숫자 두개가 있는 파일을 만들어서 의존성에 대한 설정을 해야한다.

솔직히 폴더명과 폴더 안에 있는 내용은 개발서버에 있는 내용을 그대로 복붙해서 사용했다. 정확한 내용은 잘 모르지만 설정을 하는 방법들이 담겨있는걸로 알고 있다.
하여간 필요한 부분 적용한 하면 init-loader 를 통해서 내가 원하는 설정이 적용된다.

설정 중 겪었던 문제

설정 도중에 Emacs 26버전 이상에서 사용할 수 있는 의존성이 있어서 Emacs버전을 업데이트해야만 했다. 버전 업데이트 때문인지 모르겠지만 emacs 폴더가 두개가 생겨서 Emacs를 실행했을 때 init.el 파일이 실행되지 않는 문제점이 발생하였다. init.el 폴더에 가서 M-x eval buffer로 강제로 실행을 해줘야 설정이 변경되는 것을 확인할 수 있었다.

문제는 위 사진을 통해 찾을 수 있었다. Emacs는 init.el 파일을 스스로 찾아서 실행을 하는데 내 경우에는 .config / emacs 가 있었고 거기에 있는 init.el이 default로 되어 있어서 init-loader가 작동이 되지 않았던 것이었다. 그래서 .config에 있는 emacs를 삭제하였고 그때서야 emacs가 실행되자 마자 모든 설정이 작동되었다.

설정 후 느낀점

시니어 개발자님이 만들어 놓으신 package 관리를 다른 서버에 옮기는것임에도 불구하고 시간이 상당히 많이 소요되었다. 아직 터미널 환경에 적응이 되지 않아 단순한 복사 붙여넣기도 어려웠다. fzf를 통해 파일 통째로 로컬에 옮기고 다시 서버로 전송할 수 있다는 팁을 나중에서야 할게 되었지만 직접 서버 세팅을 해보지 않았다면 이런 전반적인 프로세스를 이해하기 어려웠을것 같다.

참고자료 : http://asq.kr/Kk0omHL6O6SOe

profile
Junior Software Developer

0개의 댓글