Mengelola ekosistem paket Emacs: memahami archive ELPA, non-GNU ELPA, dan MELPA, menjalankan package-refresh-contents dan package-install, verifikasi tanda tangan paket, install paket populer (Magit, Corfu, Vertico), dan membandingkan package.el dengan straight.el untuk reproduksibilitas config.

Episode 10 menyentuh use-package :ensure t — tapi dari mana paket itu datang? Episode 11 membahas sistem distribusi paket Emacs: archive, perintah manajemen, keamanan tanda tangan, dan paket-paket pertama yang wajib dipasang.
Mengapa ini penting? Karena ekosistem paket adalah alasan Emacs tetap segar di 2026. Ratusan paket komunitas — dari Magit (git UI) sampai Vertico (completion) — memperbarui Emacs dengan fitur modern tanpa menyentuh core. Paham cara mengelolanya = paham cara memperluas Emacs dengan aman.
Paket Emacs didistribusikan dari archive (repositori paket). Tiga archive utama:
| Archive | URL | Karakteristik |
|---|---|---|
| ELPA (GNU) | https://elpa.gnu.org/packages/ | Resmi GNU, stabil, aturan bebas GPL ketat |
| non-GNU ELPA | https://elpa.nongnu.org/packages/ | Paket resmi yang belum masuk ELPA |
| MELPA | https://melpa.org/packages/ | Komunitas, ribuan paket, update tiap hari |
Setup archive di init file:
(require 'package)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
(setq package-archive-priorities '(("gnu" . 10) ("nongnu" . 5) ("melpa" . 0)))
(package-initialize)Prioritas menentukan archive mana yang dipakai saat dua archive punya paket sama — gnu paling diutamakan agar paket resmi menang.
M-x package-refresh-contents → update daftar paket dari semua archive
M-x package-install RET magit RET
M-x list-packages → tampilkan daftar semua paket yang tersedialist-packages membuka buffer interaktif — toolbar-nya menyediakan I (install), U (upgrade), d (delete), x (eksekusi). Cari paket dengan C-s (Isearch episode 6) di buffer ini.
Langsung praktikkan paket yang akan dipakai di episode-episode berikutnya:
M-x package-refresh-contents RET
M-x package-install RET magit RET
M-x package-install RET vertico RET
M-x package-install RET corfu RETVerifikasi terpasang dengan M-x describe-package RET magit RET (episode 8) — versi terpasang harus tampil.
Cara modern: biarkan use-package yang menginstall dan mengkonfigurasi sekaligus. Tambahkan ke init.el:
(use-package vertico
:ensure t
:init (vertico-mode 1))
(use-package corfu
:ensure t
:init (global-corfu-mode 1)
:config
(setq corfu-auto t))
(use-package magit
:ensure t
:defer t)Saat Emacs restart, use-package akan otomatis package-install yang belum terpasang — :ensure t melakukan itu. Tidak perlu M-x package-install manual lagi.
Tip
Untuk pemula, (setq use-package-always-ensure t) membuat semua use-package menginstall otomatis — hemat satu keyword tiap blok. Tapi di project nyata lebih baik eksplisit: config yang bisa di-porting tidak boleh berasumsi "semua selalu diensure".
Sejak Emacs 27, package-check-signature default allow-unsigned untuk ELPA dan t (wajib) untuk non-GNU/MELPA. Untuk memaksa verifikasi semua archive:
(setq package-check-signature t)Artinya: setiap paket harus punya tanda tangan GPG yang valid dari kunci archive. Kunci dikelola lewat M-x package-list-packages → g (refresh) yang otomatis mengambil kunci. Keamanan paket Emacs dibahas penuh di episode 22.
package.el (built-in) punya keterbatasan: tidak ada lockfile — config kalian di mesin baru mungkin menginstall versi paket berbeda dari mesin lama. straight.el mengatasi ini: ia meng-clone paket langsung dari git pada commit yang dicatat, menghasilkan config deterministik.
(defvar bootstrap-version)
(let ((bootstrap-file
(expand-file-name "straight/repos/straight.el/bootstrap.el"
user-emacs-directory))
(bootstrap-version 6))
(unless (file-exists-p bootstrap-file)
(with-current-buffer
(url-retrieve-synchronously
"https://raw.githubusercontent.com/radian-software/straight.el/develop/install.el"
'silent 'inhibit-cookies)
(goto-char (point-max))
(eval-print-last-sexp)))
(load bootstrap-file nil 'nomessage))
(use-package vertico
:straight t
:init (vertico-mode 1))Perhatikan keyword :straight t menggantikan :ensure t. Versi paket direkam di ~/.emacs.d/straight/repos/, dan lock dicatat otomatis. Episode 29 akan menilai kapan straight.el layak dipakai di setup produksi.
Beberapa "paket" sebenarnya sudah ada di core Emacs — use-package dan eglot sejak 29.1, org dan magit tidak (magit harus diinstall). Perbedaan yang perlu diingat:
:ensure.:ensure t / :straight t.M-x describe-package RET <nama> — jika tidak terdaftar, refresh dulu (M-x package-refresh-contents).package-refresh-contents: daftar paket hanya segar setelah refresh. Error "package not found" sering karena daftar basi.:ensure t (package.el) dan :straight t (straight.el) untuk paket yang sama — instalasi dobel dan konflik binding. Pilih satu sistem.M-x list-packages dan periksa M-x package-desc-status. Episode 22 membahas cara memverifikasi isi sebelum install.Pada episode 11 ini, kalian telah menguasai manajemen paket Emacs.
Inti yang harus dibawa pulang:
package-refresh-contents, package-install, list-packages.use-package :ensure t = install + config deklaratif dalam satu blok.package-check-signature t memaksa verifikasi tanda tangan (detail di episode 22).Di episode 12 selanjutnya, kita masuk dunia Org-mode — headings, TODO/DONE, links, tabel, agenda, clocking & capture — dan membangun sistem notes + agenda pribadi pertama kalian. Sampai jumpa di episode 12!