Apakah mungkin untuk menggunakan MELPA dan MELPA-stable secara bersamaan?

29

Saya menggunakan melpa-stable sebagai repositori paket tambahan, tetapi salah satu paket yang saya suka gunakan (es) tidak tersedia di melpa-stable. Apakah ada cara untuk mengkonfigurasi package.el untuk menggunakan melpa-stable, tetapi menggunakan melpa untuk subset paket tertentu?

Timo Geusch
sumber
1
Tingkatkan ke emacs 24.4 ;-)
Malabarba
@Malabarba, itu pasti ada di kartu ...
Timo Geusch
Saya tidak dapat menemukan iciclesdi melpa juga.
user650654

Jawaban:

34

Gunakan opsi package-archive-prioritiesyang dibuat untuk tujuan ini. Untuk lebih memilih MELPA Stable daripada MELPA, tambahkan berikut ini ke file init Anda:

(setq package-archives
      '(("GNU ELPA"     . "https://elpa.gnu.org/packages/")
        ("MELPA Stable" . "https://stable.melpa.org/packages/")
        ("MELPA"        . "https://melpa.org/packages/"))
      package-archive-priorities
      '(("MELPA Stable" . 10)
        ("GNU ELPA"     . 5)
        ("MELPA"        . 0)))

Semakin tinggi angkanya, semakin tinggi prioritas arsip paket. Untuk setiap paket yang ada di banyak arsip, manajer paket Emacs mengambil paket dari arsip dengan prioritas tertinggi, dan mengabaikan paket di arsip lain, bahkan jika nomor versi lebih tinggi. Jika paket ada di dua arsip dengan prioritas yang sama, nomor versi yang lebih tinggi menang, dan akhirnya saya pikir urutannya package-archives.

Saya merekomendasikan untuk secara eksplisit menetapkan prioritas untuk semua arsip, termasuk arsip GNU ELPA default, untuk menghindari ambiguitas. Meskipun arsip yang tidak ada package-archive-prioritiesmemiliki prioritas default 0, terlalu mudah untuk melupakannya.

package-archive-priorities diperkenalkan di Emacs 25.1, untuk rilis sebelumnya lihat jawaban lama di bawah ini:


Di Emacs 24 tidak mungkin untuk secara default menjadi MELPA Stable dan menggunakan MELPA hanya untuk paket tertentu secara umum. Tanpa paket kustomisasi. Default ke arsip menyediakan versi tertinggi , yaitu MELPA. Tidak ada antarmuka untuk mengubahnya.

Namun, pada Emacs 24.4 opsi baru package-pinned-packagesmemungkinkan Anda untuk menyematkan paket individual ke arsip, tetapi ini hanya memungkinkan Anda menerapkan kebalikan dari kebutuhan Anda: Default ke MELPA, dan menggunakan MELPA Stable untuk paket tertentu.

Karenanya, saat ini satu-satunya pilihan Anda adalah mengisi package-pinned-packagesdengan semua paket yang ingin Anda gunakan, baik secara manual atau dengan beberapa kode Emacs Lisp. Catatan yang package-pinned-packagesharus ditetapkan sebelum memanggil package-refresh-contentskarena pinning dievaluasi saat membangun indeks paket , dan bukan ketika menginstal paket.

Solusi jangka panjang adalah M-x report-emacs-bugmeminta pengembang Emacs untuk mengimplementasikan beberapa jenis fitur "arsip default", atau meminta pengelola es untuk membuat rilis yang ditandai dengan benar sehingga MELPA Stable dapat membuat paket yang stabil untuknya. Namun, tidak ada yang berubah menjadi mudah, karena yang pertama membutuhkan perubahan yang lebih besar pada package.el, dan yang terakhir bahwa es-es dipindahkan dari EmacsWiki ke beberapa repositori VCS yang tepat dengan tag, yang saya kira pengelolanya tidak mau melakukannya, karena jika mereka, mereka akan melakukannya sejak lama.

lunaryorn
sumber
0

Di sini Anda berdiskusi tentang penggunaan kedua repositori secara paralel, jadi ini harus dilakukan dengan 24.4; sudahkah Anda mencoba misalnya dengan defun untuk memperbarui daftar repo, kemudian paradoks-butuhkan , dan akhirnya kembali ke daftar repo asli?

csantosb
sumber