Bagaimana saya bisa mengatur server ELPA?


15

Seorang teman dan saya ingin mulai menulis paket emacs khusus untuk digunakan di perusahaan kami. (Percayalah, tidak ada yang kami tulis akan menarik bagi siapa pun di luar - ini integrasi dengan alat internal.)

Kami ingin membuat instalasi dan pemeliharaan paket semudah mungkin dan kami pikir ini berarti integrasi dengan package.el. Apa yang perlu kita lakukan untuk mengatur repositori untuk penggunaan seperti itu?


Saya akan membayar MELPA dan menulis resep untuk paket Anda! Atau, sediakan hanya resep dan arahkan rekan kerja Anda ke QUELPA.
lunaryorn

Jawaban:


18

Saya mengatur arsip paket lokal (Emacs 24.5) menggunakan package.eldengan terlebih dahulu membuat dua direktori, pkgsdan local. (Nama tidak masalah.) File-file yang terdiri dari paket Anda masuk pkgs, dan localpada akhirnya akan menyimpan arsip Anda. Jika Anda ingin membuat arsip tersedia untuk orang lain, Anda dapat mengekspos localmenggunakan server web, tetapi prosesnya sama dengan membangun arsip lokal.

Saya menaruh yang berikut ini di init.elfile saya :

(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)

Saya meletakkan arsip saya di .emacs.ddirektori saya (karena itu user-emacs-directorydalam expand-file-namebentuk) tetapi Anda dapat meletakkannya di mana saja Anda suka.

Setelah ini dievaluasi, jalankan M-x package-upload-filedan masukkan nama file paket Anda untuk diinstal. Ini akan menghasilkan paket baru di local. Anda akan melihat tiga file baru di sana, archive-contents, yourpackagename-version.el, dan yourpackagename-readme.txt. Sekarang Anda harus dapat melakukan M-x package-list-packagesdan melihat paket Anda terdaftar. Jika beruntung, mereka akan berada di puncak bertanda "baru". Anda dapat menginstal paket seperti biasa, dan Anda akan melihatnya muncul di .emacs.d/elpadirektori Anda sama seperti paket lainnya.

Ini seharusnya bekerja di luar kotak untuk Emacs 24. Saya tidak yakin tentang versi sebelumnya. Pengguna Anda dapat mengakses paket Anda dengan cara biasa dengan memasukkan

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

dalam init.elfile mereka .

Untuk informasi tentang cara menulis paket, lihat Mempersiapkan kode Lisp untuk distribusi dalam manual GNU Emacs Lisp.


Terima kasih! Ini adalah jawaban yang ditulis dengan sangat baik dan itu bekerja dengan baik untuk saya. Saya hanya punya satu pertanyaan .. ketika saya melakukannya M-x package-update-file, itu menempatkan .elfile langsung di bawah local/dir. Apakah ada cara untuk membuat subdirektori untuk setiap paket sehingga kita berakhir dengan local/pkg1/pkg1.el, local/pkg2/pkg2.el, ...?
Kaushal Modi

Tidak sepengetahuan saya. The elpadirektori mengatur cara Anda menjelaskan. Saya benar-benar tidak tahu mengapa localtidak. Ingatlah bahwa file-file ini dihasilkan secara otomatis, jadi tidak ada yang benar-benar harus melihatnya. Saya menyimpan file saya di bawah kontrol versi dengan git, dan meletakkan localdirektori saya .gitignoreuntuk alasan itu. Saya menjaga pkgsdirektori saya terorganisir dengan baik, dan di bawah kontrol versi, tetapi localmemang seperti itu.
Rodney Harga

Terima kasih. Jadi untuk mengonfirmasi, semua file akan dibuang dalam hierarki datar di Anda local/juga? Saya ingin pengaturan hierarkis sehingga saya dapat menentukan data meta URL paket ;; URL: http://yourdomain.com/path-to-local-dir/pkg1, dan seterusnya untuk paket yang berbeda. Tapi itu bukan masalah besar. Saya lebih senang menerbitkan paket saya di elpa lokal. :)
Kaushal Modi

1
Punyaku juga datar. Saya tidak akan mengarahkan pengguna Anda ke localdirektori itu. Arahkan mereka ke sumber asli sebagai gantinya.
Rodney Harga

Ini bagus! Tetapi ketika saya menggunakannya dengan file tar di windows, tar yang rusak diunggah dan saya harus menyalinnya lagi secara manual. Bug di Emacs? 24.5
fommil

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.