Ini selalu membingungkan saya, karena orang-orang mengatakan bahwa MELPA memang memiliki versi paket yang lebih baru, tetapi tidak benar-benar jelas, apakah GNU ELPA hanyalah sebagian dari MELPA, atau jika saya membutuhkan keduanya?
Alasan mengapa saya bertanya adalah bahwa saya banyak bereksperimen dengan paket saya, dan package-list-packages
memakan waktu cukup lama. Saya sadar package-list-packages-no-fetch
, tetapi lebih sering saya tidak ingin mendapatkan daftar paket terbaru.
Jadi pertanyaannya adalah, bisakah saya menggunakan MELPA dan mendapatkan paket yang sama (dan mungkin versi yang lebih baru) seolah-olah saya menggunakan MELPA dan GNU ELPA?
package
package-repositories
Jakub Arnold
sumber
sumber
Jawaban:
Pertama-tama, ELPA adalah nama spesifikasi, Arsip Paket Emacs Lisp. Ada tiga implementasi spesifikasi yang dikenal luas, GNU ELPA, Marmalade dan MELPA.
GNU ELPA adalah arsip resmi GNU Emacs, diaktifkan di luar kotak untuk instalasi Emacs yang cukup baru. Relatif kecil, berkontribusi untuk itu membutuhkan penugasan hak cipta dan bekerja sama dengan milis resmi. Ini adalah hal terdekat yang kami miliki dengan pemeriksaan yang sebanding dengan arsip paket distribusi Linux.
Marmalade adalah arsip tidak resmi dengan sejumlah besar paket versi. Penulis dan pengelola perlu mengunggah rilis mereka secara manual ke sana. Pemeriksaan dilakukan sekali untuk setiap anggota baru sebelum memungkinkan mereka untuk memiliki akun pengguna, setelah itu selesai, mereka bebas untuk melepaskan sesuai keinginan.
MELPA adalah arsip tidak resmi lainnya dengan jumlah paket terbesar. Setiap paket secara singkat diperiksa untuk gaya kode dengan permintaan tariknya untuk dimasukkan, setelah itu paket secara otomatis dibangun dari sumber mereka (biasanya VCS). Rebuild dapat terjadi setiap jam. Ada juga MELPA stable yang hanya membuat rilis yang ditandai, tetapi memiliki paket yang jauh lebih sedikit, bahkan lebih sedikit daripada Marmalade.
Adapun tumpang tindih, praktis tidak ada tumpang tindih antara GNU ELPA dan Marmalade, dan juga untuk GNU ELPA dan MELPA. Namun Marmalade dan MELPA tumpang tindih dengan jumlah yang wajar. Saya memperkirakan bahwa sebagian besar Marmalade adalah bagian dari MELPA. Itu sebabnya Anda bisa menggunakan MELPA untuk sebagian besar paket dan mungkin GNU ELPA untuk beberapa paket yang hilang.
Pembaruan : Menurut statistik paket malabarba, MELPA Stable memang melampaui Marmalade dalam sejumlah paket yang tersedia. Saya akan mengambilnya dari Marmalade sekarang.
Pembaruan : Marmalade pada dasarnya sudah mati. Sertifikat telah kedaluwarsa dan hampir tidak ada paket baru yang diunggah. Ini karena prosesnya yang agak tidak biasa, Anda harus secara manual ditambahkan ke pengguna oleh pemiliknya dan karena ia hilang, tidak ada pengguna baru yang ditambahkan sejak 2016 atau lebih.
sumber
package-archives
dan perbarui indeks, seperti menggunakanM-x package-refresh-contents
.M-x list-packages
harus menampilkan daftar yang berbeda dari sebelumnya.Tidak, Anda mungkin tidak membutuhkan GNU ELPA atau ELPA apa pun.
Alasan praktis untuk tidak menggunakan GNU ELPA atau repositori pihak ketiga adalah untuk melindungi Emacs saya dari penutupan ELPA. Shutdown memang terjadi dari waktu ke waktu (lihat https://www.reddit.com/r/emacs/search/?q=elpa%20down&restrict_sr=1 )
Sebagian besar paket saya diunduh dari https // melpa.org, saya bisa menghindari GNU ELPA dengan membuat mirror paket lokal kecil dari paket GNU ELPA terpilih.
Periksa pengaturan saya di
https://github.com/redguardtoo/emacs.d/blob/master/lisp/init-elpa.el
, GNU ELPA tidak digunakan.Jika saya harus menggunakan beberapa paket GNU ELPA saja, saya lebih suka membuat ELPA lokal saya sendiri (semudah membuat file teks
archive-contents
), Periksa saya~/.emacs.d/localelpa
.Sebagai contoh,
seq-2.20.tar
hanya ada di GNU ELPA dan saya membutuhkannya. Jadi saya menambahkan paket ini ke elpa lokal saya dihttps://github.com/redguardtoo/emacs.d/tree/master/localelpa
Saat ini saya hanya menggunakan empat paket dari GNU ELPA,
Paket-paket ini ditempatkan di saya
localelpa
jadi saya tidak perlu mengakses GNU ELPA.Anda juga dapat memeriksa paket saya https://github.com/redguardtoo/elpa-mirror yang membuat repositori lokal dari paket yang diinstal. Bahkan repositori jarak jauh (GNU ELPA, MELPA) adalah opsional sekarang.
Anda juga dapat menggunakan paket sumber dan bukan yang diunduh. Silakan periksa https://github.com/redguardtoo/emacs.d/tree/master/site-lisp .
rainbow-mode
, Anda perlu memahami apaload-path
( http://emacswiki.org/emacs/LoadPath ) jika Anda menggunakan sumber.Anda juga dapat memberi saran
package--add-to-archive-contents
untuk mengubah paket sebelum ditampilkan di manajer paket. Ini adalah jenis peretasan yang tidak berdokumen. Ini bekerja dari Emacs 23.4 ke Emacs 27. Lihatinit-elpa.el
misalnya.sumber