--- title: Emacs - 모듈 자동 설치하기 & 그 외 이슈 layout: post status: publish published: true tags: [emacs, el, config, module, package] comments: true ---

본 게시물은 이맥스 환경을 최소한의 노력으로 동일 환경을 구축하기 위해 작성되었다.
현재 회사, 집 두대의 컴퓨터를 사용하며, 환경 파일은 Github에서 관리되고 있다.

아래의 스크립트는 이맥스 로딩 시 최초 한번 실행되며, package1, package2가 설치 되어있는 지 확인 후 설치 되어 있지 않다면,
설치 할 것인지 물어본다.

1 개인 init.el 파일 최상단에 적어주자

; list the packages you want
(setq package-list '(package1 package2))

; list the repositories containing them
(setq package-archives '(("elpa" . "http://tromey.com/elpa/")
                         ("gnu" . "http://elpa.gnu.org/packages/")
                         ("marmalade" . "http://marmalade-repo.org/packages/")))

; activate all the packages (in particular autoloads)

; fetch the list of packages available
(unless package-archive-contents

; install the missing packages
(dolist (package package-list)
  (unless (package-installed-p package)
    (package-install package)))

위 스크립트는 stackoverflow 내용중 일부를 발췌하여 작성한것이다.

2 Unable to resolve var: refactor-nrepl.middleware/wrap-refactor when starting 0.17

stackoverflow 참조

Remove refactor-nrepl -
seems you're using a version of it that's not compatible with the current stable CIDER.
I guess something like this would be enough:

(setq cljr-inject-dependencies-at-jack-in nil)

3 버전 업그레이드로 인한 기존 코드 충돌 시 재 설치 방법

3.1 re-compile

컴파일을 다시 하기 위해서는 아래의 명령어를 이맥스에서 입력해주고, 이맥스를 다시 시작해주자.

M-: (byte-recompile-directory package-user-dir nil 'force)

3.2 elisp으로 재설치하기

(defun package-reinstall-all-activated-packages ()
  "Refresh and reinstall all activated packages."
  (dolist (package-name package-activated-list)
    (when (package-installed-p package-name)
      (unless (ignore-errors                   ;some packages may fail to install
                (package-reinstall package-name))
        (warn "Package %s failed to reinstall" package-name)))))