Bagaimana emacs mengelola paketnya?

9

Saya menginstal auctex dari pusat perangkat lunak Ubuntu, dan kemudian saya menginstal versi lebih baru dari auctex dari emacs.

Saya kemudian menghapus instalan auctex yang diinstal oleh pusat perangkat lunak Ubuntu. Saya menemukan bahwa itu tidak menghapus yang saya instal dari emacs.

Bagaimana emacs mengelola paketnya?

Apakah tidak ada gangguan antara emacs dan Ubuntu dalam mengelola instalasi dan penghapusan instalasi paket emacs?

Jika saya benar, beberapa tahun yang lalu, tidak ada cara untuk menginstal paket dalam emacs?

Terima kasih.

Tim
sumber
2
IMO, pertanyaan ini terlalu luas untuk T&J SE. Lebih baik membaca dokumen Emacs, dan kemudian posting di sini pertanyaan spesifik tentang bagian tertentu dari manajemen paket yang tidak jelas bagi Anda. Kita tidak boleh mereproduksi Emacs doc di sini. Dan jika ada sesuatu yang penting yang hilang dari doc Emacs maka Anda harus mengajukan permintaan laporan / perangkat tambahan bug: M-x report-emacs-bug. Orang-orang yang menanggapi pertanyaan semacam itu di sini akan lebih baik berkontribusi pada dokumen Emacs, jika infonya hilang. MENURUT OPINI SAYA.
Drew
3
Tim: Kalau-kalau ada kebingungan, "paket" Emacs dan "paket" Ubuntu / Debian adalah hal yang sama sekali tidak terkait. Paket Debian apa pun yang terkait dengan Emacs tidak memiliki koneksi apa pun dengan manajer paket package.el yang dibangun di dalam Emacs 24.
phils
1
@Tim, Jangan lupa untuk menerima ananswer, atau beri tahu kami jika jawabannya tidak memuaskan.
Malabarba
1
@Drew Pertanyaannya lebih tentang interaksi antara paket Ubuntu dan Emacs, jadi tidak akan dibahas dalam dokumen Emacs. Dan jawabannya juga membahas paket pihak ketiga yang tidak dicakup oleh dokumen, jadi ini mungkin tempat terbaik untuk menanyakan hal-hal seperti itu.
Brian Burns

Jawaban:

11

Seperti kata paprika, Emacs menggunakan load-pathuntuk mencari daftar elispfile yang tersedia ( .elc, .el)

Itu load-pathdicari untuk paket yang cocok pertama saat diperlukan. Jika beberapa salinan paket diinstal, maka yang pertama akan dimuat.

Manajer paket distro tidak dapat menginstal ke sumber yang sama dengan yang package-installada, karena satu adalah seluruh sistem dan yang lainnya adalah khusus pengguna.

Sumber Paket

Built-in dan Khusus Distro

Manajer Paket Distro

Manajer paket distro menyediakan pilihan paket emacs yang dapat diinstal. Dalam pengalaman saya, ini sering di antara paket yang lebih populer / banyak digunakan. Sebelum pengembangan package.elini adalah cara termudah untuk mendapatkan paket. (Paling mudah berdasarkan hanya berjalan apt-get install <package>daripada menggunakan kontrol versi atau unduhan langsung.

Paket yang diinstal melalui manajer paket distro diinstal ke /usr/local/share/emacs/site-lisp/yang merupakan default di load-pathdan akan disembunyikan oleh load-pathtambahan khusus pengguna .

Package.el

package.elpertama kali disertakan dengan Emacs 24. Versi ini kompatibel dengan Emacs 23tetapi perlu diinstal secara manual, paket yang diambil olehnya mungkin atau mungkin tidak kompatibel dengannya Emacs 23.

package.elmenyediakan repositori yang dapat ditelusuri paket untuk Emacs. Secara default hanya Elparepositori yang dikonfigurasi, tetapi akses ke MELPA dan Marmelade dapat ditambahkan:

(add-to-list 'package-archives '("melpa" . "http://melpa.milkbox.net/packages/"))
(add-to-list 'package-archives '("marmalade" . "http://marmalade-repo.org/packages/"))

Ini memberikan akses ke kumpulan paket yang jauh lebih besar.

Secara default package.elmenginstal paket ke ~/.emacs.d/elpadan ketika (package-initialize)dipanggil direktori ini akan ditempatkan lebih dekat ke depan load-path, sehingga paket-paket ini diutamakan daripada yang diinstal dengan oleh manajer paket distribusi.

Git / Bzr / hg / ... + EmacsWiki

Paket yang dikontrol versi dapat secara manual diambil dari repositori mereka melalui kloning. Beberapa juga menyediakan rilis paket yang dapat diunduh secara langsung.

File EmacsWiki Elisp juga dapat diunduh, meskipun mereka biasanya file tunggal daripada direktori.

Setelah paket diambil, pastikan folder tujuan ada di Anda load-pathdan akan tersedia untuk digunakan.

Manajemen paket pihak ketiga

Alat-alat ini menyediakan pembungkus atau fungsionalitas tambahan di atas untuk memusatkan manajemen paket. Mereka dirancang dengan konfigurasi bersama untuk memastikan semua mesin Anda memiliki paket yang sama.

El-Get

El-Dapatkan menyimpan daftar resep yang memungkinkan untuk mengambil paket menggunakan package.el, git, emacswikisebagai sumber (antara lain). Ini juga menyediakan fungsi untuk memastikan paket terbaru, mengelola pemuatan (ditangguhkan atau langsung), dan menyimpan kustomisasi khusus paket dalam file yang dimuat secara otomatis ketika paket tersebut required.

Tong kecil

Tong dirancang untuk manajemen proyek di / untuk Emacs. Itu menggunakan caskfile untuk mempertahankan daftar dependensi (paket lain) yang diperlukan untuk menggunakan paket, dan akan mengunduh paket yang hilang untuk memastikan semuanya berhasil dimuat.

Ini dapat digunakan untuk mengelola konfigurasi paket lokal dengan memperlakukan Anda ~/.emacs.dsebagai proyek dan memanggil (cask-initialize)startup.

straight.el

straight.eldirancang untuk orang-orang yang ingin membuat perubahan lokal ke paket mereka, dan mungkin berkontribusi perubahan itu di hulu. Ini menarik resep dari MELPA , GNU ELPA , dan EmacsMirror , atau memungkinkan Anda untuk menentukan sendiri. Ini juga mendukung penulisan lockfile revisi untuk reproduktifitas maksimum, di antara banyak fitur lainnya.

Paket penggunaan

Paket penggunaan dirancang terutama sebagai alat manajemen konfigurasi emacs. Ini akan mengunduh package.elpaket yang diperlukan tetapi tidak memiliki mekanisme bawaan untuk mengakses sumber lain. Hal ini memungkinkan untuk pemuatan paket yang ditangguhkan dan kustomisasi yang ditangguhkan. Ini meningkatkan inisialisasi emacs sambil memperlambat penggunaan awal paket (tetapi jika tidak menggunakannya dalam sesi yang diberikan hanya ada keuntungan bersih).

Jonathan Leech-Pepin
sumber
elpakit juga tersedia, ia melakukan pekerjaan yang mirip dengan tong tetapi tanpa bit non-elisp.
nic ferrier
@nicferrier Bisakah Anda menguraikan cara menggunakannya untuk manajemen paket? (Saya dapat melihat bagaimana menggunakannya untuk paket-paket yang ada, tetapi Cask juga memungkinkan untuk menambahkan sumber-sumber arbitrer jika saya membacanya dengan benar)
Jonathan Leech-Pepin
well elpakit terutama memungkinkan Anda melakukan dua hal: membangun repositori pada disk Anda sebagai paket (itu juga membuat arsip paket dari koleksi mereka) dan membuat paket yang bergantung pada paket lain secara otomatis. Mx elpakit-package-list-buf membuat buffer dengan daftar paket elpa Anda di dalamnya yang kemudian dapat Anda gunakan untuk membuat paket lain yang bergantung pada paket elpa yang dipilih.
nic ferrier
Saya pikir paket yang diinstal melalui manajer paket distro masuk /usr/share/emacs/site-lisp, bukan /usr/local/share...karena localdirs dimaksudkan untuk instalasi non distro.
JeanPierre
10

Emacs menggunakan load-path, yang pada dasarnya adalah daftar direktori yang harusnya dicari oleh file Lisp. Jika sebuah paket tersedia di load-pathmaka itu diinstal .

Tidak ada antarmuka antara manajer paket Debian / Ubuntu dan manajer paket Emacs (package.el). Mantan menginstal paket Emacs dalam mode seluruh sistem (tersedia untuk setiap pengguna komputer) sementara yang terakhir menginstal paket secara default di bawah direktori home Anda. Secara teoritis Anda dapat menggunakan kedua sumber untuk menginstal paket. Namun, saya akan menyarankan agar praktik ini: Anda mungkin mengalami beberapa masalah ketika Anda menginstal paket yang sama dari kedua sumber.

Daftar paket Emacs yang dapat Anda instal melalui manajer paket Debian / Ubuntu jauh lebih terbatas jika dibandingkan dengan ELPA / MELPA / ..., karena setiap paket harus disiapkan khusus untuk Debian / Ubuntu. Dengan kata lain: paket di ELPA! = Paket di Debian.

paprika
sumber
Ketika dia bertanya tentang beberapa tahun yang lalu saya pikir dia berbicara tentang Elpa
Malabarba
@Malabarba: Memang, saya salah paham. Saya menghapus kalimat yang tidak relevan.
paprika
1
Jawaban ini berlaku untuk manajer paket distro lain juga seperti yum (Fedora), pacman (Arch) dll.
Vamsi
Dan Anda kehilangan marmalade-repo dari daftar. Repositori asli non-GNU.
nic ferrier