GNU ELPA adalah repositori paket GNU Emacs resmi. Ini satu-satunya yang diaktifkan secara default, yang artinya memiliki jangkauan terbesar. Pada saat yang sama, mengirimkan paket ada sedikit kerumitan dan memerlukan penugasan hak cipta FSF, yang berarti ia memiliki pilihan paket yang relatif terbatas.
MELPA dan Marmalade keduanya adalah repositori paket pihak ketiga. Mereka tidak secara resmi didukung oleh GNU, tetapi juga memiliki banyak pilihan paket. Kualitas paket sedikit lebih bervariasi, tetapi Anda jauh lebih mungkin untuk menemukan apa pun yang Anda cari, terutama jika agak tidak jelas.
Marmalade dan MELPA memiliki model yang sedikit berbeda untuk pengunggah paket. Pemahaman saya adalah bahwa MELPA melacak repositori kontrol versi secara langsung (yaitu melalui GitHub), membiarkan pembuat paket memperbarui paket hanya dengan mendorong komit ke cabang. Marmalade, di sisi lain, meminta orang mengunggah paket ke repositori secara eksplisit.
Dalam praktiknya, saya belum melihat banyak perbedaan antara MELPA dan Marmalade. Tidak ada banyak kerugian untuk memungkinkan keduanya memiliki pilihan paket instalable terbesar yang mungkin: Saya telah menggunakan keduanya (dan GNU ELPA, tentu saja) untuk sementara waktu tanpa masalah yang berarti.
Satu kemungkinan kekhawatiran (yang belum saya temukan pada diri saya) dengan mengaktifkan kedua repositori, yang belum saya temui, adalah memiliki paket yang tersedia dari keduanya pada versi yang berbeda. Secara default, manajer paket ( package.el
) tidak memiliki cara untuk menyelesaikan konflik seperti ini; Namun, Anda dapat menyelesaikan ini dengan menginstal melpa
paket yang memungkinkan Anda menyesuaikan paket mana yang disediakan atau dikecualikan dari repositori mana. Anda dapat melihat detail lebih lanjut di sini atau dari dokumentasi untuk melpa
paket.
Seperti yang ditunjukkan oleh @Malabarba, masalah ini diselesaikan dalam Emacs 24.4.
Jika Anda benar-benar khawatir tentang keamanan, Anda mungkin ingin menghindari MELPA dan Marmalade karena mereka membiarkan siapa pun mengunggah paket dan, sejauh yang saya tahu, tidak memiliki pengaturan keamanan proaktif. Repositori GNU ELPA, di sisi lain, dikelola oleh FSF dan telah menandatangani paket yang akan membantu. Tentu saja, jika keamanan sangat penting, Anda mungkin ingin meninjau dan menginstal paket-paket elisp dengan tangan alih-alih menggunakan manajer paket.
Cara saya berpikir tentang itu, beberapa repo memiliki lebih banyak overhead yang terlibat dengan mengirimkan paket daripada yang lain; repo dengan overhead yang lebih banyak cenderung memiliki lebih sedikit paket. Agar dari biaya overhead paling rendah:
Secara pribadi saya pikir MELPA Stable atau Marmalade mungkin akan menang dalam jangka panjang bagi sebagian besar pengguna — MELPA yang tepat sangat tidak stabil dan ELPA terlalu ketat untuk benar-benar dapat diskalakan untuk banyak paket. Tapi itu hanya pendapat saja.
sumber
Ada beberapa repositori paket yang tersedia.
Resmi
GNU ELPA adalah repo paket resmi. Ini kecil, dan membutuhkan penugasan hak cipta (dari semua penulis paket) ke FSF untuk berkontribusi padanya.
Paket-paket pada GNU ELPA benar-benar hanya repo git . Keuntungan dari di-host di sini adalah bahwa tim inti mencoba memperbarui paket jika Emacs sendiri menambah atau mengurangi fitur.
Dibangun dari sumber
MELPA adalah repo paket terbesar dan paling cepat berkembang . Ini merilis versi baru setiap kali versi baru didorong ke repo, atau halaman EmacsWiki diperbarui.
Ini ujung yang berdarah, tetapi bekerja dengan sangat baik dalam praktik. MELPA dikuratori untuk menghindari paket duplikat, dan untuk memastikan bahwa rumah kanonik paket dicatat (bukan garpu acak).
MELPA memang memiliki masalah bahwa versi hanya cap waktu, misalnya
my-package-20131231.2359
. Ini berarti jika Anda bergantung pada paket saya:maka Emacs akan berpikir bahwa versi apa pun pada MELPA cukup baru.
MELPA Stable sama dengan MELPA, tetapi daripada menggunakan versi datestamp, ia menggunakan versi dalam tag git. Ini memungkinkan resolusi ketergantungan yang lebih baik, tetapi memiliki masalah dengan bergantung pada paket wiki .
Unggahan pengguna
Marmalade jauh lebih mirip dengan repositori tradisional dari bahasa pemrograman lain. Pengembang paket mengunggah paket ke Marmalade ketika mereka melakukan rilis.
Pada prinsipnya, ini memberikan paket proses rilis yang tepat (Marmalade mendahului MELPA stable) dan juga menghindari masalah nomor versi yang di-autogenerasi. Namun, tidak ada verifikasi identitas. Siapa pun dapat mengunggah paket, bahkan jika mereka tidak menulisnya. Ini menjadi sulit jika pengelola
my-package
menemukan bahwa orang lain mengunggahmy-package
dan selanjutnya tidak dapat mengunggah versi baru.Marmalade dulunya adalah aplikasi node.js, dan sekarang ditulis dalam elisp. Kedua versi terkadang mengalami masalah waktu aktif.
Khusus proyek
Org-mode ELPA adalah repo yang hanya menampung
org
danorg-plus-contrib
. Org-mode adalah bagian dari inti Emacs, tetapi itu dikembangkan secara eksternal dan kode hanya disinkronkan dengan batang Emacs secara berkala. Repo ini memungkinkan Anda memiliki mode org yang berdarah.User42 ELPA adalah repo untuk pengembang paket tunggal yang telah merilis cukup banyak paket Emacs . Jika Anda menyukai salah satu paketnya, Anda dapat menambahkan repo ini.
Sunrise Commander ELPA adalah repo untuk ekstensi untuk Sunrise Commander (paket Emacs untuk penelusuran file, terinspirasi oleh komandan tengah malam).
Pensiunan
ELPA Tromey adalah repo pertama yang didirikan. Secara resmi diganti dengan GNU ELPA, tetapi tidak memiliki persyaratan penugasan hak cipta yang sama. Pada 2010, tidak lagi diperbarui.
Arsip paket Elpy berisi berbagai paket yang dikembangkan oleh Jorgen Schaefer untuk 'Elpy, the Emacs Python Development Environment' , tetapi itu telah bermigrasi ke MELPA Stable.
sumber
no one has mentioned the risks involved in using github, a commercial provider of web based software, as a backend
: tapi saya yakin kekhawatiran itu akan hilang sekarang karena itu Microsoft GitHub;-)
Beberapa info tambahan, untuk melengkapi jawaban lain di sini.
Beberapa info tentang MELPA dan MELPA "stable" -
Mulailah dengan melihat pertanyaan duplikat yang cukup banyak ini , dari StackOverflow, termasuk komentar untuk pertanyaan itu sendiri. Secara khusus, komentar ini yang saya posting, setelah bertukar email dengan Donald Curtis (pengelola MELPA dan MELPA stable):
Singkatnya, tidak ada yang secara inheren lebih "stabil" tentang konten pada "MELPA stable" . Metode penomoran versi dan umpan bisa berbeda; itu saja. Dan jika pengelola paket tertentu ingin membedakan versi "stabil" dari versi "pengembangan", dan ingin melakukannya dengan mengunggahnya ke dua situs yang berbeda, maka itulah efeknya - untuk paket itu .
Satu perbedaan antara MELPA dan Marmalade (dan GNU ELPA) adalah bahwa tidak diperlukan bahwa kode yang berkontribusi pada MELPA bersumber dari repositori git. Secara khusus, ini dapat ditarik secara otomatis dari Area Elisp di Emacs Wiki .
Apakah itu berarti, seperti yang dikatakan beberapa orang, bahwa siapa pun dapat mengunggah apa pun, dan Anda tidak memiliki cara untuk mengetahui apakah kode tersebut sebenarnya oleh penulis yang diklaim, dll? Iya dan tidak. Secara umum, ya: siapa pun bebas mengunggah kode Elisp ke Emacs Wiki. Seperti yang dikatakan bagian atas halaman Area-Elisp:
Namun, supaya Anda tahu, saya adalah administrator wiki, dan perpustakaan Lisp saya sendiri di Area Elisp wiki adalah halaman yang dikunci. Itu berarti bahwa hanya administrator wiki yang dapat mengunggahnya. Jadi dalam hal ini, Anda dapat yakin bahwa perpustakaan saya yang Anda unduh dari MELPA atau Emacs Wiki diunggah oleh saya. Seperti halnya semua yang ada di Internet, tidak ada jaminan yang pasti, seperti halnya tidak ada jaminan dengan kode itu sendiri. Seperti yang dikatakan oleh GPL di setiap perpustakaan GPL:
HTH. Selamat melakukan peretasan.
sumber