Чи можливо одночасно використовувати стабільний MELPA та MELPA?


29

Я використовую стійкий до melpa як додатковий сховище пакетів, але один із пакетів, який я люблю використовувати (бурульки), недоступний для мельпа-стабільних. Чи є спосіб налаштувати package.el, щоб нормально використовувати стійкий до melpa, але використовувати melpa для певного підмножини пакетів?


1
Оновлення на emacs 24.4 ;-)
Малабарба

@Malabarba, це точно на картах ...
Тімо Геш

Я також не можу знайти iciclesна Мелпі.
користувач650654

Відповіді:


34

Використовуйте варіант, package-archive-prioritiesякий був зроблений саме для цієї мети. Щоб віддати перевагу MELPA Stable перед MELPA, додайте у свій файл init:

(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)))

Чим вище число, тим вище пріоритет архіву пакетів. Для будь-якого пакету, який існує в декількох архівах, менеджер пакунків Emacs вибирає пакет з архіву з найвищим пріоритетом і ігнорує пакети в інших архівах, навіть якщо номер версії вище. Якщо пакет існує в двох архівах з однаковим пріоритетом, вища кількість версій виграє, і в кінцевому рахунку я думаю, що порядок в package-archives.

Я рекомендую чітко призначити пріоритет для всіх архівів, включаючи архів GNU ELPA за замовчуванням, щоб уникнути будь-яких неясностей. Хоча архіви, у яких немає, package-archive-prioritiesмають пріоритет за замовчуванням 0, це все занадто просто забути.

package-archive-priorities була представлена ​​в Emacs 25.1, про більш ранні випуски див. стару відповідь нижче:


У програмі Emacs 24 за замовчуванням MELPA Stable неможливо та використовувати MELPA лише для конкретних пакетів загальним способом. Без будь- якого пакета налаштування.el за замовчуванням до архіву, що забезпечує найвищу версію , MELPA. Немає інтерфейсу, щоб це змінити.

Однак, як і в Emacs 24.4, нова опція package-pinned-packagesдозволяє закріплювати окремі пакети до архівів, але це дозволяє лише реалізувати зворотну вимогу: за замовчуванням до MELPA та використовувати MELPA Stable для конкретних пакетів.

Отже, на даний момент ваш єдиний варіант - заповнити package-pinned-packagesвсі пакунки, які ви хочете використовувати, вручну або частиною коду Emacs Lisp. Зауважте, що його package-pinned-packagesпотрібно встановити перед викликом, package-refresh-contentsтому що закріплення оцінюється під час створення індексу пакету , а не при встановленні пакетів.

Довгостроковим рішенням було б M-x report-emacs-bugпопросити розробників Emacs впровадити якусь функцію «архіву за замовчуванням» або попросити керівника бурульок зробити належним чином теги випусків, щоб MELPA Stable могла створювати для нього стабільні пакети. Це не може виявитись простим, оскільки перший вимагає великих змін у package.el, а другий, що бурульки переміщуються з EmacsWiki в якесь правильне сховище VCS з тегами, яке, я вважаю, його підтримувач не бажає робити, для якби вони були, вони це зробили б давно.


0

Тут у вас є дискусія щодо паралельного використання обох сховищ, тому це повинно бути можливо з 24.4; Ви спробували, наприклад, з defun оновити список репост, потім парадоксально вимагати і, нарешті, повернутися до початкового списку репо?

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.