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?

Sean Allred
sumber
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.

Harga Rodney
sumber
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
1

Jika Anda ingin meng-host sesuatu seperti MELPA, Anda dapat menemukan instruksi pada wiki MELPA tentang cara meng-host instance MELPA Anda sendiri:

https://github.com/melpa/melpa/wiki/Custom-Melpa-Archive

Intinya, intinya adalah:

  1. Fork / klon repositori MELPA GitHub
  2. Hapus semua resep yang ada dari recipes/direktori
  3. Tambahkan resep Anda sendiri
  4. Lari make.
Vladimir Panteleev
sumber