¿Es posible usar MELPA y MELPA-stable al mismo tiempo?

29

Uso melpa-stable como repositorio de paquetes adicional, pero uno de los paquetes que me gusta usar (icicles) no está disponible en melpa-stable. ¿Hay alguna forma de configurar package.el para que normalmente use melpa-stable, pero use melpa para un subconjunto específico de paquetes?

Timo Geusch
fuente
1
Actualice a emacs 24.4 ;-)
Malabarba
@Malabarba, eso definitivamente está en las cartas ...
Timo Geusch
No puedo encontrar iciclesen Melpa tampoco.
user650654

Respuestas:

34

Utilice la opción package-archive-prioritiesque se hizo para este mismo propósito. Para preferir MELPA estable sobre MELPA, agregue lo siguiente a su archivo de inicio:

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

Cuanto mayor sea el número, mayor será la prioridad de un archivo de paquete. Para cualquier paquete que exista en múltiples archivos, el administrador de paquetes de Emacs elige el paquete del archivo con la máxima prioridad e ignora los paquetes en otros archivos, incluso si el número de versión es mayor. Si el paquete existe en dos archivos de la misma prioridad, gana el número de versión superior y, en última instancia, creo que el pedido está incluido package-archives.

Recomiendo asignar explícitamente una prioridad a todos los archivos, incluido el archivo GNU ELPA predeterminado, para evitar ambigüedades. Aunque los archivos que no están dentro package-archive-prioritiestienen una prioridad predeterminada de 0, es muy fácil olvidarlo.

package-archive-priorities se introdujo en Emacs 25.1, para versiones anteriores vea la respuesta anterior a continuación:


En Emacs 24 no es posible establecer MELPA Stable de manera predeterminada y usar MELPA solo para paquetes específicos de manera general. Sin ningún paquete de personalización, el archivo predeterminado es el archivo que proporciona la versión más alta , que es MELPA. No hay interfaz para cambiar eso.

Sin embargo, a partir de Emacs 24.4, la nueva opción le package-pinned-packagespermite anclar paquetes individuales a los archivos, pero esto solo le permite implementar el inverso de su requerimiento: Predeterminado a MELPA, y usar MELPA Estable para paquetes específicos.

Por lo tanto, actualmente su única opción es completar package-pinned-packagestodos los paquetes que le gustaría usar, ya sea manualmente o con algún código Emacs Lisp. Tenga en cuenta que package-pinned-packagesdebe establecerse antes de llamar package-refresh-contentsporque la fijación se evalúa al generar el índice del paquete y no al instalar paquetes.

Una solución a largo plazo sería M-x report-emacs-bugpedirle a los desarrolladores de Emacs que implementen algún tipo de característica de "archivo predeterminado", o pedirle al responsable de los carámbanos que realice lanzamientos etiquetados correctamente para que MELPA Stable pueda construir paquetes estables para él. Sin embargo, ninguno de los dos puede resultar fácil, ya que el primero requiere cambios más grandes en package.el, y el último que los carámbanos se trasladan de EmacsWiki a un repositorio VCS adecuado con etiquetas, lo que supongo que su mantenedor no está dispuesto a hacer, porque si lo fueran, lo habrían hecho hace mucho tiempo.

Lunaryorn
fuente
0

Aquí tiene una discusión sobre el uso de ambos repositorios en paralelo, por lo que esto debería ser posible con 24.4; ¿ha intentado, por ejemplo, con un defun para actualizar la lista de repositorios, luego paradox-require y finalmente volver a la lista original de repositorios?

csantosb
fuente