Apakah saya masih membutuhkan GNU ELPA jika saya memiliki MELPA?


31

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-packagesmemakan 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?


5
Ya, Anda akan selalu membutuhkan GNU Elpa.
Malabarba

Jawaban:


45

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.


Kedengarannya seperti Melpa + Gnu Elpa, dan tidak menggunakan Marmalade, adalah jalan yang harus ditempuh. Adakah cara mudah untuk mengonversi?
justingordon

Cukup sesuaikan package-archivesdan perbarui indeks, seperti menggunakan M-x package-refresh-contents. M-x list-packagesharus menampilkan daftar yang berbeda dari sebelumnya.
wasamasa

Sepertinya statistik paket malarbaba macet pada Desember 2015 ...
JeanPierre

Saya telah menambahkan satu pembaruan lagi karena Marmalade sudah mati
wasamasa

-5

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.tarhanya 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,

gnu-elpa-keyring-update-2019.3.tar
let-alist-1.0.5.el
seq-2.20.tar
undo-tree-20170706.246.tar

Paket-paket ini ditempatkan di saya localelpajadi 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 apa load-path( http://emacswiki.org/emacs/LoadPath ) jika Anda menggunakan sumber.

Anda juga dapat memberi saran package--add-to-archive-contentsuntuk mengubah paket sebelum ditampilkan di manajer paket. Ini adalah jenis peretasan yang tidak berdokumen. Ini bekerja dari Emacs 23.4 ke Emacs 27. Lihat init-elpa.elmisalnya.


7
Anda juga memerlukan GNU ELPA untuk paket-paket seperti Auctex, seq.el, let-alist, rainbow-mode, dll. Jadi saya hampir tidak berpendapat bahwa itu usang, alih-alih pentingnya semakin meningkat karena semakin banyak orang yang memasuki pengembangan Emacs dan berharap untuk mereka paket menjadi mudah tersedia untuk semua.
wasamasa

Saya memperbarui jawaban saya sedikit tentang masalah ini.
chen bin

@wasamasa bisa tolong jelaskan, mengapa sebenarnya saya perlu gnu elpa untuk paket seperti auctex?
toogley

1
@toogley Karena hanya tersedia di GNU ELPA, itu sebabnya.
wasamasa
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.