답변:
내가 사용하여 로컬 패키지 아카이브 (이맥스 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 코드 준비를 참조하십시오 .
M-x package-update-file넣습니다 . 우리가 결국 그렇게하는 각 패키지의 하위 디렉토리를 만들 수있는 방법이 있나요 , ...? .ellocal/local/pkg1/pkg1.ellocal/pkg2/pkg2.el
elpa디렉토리는 당신이 설명하는 방법을 설정합니다. 나는 왜 그렇지 않은지 정말로 모른다 local. 이러한 파일은 자동으로 생성되므로 아무도 실제로 볼 필요가 없습니다. git을 사용하여 파일을 버전 제어 상태로 유지하고 그 이유로 내 local디렉토리를 넣 .gitignore습니다. 나는 pkgs디렉토리를 멋지게 정리하고 버전 관리하에 있지만 local그게 그대로입니다.
local/됩니까? ;; URL: http://yourdomain.com/path-to-local-dir/pkg1다른 패키지에 대해 패키지의 URL 메타 데이터 등을 지정할 수 있도록 계층 적 배열을 원했습니다 . 그러나 큰 문제는 아닙니다. 로컬 엘파에 패키지를 게시하는 것이 더 기쁩니다. :)
local어쨌든 귀하의 사용자가 해당 디렉토리 를 가리 키지 않을 것 입니다. 대신 원래 소스를 가리 킵니다.
MELPA와 같은 것을 호스팅하려면 MELPA 위키에서 자신의 MELPA 인스턴스를 호스팅하는 방법에 대한 지침을 찾을 수 있습니다.
https://github.com/melpa/melpa/wiki/Custom-Melpa-Archive
본질적으로 다음과 같이 요약됩니다.
recipes/디렉토리 에서 기존 레시피를 모두 삭제하십시오.make.