Est-il possible d'utiliser simultanément MELPA et MELPA-stable?


29

J'utilise melpa-stable comme référentiel de packages supplémentaires, mais l'un des packages que j'aime utiliser (icicles) n'est pas disponible sur melpa-stable. Existe-t-il un moyen de configurer package.el pour utiliser normalement melpa-stable, mais utiliser melpa pour un sous-ensemble spécifique de packages?


1
Mise à niveau vers emacs 24.4 ;-)
Malabarba

@Malabarba, c'est définitivement sur les cartes ...
Timo Geusch

Je ne trouve pas non plus iciclessur melpa.
user650654

Réponses:


34

Utilisez l'option package-archive-prioritiesqui a été faite à cet effet. Pour préférer MELPA stable à MELPA, ajoutez ce qui suit à votre fichier 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)))

Plus le nombre est élevé, plus la priorité d'une archive de package est élevée. Pour tout package existant dans plusieurs archives, le gestionnaire de packages d'Emacs sélectionne le package dans l'archive ayant la priorité la plus élevée et ignore les packages dans d'autres archives, même si le numéro de version est supérieur. Si le package existe dans deux archives de même priorité, le numéro de version supérieur l'emporte, et finalement je pense que l'ordre est package-archives.

Je recommande d'attribuer explicitement une priorité à toutes les archives, y compris l'archive GNU ELPA par défaut, pour éviter toute ambiguïté. Bien que les archives qui ne sont pas dans package-archive-prioritiesaient une priorité par défaut de 0, il est trop facile de l'oublier.

package-archive-priorities a été introduit dans Emacs 25.1, pour les versions antérieures, voir l'ancienne réponse ci-dessous:


Dans Emacs 24, il n'est pas possible de passer par défaut à MELPA Stable et d'utiliser MELPA uniquement pour des packages spécifiques de manière générale. Sans aucune personnalisation package.el utilise par défaut l'archive fournissant la version la plus élevée , qui est MELPA. Il n'y a pas d'interface pour changer cela.

Cependant, à partir d'Emacs 24.4, la nouvelle option package-pinned-packagesvous permet d'épingler des packages individuels aux archives, mais cela vous permet uniquement d'implémenter l'inverse de votre exigence: par défaut sur MELPA, et d'utiliser MELPA Stable pour des packages spécifiques.

Par conséquent, actuellement, votre seule option est de remplir package-pinned-packagestous les packages que vous souhaitez utiliser, manuellement ou avec un morceau de code Emacs Lisp. Notez que cela package-pinned-packagesdoit être défini avant d' appeler package-refresh-contentscar l'épinglage est évalué lors de la construction de l'index de package , et non lors de l'installation de packages.

Une solution à long terme serait M-x report-emacs-bugde demander aux développeurs Emacs d'implémenter une sorte de fonctionnalité "d'archivage par défaut", ou de demander au responsable des glaçons de faire des versions correctement étiquetées afin que MELPA Stable puisse construire des packages stables pour cela. Ni l'un ni l'autre ne pourrait se révéler facile, cependant, car le premier nécessite des modifications plus importantes de package.el, et le second que glaçons est déplacé d'EmacsWiki dans un référentiel VCS approprié avec des balises, que je présume que son mainteneur n'est pas disposé à faire, pour s'ils l'avaient été, ils l'auraient fait il y a longtemps.


0

Ici, vous avez une discussion sur l'utilisation des deux référentiels en parallèle, donc cela devrait être possible avec 24.4; avez-vous essayé par exemple avec un defun de mettre à jour la liste des repos, puis paradox-require , et enfin de revenir à la liste repo d'origine?

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.