Manajemen paket generasi selanjutnya dengan straight.el
Setelah perjuangan panjang dan frustasi untuk menggunakan package.el
+ Quelpa untuk mengelola paket saya, saya menggigit peluru dan menulis manajer paket saya sendiri . Ini dimaksudkan untuk sepenuhnya menggantikan package.el
dengan memberikan pengalaman manajemen paket yang unggul dalam hampir setiap cara.
Anda dapat membaca dokumentasi yang sangat luas untuk mempelajari semua fitur-fiturnya, tetapi yang paling relevan untuk pertanyaan ini adalah yang straight.el
berfokus pada reproduksibilitas sempurna . Ini berarti tidak masalah apakah Anda memulai Emacs secara normal, atau memulainya dengan mesin baru, dan bahwa setiap perubahan lokal dikendalikan oleh versi dan dapat dikembalikan ke status kanonik. Secara praktis, ini dicapai dengan (1) mengkloning paket sebagai repositori Git, dan menyediakan alat otomatis untuk mengelola negara mereka; (2) menggunakan init-file sebagai satu - satunya sumber kebenaran untuk status manajemen paket, tanpa data yang dapat diubah disimpan di tempat lain; dan (3) menggunakan versi penguncian versi opsional untuk menentukan revisi Git yang tepat dari setiap paket, ditambah repositori resep danstraight.el
diri.
Untuk memulai, masukkan potongan bootstrap , yang akan menginstal dan mengaktifkan straight.el
. Kemudian, untuk memastikan bahwa suatu paket diinstal, cukup lakukan panggilan ke straight-use-package
dalam file init Anda:
(straight-use-package 'projectile)
Ya, sesederhana itu. Tidak berurusan dengan package-refresh-contents
atau semua sampah itu. Jika Anda menghapus formulir ini dari file init Anda dan memulai kembali Emacs, Proyektil tidak akan lagi dimuat (tidak seperti di package.el
). Ini berarti Anda tidak perlu khawatir tentang konfigurasi Anda yang entah bagaimana tidak bekerja pada mesin baru karena Anda secara tidak sengaja bergantung pada paket yang tidak dideklarasikan.
Anda dapat menginstal paket di mana pun dan kapan pun Anda mau, di seluruh file init Anda (tidak perlu mendeklarasikan daftar mereka pada satu titik). Tentu saja Anda juga bisa melakukannya
(dolist (package '(ace-jump-mode ... zzz-to-char)) (straight-use-package package))
jika Anda lebih suka daftar. Namun saya sarankan Anda gunakan use-package
untuk mengelola konfigurasi paket Anda. Pertama Anda harus menginstalnya:
(straight-use-package 'use-package)
Kemudian, karena straight.el
telah terintegrasi dengan use-package
, "just works" berikut:
(use-package projectile
:straight t
:init (projectile-mode 1))
Setelah Anda menulis file init Anda untuk menginstal paket yang dibutuhkan, jalankan M-x straight-freeze-versions
untuk menyimpan versi lockfile ~/.emacs.d/straight/versions/default.el
. Anda harus menyimpan file ini di bawah kontrol versi, karena itu akan memungkinkan straight.el
untuk memeriksa versi yang benar dari semua paket Anda, ketika Anda pertama kali meluncurkan Emacs pada mesin baru. (Anda dapat secara manual kembali ke versi yang ditentukan dalam penguncian menggunakan M-x straight-thaw-versions
.)
Untuk mendukung gagasan dotfiles mesin-lokal yang saya sebutkan di jawaban saya yang lain , straight.el
menawarkan sistem profil . Saya masih merekomendasikan penggunaan symlink untuk dotfiles Anda (dalam hal ini,, init.el
init-file lokal Anda jika berlaku, dan versi lockfile jika Anda ingin menggunakannya).
Jika Anda bertanya-tanya bagaimana straight.el
membandingkan dengan manajer paket lain, lihat bagian perbandingan yang luas . Tetapi ada lebih banyak dokumentasi tentang hal-hal lain juga.
init.el
(menggunakan git misalnya), pendekatan ini juga berfungsi (berdasarkanuse-package
): lunaryorn.com/posts/…