2012-12-13 2 views
42

저는 prelude를 기본 이맥스 설정으로 사용하고 있습니다. 패키지 관리자에서 패키지를 많이 설치했으며 다른 컴퓨터에서 설정을 사용하고 싶습니다.설치된 모든 패키지 목록을 Emacs 24에 저장하는 방법은 무엇입니까?

설치 한 패키지를 갖고 싶지 않고 수동으로 목록을 만들고 싶지 않습니다.

설치 한 모든 패키지를 prelude-package.el 또는 다른 파일에 저장하는 방법은 무엇입니까?이 구성을 다른 컴퓨터로 가져 가면 처음 사용할 때 자동으로 설치됩니다.

답변

59

변수 package-activated-list에서 현재 설치된 패키지 목록 (기본 제공 패키지 제외)을 얻을 수 있습니다. 자동 시작에 설치하려면이 질문을 참조하십시오 당신이 경우에 는 채널 V 패키지 활성화 목록이 값이 표시 복사, 구체적 how to automatically install emacs packages by specifying a list of package names?

, 그리고 prelude-packages의 값으로 삽입, 이맥스는 자동으로 보장합니다 해당 패키지는 시작시 설치됩니다.

+0

오 이런 멋진 일입니다. – uchuugaka

+0

패키지 활성화 목록은 패키지를 제거하여 업데이트되지 않지만 다시 시작될 때만 나타납니다. – uchuugaka

11

정식 방법론이 가장 좋습니다 (ataylor에 의해 설명 됨). 여기에 더 서투른 방법이 있습니다.

M-x 목록 패키지. C-s는 설치된 패키지의 첫 번째 행을 찾을 때까지으로 설치됩니다. C-SPC으로 선택하십시오. 붙박이 포장을 도달 할 때까지 내려가십시오. M-w으로 복사하십시오. 새 버퍼 용 C-x b으로 붙여 넣기 C-y. C-x C-s은 파일을 저장합니다.

내가 볼 수있는 이점은 이것이 좀 더 설명력이있는 것입니다. 패키지에 대한 간단한 설명 표시. 일부 패키지를 설치하고 잊어 버릴 때 유용합니다.

+0

예 -'package-activated-list'보다 약간 더 자세한 설명을 추가했습니다. –

1

how to automatically install emacs packages by specifying a list of package names?에서 언급했듯이 필요한 패키지 버전을 기록하는 것이 좋습니다.

(defun list-packages-and-versions() 
    "Returns a list of all installed packages and their versions" 
    (mapcar 
    (lambda (pkg) 
    `(,pkg ,(package-desc-version 
       (cadr (assq pkg package-alist))))) 
    package-activated-list)) 

당신에게 (NAME VERSION)쌍 목록을 제공합니다 :이를 위해 다음과 같은 기능을 사용할 수 있습니다. 불행히도 특정 버전의 패키지를 설치하는 방법을 찾지 못했습니다. package.el은 항상 최신 정보를 수집합니다. 내가 지금하고 있어요 것은 :

(defun install-packages-with-specific-versions (package-version-list) 
    "Install the packages in the given list with specific versions. 
PACKAGE-VERSION-LIST should be a list of (NAME VERSION) lists, 
where NAME is a symbol identifying the package and VERSION is 
the minimum version to install." 
    (package-download-transaction 
    (package-compute-transaction() package-version-list))) 

나는 정확한 버전 번호와 일치하는 패키지를 설치하는 이상 기능을 작성했지만, 기본적으로 package.el는 각 패키지에 사용할 수있는 최신 버전을 검색하기 때문에 실패합니다. gist

관련 문제