Terkadang, pembaruan paket dari MELPA dapat merusak sebagian emacs dan ketika itu terjadi, saya ingin dapat kembali menggunakan paket versi yang lebih lama.
Saat ini, saya bisa melakukannya dengan dua cara:
Saya telah mengatur emacs untuk menghapus file dengan pindah ke tempat sampah dan ketika saya memperbarui paket, versi yang lebih lama dibuang. Saya dapat mengambil versi yang lebih lama dan menggantikan yang di
~/.emacs.d/elpa
.Pergi ke repo github dari paket yang merusak fungsionalitas, ambil versi yang lebih lama dari paket, ganti yang masuk
~/.emacs.d/elpa
dengan yang dari gitub, byte-kompilasi ulang file (s).
Kedua cara ini melibatkan banyak pekerjaan manual untuk memindahkan barang-barang. Apakah ada cara yang lebih mudah (lebih disukai otomatis) untuk menurunkan versi paket yang diinstal dari MELPA?
sumber
M-x package-install-file
. Ada juga cara lain untuk mengelola paket selain ELPA / package.el, seperti el-get dan quelpa , mereka tampaknya dapat digunakan tanpa ELPA, mungkin mereka dapat melakukan apa yang Anda inginkan.M-x report-emacs-bug
(itu juga untuk permintaan peningkatan).Jawaban:
Ketika Anda memperbarui paket Anda melalui
M-x list-packages
antarmuka, setelah instalasi yang berhasil dari paket, Anda akan ditanya apakah Anda ingin menghapus paket yang lama. Jangan hapus mereka agar tetap di tempatnya dan nanti Anda bisa menghapus paket yang lebih baru melalui antarmuka ini.Daftar paket saya saat ini menunjukkan 4 versi magit yang diinstal di pohon direktori ~ / .emacs.d / elpa / saya.
Anda dapat membersihkan versi lama nanti dengan tombol
~
(package-menu-mark-obsolete-for-deletion) untuk menandai semua paket usang. Untuk menghapus versi lama tertentu, pindah ke jalurnya dan tekand
untuk menandai mereka untuk dihapus. Setelah Anda menandai paket yang akan Anda gunakanx
untuk menjalankan tindakan seperti biasa.Di Emacs 25 tandai semua paket untuk
U
fungsi pgrade secara otomatis menetapkan semua paket lama untuk dihapus, dan tidak meminta konfirmasi setelah menginstal. Anda harus mencari garis yang dimulai dengan huruf kapital "D", yang tidak dapat Anda tandai (paling baik dengan makro berikut)Ketikkan kunci atau akor di sebelah kiri tanda hubung dari baris berikut.
Jika tidak ada kecocokan lebih lanjut untuk pencarian, makro akan membunyikan bel dan berhenti, sehingga Anda dapat
C-u 0 <F4>
menghapus centang semua paket yang ditandai untuk dihapus. Setelah ini, Anda dapatx
membuat instalasi.Fungsi yang saya nyatakan akan diubah dalam komentar saya harus diubah dengan cara yang belum dapat saya pahami, karena penting bahwa blok (cond) terakhir harus berhasil agar tidak berulang tanpa henti.
sumber
(t (package-menu-mark-delete))
barispackage-menu--mark-upgrades-1
sehingga baris pertama adalah tes untuk variabel konfigurasi atau sesuatu yang kembalinil
ketika Anda tidak ingin langsung menghapus paket lamapackage.el
jawaban asli, sehingga saya dapat menerima jawabannya? Terima kasih"Opsi nuklir", seolah-olah, adalah untuk membuang
package.el
sepenuhnya dan alih-alih menggunakan manajer paket yang saya tulisstraight.el
,. Keuntungannya adalahstraight.el
menginstal paket dengan mengkloning repositori Git mereka, sehingga membuatnya sepele untuk menggunakan versi apa pun yang Anda inginkan. Juga,straight.el
menyediakan fungsionalitas untuk berurusan dengan kunci penguncian revisi, yang memungkinkan Anda untuk mencatat keadaan yang tepat dari konfigurasi manajemen paket Anda hingga ke detail terkecil. Kemudian, dalam keadaan darurat, Anda dapat dengan mudah mengembalikan semua paket ke versi yang dikenal baik.Jenis-jenis operasi ini, secara umum, mustahil dengan
package.el
, dan mereka akan selalu mustahil, karena desain keseluruhan.Menanggapi keinginan Anda untuk menghindari membuat komitmen setiap kali Anda memperbarui paket Anda, ini tidak diperlukan dengan
straight.el
. Saya akan merekomendasikan menulis versi lockfile dan melakukan itu setiap kali Anda memperbarui paket Anda, karena itu membuat tidak mungkin untuk pernah masuk ke keadaan di mana konfigurasi Emacs Anda rusak setelah peningkatan dan Anda tidak tahu cara mengembalikan. Tetapi Anda tidak harus melakukan ini, jika Anda suka menjalani kehidupan di tepi.sumber
Saya menemukan cara mudah untuk menurunkan versi: mengelola arsip melpa Anda sendiri.
make
untuk membangun paket yang diturunkanpackage-archives
daftar.package-pinned-packages
untuk membatasi arsip dari mana paket itu harus diunduh.sumber
Banyak orang memilih untuk tidak melakukan paket ELPA ke kontrol versi, tetapi ini adalah contoh mengapa saya percaya Anda harus melakukannya.
Mengembalikan apa pun itu sepele jika semuanya dilakukan.
Tergantung pada keadaan paket ELPA hulu adalah risiko.
sumber