ELPA - Emacs Lisp Package Archive
이름만 봐도 알 수 있을 것 같지만, 간략하게 정리하자면 여기저기 산재해 있는 Emacs용 확장 모듈을 한 곳에서 관리하며 이를 손쉽게 설치하거나 업그레이드 하거나 삭제 할 수 있는 기능 제공을 목표로 하는 서비스이자 확장(Extension)이다.
Emacs 24 버전부터는 package.el 로 통합되었기 때문에 별도의 설치나 설정이 필요하지 않고 바로 이용이 가능하다. 하지만 등록된 패키지가 좀 적다는 것이 문제였기 때문에 개인적으론 별로 사용하지 않았다.
MELPA - Milkypostman's ELPA
홈페이지에서 표기하기를 Experimental 한 패키지 들을 관리한다고 한다. 결국 ELPA에서 제공하지 않는 확장을 제공하겠다는 의미로 이해가 된다.
MELPA는 아래 저장소 주소를 ELPA에 추가해 주면 사용이 가능하다.
http://melpa.milkbox.net/packages/
Marmalade
Marmalade 역시 ELPA에 호환되는 패키지 저장소이다. 아래 저장소 주소를 ELPA에 등록해 주면 사용 할 수 있다.
http://marmalade-repo.org/packages/
사용법
MELPA와 Marmalade는 ELPA에 호환되도록 만들어 졌고 특별한 확장을 제공하기 보단 패키지 목록 을 제공하는데 목적이 있다. 즉, Emacs24를 사용 중이라면 저장소 주소를 추가해 주는 것으로 준비는 끝이다. 만약 Emacs 23 이하의 버전을 사용한다면 ELPA를 설치하면 되지만 가급적 24 버전을 사용하는 것을 추천한다.
위 저장소들을 이용하기 위해선 Emacs 설정(초기화 스크립트)에 아래 몇 줄의 코드가 필요하다.
(require 'package) (add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/")) (add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/")) (package-initialize)
위 코드가 실행되고 나면
M-x package-list-packages
명령으로 ELPA를 기동시킬 수 있다. 이 명령을 입력하면 등록된 저장소 모두에서 패키지 리스트를 다운로드 받고 *Packages* 버퍼가 나타나면서 패키지 목록이 표시된다.*Packages* 버퍼에서는 아래의 단축키를 사용 할 수 있다.
n
혹은p
: 커서를 아래 혹은 위로 이동(C-n 및 C-p 와 동일)?
: 패키지 상세 설명 표시i
: 설치할 패키지로 선택d
: 삭제할 패키지로 선택u
: 선택된 패키지를 선택 해제U
: 설치된 확장 중 업그레이드 된 패키지 전부 선택(대문자 U 주의)r
: 리스트를 최신으로 갱신x
: 설택된 패키지를 설치하거나 업그레이드
사족
유명한 패키지 저장소는 ELPA 공식을 포함해서 이 3가지이다. 왜 이렇게 분리되어서 관리되느냐 하는 점이 의아하기도 한데, 각 저장소 프로젝트는 성격이 조금씩 다르리라 생각된다. 어차피 ELPA를 통해 하나로 집중관리 되기 때문에 분리되어 있어도 마치 하나인 것 처럼 느껴진다.
패키지 소스의 경우도 경로가 다양하다. 예를 들어 github에서 긁어 온다거나 혹은 wiki에서 다운로드 한다거나 등등 말이다. 소스 서비스가 틀려도 한 곳에서 관리가 가능하다니 당연히 좋은 세상이다.
위의 추가2곳의 저장소를 등록해 두면 별도로 확장을 다운로드 받아서 설치하는 번거로운 과정이 필요없다. load-path 등록도 필요없다. 그냥 *Packages*에서 설치해 두고 쓰고 싶을 때 require 혹은 load-library를 써서 사용하면 된다. 항상 새로운 확장을 시험해 볼 때 설치하는 과정이 제일 번거로웠던 나에겐 축복과도 같다.
이제 Vim의 Vundle 같은 뛰어난 패키지 관리 시스템을 부러워 하지 않아도 된다. 오히려 더 좋고 편하다. :-)
0 comments:
댓글 쓰기