설치된 Emacs 패키지를 내 보냅니 까?


10

이맥스 24.4를 사용하고 있습니다. 약 1 년 동안 Mx list-packages 지시문을 통해 많은 수의 설치된 패키지를 추가했습니다. 다른 곳에서 사용하기 위해 설치된 패키지 목록을 내보내고 싶습니다. 내 .emacs를 복사하면 시작시 오류가 발생하여 특정 항목을 설치하기 위해 메모리가 부족합니다. .emacs.d를 복사 할 수 있다고 생각하지만 나쁜 생각 인 것 같습니다.

설치된 패키지 목록을 외부 시스템에 쉽게 가져올 수있는 파일로 덤프하기 위해 발행 할 수있는 절차 나 지시문이 있습니까?



1
.emacs.d일반적으로 디렉토리를 복사 하거나 버전 관리하에 두는 것이 좋습니다. (이 이름을 변경하는 것이 합리적이다 ~/.emacs~/.emacs.d/init.el이 작업을 수행하기로 결정한 경우.)
필리스

답변:


5

이 디렉토리 ~/.emacs.d/elpa에는로 설치된 모든 패키지가 포함되어 있습니다 list-packages. 이 디렉토리를 복사 할 수 있습니다.

나는 아마도 Emacs 버전간에 바이트 컴파일 된 파일의 일부 비 호환성이 있다고 생각하기 때문에 모든 것을 바이트 재 컴파일 하는 것과 같은 (byte-recompile-directory "~/.emacs.d/elpa" 0 t)( 아마도 0묻지 말고, t강제 재 컴파일을 의미 함) 같은 것을 실행할 것 입니다.


이 질문을 한 이후이 전략을 여러 번 사용했습니다. 입력 주셔서 감사합니다.
sanimalp

4

package.el파일을 살펴보고 변수를 찾았습니다 package-alist. 이것은 설치 한 패키지에 필요한 패키지를 포함하여 설치된 모든 패키지의 목록 인 것 같습니다.

패키지 이름 목록 만 설치하면 다음 코드는이 목록의 패키지 이름을 *Messages*버퍼에 기록합니다.

(dolist (p1 (sort (mapcar 'symbol-name (mapcar 'car package-alist)) 'string<))
  (message "%s" p1))

나는 Lisp 프로그래머가 아니므로 누군가 가이 코드의 훨씬 더 나은 버전을 작성할 수 있다고 확신합니다.

또한 모든 패키지를 새 PC에 설치하기 위해 사용 패키지 코드를 :ensure t옵션 과 함께 사용 하기 시작했습니다 .


2

패키지를 아직 설치하지 않은 경우 설치하는 한 가지 방법은 init 파일을 업데이트하고 해당 행을 추가해야합니다.

(defvar my-packages
  '(color-theme db-pg db kv magit-push-remote magit-tramp
                magit git-rebase-mode git-commit-mode pg
                pretty-lambdada projectile pkg-info epl dash
                python-mode rich-minority s yasnippet yasnippet-bundle
                use-package key-chord undo-tree guide-key move-text
                openwith ack ag aggressive-indent nginx-mode multiple-cursors
                smartparens with-editor haskell-mode)
  "A list of packages to ensure are installed at launch.")

(defun my-packages-installed-p ()
  (loop for p in my-packages
        when (not (package-installed-p p)) do (return nil)
        finally (return t)))

(unless (my-packages-installed-p)
  ;; check for new packages (package versions)                                  
  (package-refresh-contents)
  ;; install the missing packages                                                                               
  (dolist (p my-packages)
    (when (not (package-installed-p p))
      (package-install p))))

my-packages변수를 수정하고 설치하려는 패키지를 추가 / 제거하십시오. M-x describe-variable package-activated-list현재 설치된 패키지 목록을 제공합니다.

그 후에 공유 할 수있는 유일한 것은 init 파일입니다. 도움이 되길 바랍니다.


죄송합니다. 목록을 덤프하는 방법에 대한 답변을 보았습니다. 아마도 당신의 대답에서 더 두드러 져야합니까?
verdammelt
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.