ELPA sunucusunu nasıl kurabilirim?


15

Bir arkadaşım ve ben şirketimizde kullanılmak üzere özel emacs paketleri yazmaya başlamak istiyoruz. (Güven bana, yazdığımız hiçbir şey dışarıdaki herkes için çok ilgi çekici olmayacak - dahili araçlarla entegrasyon.)

Paket kurulumunu ve bakımını mümkün olduğunca kolaylaştırmak istiyoruz ve bunun entegrasyon anlamına geldiğini düşünüyoruz package.el. Bu tür bir kullanım için bir havuz oluşturmak için ne yapmamız gerekiyor?


MELPA'yı çatalla ve paketleriniz için tarifler yazardım! Alternatif olarak, sadece tarifleri sağlayın ve iş arkadaşlarınızı QUELPA'ya yönlendirin.
lunaryorn

Yanıtlar:


18

package.elİlk olarak iki dizin oluşturarak kullanarak yerel bir paket arşivi (Emacs 24.5) kurdum pkgsve local. (İsimler önemli değil.) Paketlerinizi içeren dosyalar gitmek pkgsve localarşivinizi tutan sona erecek. Bir arşivi başkaları tarafından kullanılabilir yapmak istiyorsanız, localbir web sunucusu kullanarak açığa çıkarabilirsiniz , ancak işlem yerel bir arşiv oluşturmakla aynıdır.

Dosyama aşağıdakileri koydum 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)

Benim benim arşiv koymak .emacs.ddizinde (dolayısıyla user-emacs-directoryiçinde expand-file-nameformu) ancak sizin gibi her yerde koyabilirsiniz.

Bu değerlendirildikten sonra, M-x package-upload-fileyüklenecek paketinizin dosya adını yürütün ve girin. Bu, içinde yeni bir paket oluşturur local. Orada üç yeni dosyalara bakın edecek archive-contents, yourpackagename-version.elve yourpackagename-readme.txt. Şimdi M-x package-list-packagespaketinizi yapabilmeli ve görebilmelisiniz. Şansla, en üstte "yeni" olarak işaretlenirler. Paketi her zamanki gibi yükleyebilirsiniz ve .emacs.d/elpadizininizde diğer paketler gibi göründüğünü göreceksiniz .

Bu Emacs 24 için kutudan çıkarılmalıdır. Önceki sürümlerden emin değilim. Kullanıcılarınız pakete her zamanki gibi şunları ekleyerek erişebilir:

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

Onların içinde init.eldosyaya.

Paket yazma hakkında bilgi için GNU Emacs Lisp kılavuzundaki Lisp kodunu dağıtım için hazırlama konusuna bakın .


Teşekkürler! Bu çok iyi yazılmış bir cevap ve benim için iyi çalıştı. Sadece bir sorum var .. bunu yaptığımda M-x package-update-file, .eldosyayı doğrudan local/dir altına koyar . Biz ile bitirmek böylece her paket için bir alt dizin oluşturmak için bir yolu var mı local/pkg1/pkg1.el, local/pkg2/pkg2.el...?
Kaushal Modi

Bildiğim kadarıyla değil. elpaDizin açıkladığınız şekilde ayarlandı. Neden olmadığını gerçekten bilmiyorum local. Bu dosyaların otomatik olarak oluşturulduğunu unutmayın, bu yüzden hiç kimse onlara bakmak zorunda değildir. Git ile dosyalarımı sürüm kontrolü altında tutuyorum ve bu nedenle localdizinimi yerleştiriyorum .gitignore. Benim tutmak pkgsgüzel organize dizini ve sürüm kontrolü altında ama localneyse odur.
Rodney Fiyatı

Teşekkürler. Onaylamak için, tüm dosyalar sizin için düz bir hiyerarşiye dökülüyor local/mu? Hiyerarşik düzenlemeyi istedim, böylece paketin URL meta verilerini ;; URL: http://yourdomain.com/path-to-local-dir/pkg1farklı paketler gibi tanımlayabilirim . Ama önemli değil. Paketlerimi yerel bir elpada yayınlamaktan daha heyecanlıyım. :)
Kaushal Modi

1
Benim de düz. Kullanıcılarınızı localzaten bu dizine yönlendirmem. Bunları orijinal kaynağa yönlendirin.
Rodney Price

Bu harika! Ancak pencerelerde katran dosyalarıyla kullandığımda, kırık bir katran yüklenir ve tekrar elle kopyalamalıyım. Emacs hata? 24.5
fommil

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.