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


15

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

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


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

답변:


18

내가 사용하여 로컬 패키지 아카이브 (이맥스 24.5) 설정 package.el처음 두 디렉토리를 만들어을 pkgs하고 local. (이름은 중요하지 않습니다.) 패키지를 포함하는 파일의 이동 pkgs및 local보관을 잡고 끝날 것입니다. 다른 사용자가 아카이브를 사용할 수있게하려면 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-contents에 yourpackagename-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.