ELPA 서버를 어떻게 설정합니까?


15

친구와 저는 회사에서 사용하기위한 emacs 패키지 작성을 시작하고 싶습니다. (신뢰할 수있는 것은 외부 도구를 사용하는 사람에게는 큰 도움이되지 않습니다. 내부 도구와의 통합입니다.)

우리는 패키지 설치 및 유지 보수를 가능한 한 쉽게 만들고 싶습니다 package.el. 그러한 용도로 저장소를 설정하려면 어떻게해야합니까?


MELPA를 포크하고 패키지를위한 레시피를 작성하겠습니다! 또는 레시피 만 제공하고 동료가 QUELPA를 가리 키도록하십시오.
lunaryorn

답변:


18

내가 사용하여 로컬 패키지 아카이브 (이맥스 24.5) 설정 package.el처음 두 디렉토리를 만들어을 pkgs하고 local. (이름은 중요하지 않습니다.) 패키지를 포함하는 파일의 이동 pkgslocal보관을 잡고 끝날 것입니다. 다른 사용자가 아카이브를 사용할 수있게하려면 local웹 서버를 사용하여 노출 할 수 있지만 프로세스는 로컬 아카이브를 빌드하는 것과 동일합니다.

나는 내 init.el파일에 다음을 넣었다 .

(require 'package)
(setq package-enable-at-startup nil)

(require 'package-x)
(defvar local-archive
  (expand-file-name "local/" user-emacs-directory)
  "Location of the package archive.")
(setq package-archive-upload-base local-archive)
(add-to-list 'package-archives `("local" . ,local-archive) t)

(package-initialize)

나는 내 아카이브를 넣어 .emacs.d디렉토리 (따라서 user-emacs-directory에서 expand-file-name양식)하지만 당신은 같은 어디서나 그것을 넣을 수 있습니다.

이것이 평가되면 실행할 M-x package-upload-file패키지의 파일 이름을 실행 하고 입력하십시오. 에 새 패키지가 생성됩니다 local. 거기 archive-contentsyourpackagename-version.el,, 및 세 개의 새 파일이 표시됩니다 yourpackagename-readme.txt. 이제 M-x package-list-packages패키지를 작성하고 볼 수 있어야합니다 . 운이 좋으면 "새"라고 표시된 최상위에있게됩니다. 평소와 같이 패키지를 설치할 수 있으며 .emacs.d/elpa다른 패키지와 마찬가지로 디렉토리에 표시됩니다 .

이것은 Emacs 24에서 즉시 작동합니다. 이전 버전에 대해서는 잘 모르겠습니다. 사용자는 다음을 포함하여 일반적인 방식으로 패키지에 액세스 할 수 있습니다

(require 'package)
(setq package-enable-at-startup nil)
(add-to-list 'package-archives 
  '("archive" . "http://yourdomain.com/path-to-local-dir/"))
(package-initialize)

그들의 init.el파일에.

패키지를 작성하는 방법에 대한 자세한 내용 은 GNU Emacs Lisp 매뉴얼에서 배포 할 Lisp 코드 준비를 참조하십시오 .


감사! 이것은 매우 잘 작성된 답변이며 나를 위해 잘 작동했습니다. 하나의 질문이 있습니다.. 할 때 파일을 dir 바로 아래에 M-x package-update-file넣습니다 . 우리가 결국 그렇게하는 각 패키지의 하위 디렉토리를 만들 수있는 방법이 있나요 , ...? .ellocal/local/pkg1/pkg1.ellocal/pkg2/pkg2.el
Kaushal Modi

내 지식이 아닙니다. elpa디렉토리는 당신이 설명하는 방법을 설정합니다. 나는 왜 그렇지 않은지 정말로 모른다 local. 이러한 파일은 자동으로 생성되므로 아무도 실제로 볼 필요가 없습니다. git을 사용하여 파일을 버전 제어 상태로 유지하고 그 이유로 내 local디렉토리를 넣 .gitignore습니다. 나는 pkgs디렉토리를 멋지게 정리하고 버전 관리하에 있지만 local그게 그대로입니다.
Rodney 가격

감사. 확인하기 위해 모든 파일이 플랫 계층 구조로 덤프 local/됩니까? ;; URL: http://yourdomain.com/path-to-local-dir/pkg1다른 패키지에 대해 패키지의 URL 메타 데이터 등을 지정할 수 있도록 계층 적 배열을 원했습니다 . 그러나 큰 문제는 아닙니다. 로컬 엘파에 패키지를 게시하는 것이 더 기쁩니다. :)
Kaushal Modi

1
광산도 평평합니다. local어쨌든 귀하의 사용자가 해당 디렉토리 를 가리 키지 않을 것 입니다. 대신 원래 소스를 가리 킵니다.
Rodney 가격

대단해! 그러나 Windows에서 tar 파일과 함께 사용하면 손상된 tar가 업로드되고 수동으로 다시 복사해야합니다. 이맥스의 버그? 24.5
fommil

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