로컬 패키지의 자동로드를 생성하고 활성화하는 방법은 무엇입니까?


9

모든 지역 / 맞춤형 / 개인용 패키지가 공식적으로 릴리스되는 것은 아니며, 기본 제공 패키지 관리 지원의 이점을 누리기 위해서는 어리석은 일입니다. 로컬 패키지의 자동로드를 생성하고 활성화하는 방법이 궁금합니다. 이는 package.elELPA에서 설치된 패키지의 방법과 유사합니다 . 휠을 재발 명하지 않으려면 일부 로컬 디렉토리 (각 서브 디렉토리가 로컬 / 사용자 정의 / 개인 패키지 임)가 ELPA 인 것으로 가장하는 방법이 있습니까? el-get예를 들어, 사용자 정의 레시피를 통해 이러한 시나리오를 지원할 수 있다면 개방적 입니다.

나는 그 일이 꽤 일반적이라고 확신하고 고급 수준에서 Emacs를 사용하는 사람은 조만간 그 시점에 도달합니다. 이 분야에서 경험을 공유 할 수있는 사람이 있습니까?


3
update-directory-autoloads모든 패키지 관리자와 독립적으로 사용할 수 있습니다.
npostavs 2006 년

@ npostavs, 알고 있지만 재귀 적이 지 않으며이 경우 포괄적 인 솔루션이 아닙니다. 확실히 충분하지 않으며 그것을 내 구현으로 포장해야합니다.
Alexander Shukaev

1. update-directory-autoloads실제로 디렉토리를 재귀 적으로 만들기 위해 디렉토리 목록 (예 : 디렉토리 및 그 하위 항목)을 제공 할 수 있습니다 . 2. update-file-autoloads디렉토리에 상관없이 관심있는 모든 파일에 사용할 수 있습니다 .
Drew

참고로, 비재 package.el귀적입니다 (즉, 서브 디렉토리에 소스가있는 패키지를 지원하지 않습니다).
npostavs

Linux에서 로컬 MELPA를 설정했습니다. 창문에 대한 좋은 해결책이 없습니다. emacs가이 유형의 것을 즉시 지원할 수 있기를 바랍니다. 사용 가능 패키지를 검사하여 가능한지 확인할 수 있습니다.
eflanigan00

답변:


7

올바른 솔루션 (IMO)은이 사용 사례를 명시 적으로 지원하는 패키지 관리자를 사용하는 것입니다. 이것은 straight.el내가이 목적으로 쓴 것입니다.

README 에서 다른 패키지 관리자와의 비교를 포함하여 자세한 설명서를 읽을 수 있으므로 straight.el특정 문제를 해결하는 데 사용할 수있는 방법을 고수하겠습니다 .

  1. 에 저장소를 배치하십시오 ~/.emacs.d/straight/repos/<my-repo>.
  2. 사용하여로드

    (straight-use-package '(<my-package> :local-repo "<my-repo>"))
    
  3. 끝났습니다. 소스 코드를 변경할 때마다 자동로드 생성 및 바이트 컴파일이 다시 수행됩니다 (다음 Emacs 시작시). 또한 종속성 관리, 선택적 버전 제어 자동화 등을 무료로 제공합니다.

  4. 패키지를 게시하려는 경우 패키지를 어딘가에 밀어 넣고 해당 Git 저장소를 가리 키도록 레시피를 수정하십시오.
  5. 원하는 경우 straight.el함께 사용할 수도 있습니다 use-package(대부분 구문 설탕 일뿐입니다).

3

Linux에서 다음을 수행합니다.

melpa를 복제하여 로컬 melpa 저장소를 설정했습니다.

로컬 패키지를 가리키고 자하는 레시피를 수정합니다. 다음은local-melpa/recipies/ace-window

(ace-window
  :url "/home/my_home/.emacs.d/packages/ace-window/"
  :fetcher git)

그런 다음 local-mepla 유형에서 make all또는 make recipies/ace-window패키지를 빌드하십시오.local-melpa/packages

그런 다음 make packages/archive-contents패키지 목록을 채 웁니다.

그런 다음 emacs에게 내 로컬 멜파를 사용하도록 알리기 위해 다음을 사용하십시오.

(setq package-archives '(("local-melpa" . "~/.emacs.d/packages/local-melpa/packages/")))

나는 make창문 에서 실행하는 방법을 알지 못했습니다 . 그러나 local-melpaLinux 에서 패키지를 빌드하고 Windows로 복사하면 emacs가 패키지를 이해하고 올바르게 설치합니다.

이것의 장점은 ~/.emacs.d/elpa/*디렉토리 를 삭제 하고 패키지에 사용자 정의 업데이트를 설치 하여 언제든지 원할 때 재설정 할 수 있다는 것 입니다.


아마도 quelpa 도 관심이 있습니까?
npostavs

나는 네가 옳은 npostavs라고 생각한다. 나는 앉아서 그것을 봐야한다.
eflanigan00

2

이미 설치된 패키지를 다른 버전으로 교체했는데 누락 된 항목이 자동로드 파일 인 경우 package-generate-autoloads를 사용하여 패키지를 생성 할 수 있습니다.

(package-generate-autoloads "async" "~/.emacs.d/elpa/async-1.9.3/")

패키지를 이전 버전으로 다운 그레이드해야 할 때 update-directory-autotools를 사용하는 것이 더 쉽다는 것을 알았습니다.

실제로 나는 당신의 질문에 실제로 대답하지 않았다고 생각합니다. 나는이 답변을 당분간 여기에 남겨 둘 것이지만 내 대답은 여기 더 관련이 있습니다 : https : //.com/questions/26348561/how-to-generate-autoloads-for-elpa-packages/50100170

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.