emacs elpa

emacs themes melpa



ActualizaciĆ³n de paquetes en Emacs (4)

  1. Yo uso lo siguiente:

    (when (not package-archive-contents) (package-refresh-contents))

    Hacer package-list-packages también actualizará la lista de paquetes.

Puede actualizar todos los paquetes instalados con U x en el búfer *Packages* .

  1. ELPA es el original. No creo que ya se haya mantenido, pero no estoy seguro. Yo no lo uso

    GNU es "oficial". Se mantiene junto con Emacs, lo que significa que las cosas siempre deberían funcionar, pero las actualizaciones y los nuevos paquetes no se reciben con mucha frecuencia.

    Marmalade es básicamente un sitio web donde puede cargar un paquete completo, y se agregará al repositorio de mermelada. No solo envía un enlace al paquete en sentido ascendente, y no automatiza del todo la creación del paquete. Creo que esto es lo correcto, porque no necesariamente quieres rastrear en sentido ascendente. Desafortunadamente, no se ha mantenido durante un tiempo, pero alguien lo tomó recientemente, por lo que debería estar de vuelta y mejor en algún momento.

    Melpa toma una URL para, por ejemplo, el área de lisp de EmacsWiki o un repositorio github, y crea un paquete automáticamente a partir de ella. Por lo general, es como máximo un día detrás de lo que sea que esté rastreando. Aunque rastrea en sentido ascendente, nunca he tenido un problema en la práctica, y aquí es de donde provienen la mayoría de mis paquetes. También está Melpa Stable , que es como Melpa pero agarra revisiones etiquetadas del repositorio upstream en lugar de la última revisión. Melpa estable tiene menos paquetes que Melpa.

    El modo Org tiene su propio repositorio package.el ( http://orgmode.org/elpa/ ).

    Todos los repos de paquetes funcionan igual, solo agréguelos a sus package-archives .

    Aquí hay un blog más detallado sobre este tema, con el que estoy de acuerdo en su mayoría.

  2. No estoy seguro, pero creo que si un paquete está duplicado en repositorios diferentes, el orden en que aparecen los repos en package-archives determina la precedencia. No sé si una precedencia más alta está al principio o al final de la lista.

    Actualización: en Emacs 25, hay un package-archive-priorities variable package-archive-priorities que puede usar para priorizar sus repositorios de paquetes (por ejemplo, prefiere ELPA sobre MELPA).

Aquí está la sección relevante de mi init.el , si estás interesado:

(setq jpk-packages ''( ac-dabbrev ... yasnippet )) (package-initialize) (add-to-list ''package-archives ''("melpa" . "http://melpa.org/packages/")) (add-to-list ''package-archives ''("org" . "http://orgmode.org/elpa/")) ;; install any packages in jpk-packages, if they are not installed already (let ((refreshed nil)) (when (not package-archive-contents) (package-refresh-contents) (setq refreshed t)) (dolist (pkg jpk-packages) (when (and (not (package-installed-p pkg)) (assoc pkg package-archive-contents)) (unless refreshed (package-refresh-contents) (setq refreshed t)) (package-install pkg)))) (defun package-list-unaccounted-packages () "Like `package-list-packages'', but shows only the packages that are installed and are not in `jpk-packages''. Useful for cleaning out unwanted packages." (interactive) (package-show-package-list (remove-if-not (lambda (x) (and (not (memq x jpk-packages)) (not (package-built-in-p x)) (package-installed-p x))) (mapcar ''car package-archive-contents))))

Tengo la siguiente configuración para los paquetes (no estoy seguro de si hay uno mejor recomendado):

(require ''package) (setq package-archives ''(("ELPA" . "http://tromey.com/elpa/") ("gnu" . "http://elpa.gnu.org/packages/") ("marmalade" . "http://marmalade-repo.org/packages/"))) ; Apparently needed for the package auto-complete (why?) (add-to-list ''package-archives ''("melpa" . "http://melpa.milkbox.net/packages/") t) (package-initialize) (setq url-http-attempt-keepalives nil)

Tengo tres preguntas relacionadas con la instalación y actualización de paquetes.

Q1. ¿Hay alguna forma de actualizar la lista de paquetes disponibles (y las versiones más recientes) y actualizar un paquete específico?

Q.2 ¿Cuál es la diferencia entre las siguientes fuentes de paquete ?:

  • ELPA,
  • ÑU
  • mermelada
  • Melpa

Q.3 ¿Importa el orden en que se agregan a package-archives ?


Dentro de Emacs, utilice Mx list-packages para enumerar todos los paquetes que actualizarán automáticamente el contenido del archivo. Luego use U para marcar todos los paquetes actualizables que se actualizarán, x para realizar las nuevas actualizaciones. Emacs luego buscará e instalará todas las actualizaciones, y le preguntará si desea eliminar las versiones antiguas y obsoletas después.

También puede consultar Carton que proporciona una manera más conveniente de administrar sus paquetes al declararlos en un archivo dedicado, e incluye un conveniente cliente de línea de comando para instalar y actualizar automáticamente los paquetes declarados de esta manera.

El orden de package-archives del package-archives no importa. Emacs agrega el contenido de todos los archivos en una única lista coherente de paquetes disponibles y sus versiones, almacenadas en package-archive-contents .

Tras package-install , Emacs simplemente elegirá la versión más nueva de un paquete, independientemente del archivo de origen. Para obtener más control sobre el origen del paquete, MELPA proporciona el paquete melpa que permite ennegrecer los paquetes de archivos especificados.


En la terminal:

emacs M-x list-packages

esto te pone en el buffer * packages *

shift-u x

emacs le preguntará (y / n), espere las actualizaciones

C-x k <ret>

esto matará al búfer * packages * y te devolverá a * scratch *

C-x-C-c

esto saldrá de emacs, y te permitirá relanzar a través de, pero es posible que debas depurar :(

emacs

mis 2 ¢


Esto es más un comentario extendido sobre la respuesta de jpkotta.

Este es un ajuste con el que estoy experimentando para la respuesta de jpkotta:

(setq n 0) ; set n as 0 (dolist (pkg pkgs-2b-present) ; for each pkg in list (unless (or ; unless (package-installed-p pkg) ; pkg is installed or (assoc pkg ; pkg is in the archive list package-archive-contents)) (setq n (+ n 1)))) ; add one to n (when (> n 0) ; if n > 0, (package-refresh-contents)) ; refresh packages

(reemplazando (when (not package-archive-contents) (package-refresh-contents)) ).

La lista de paquetes no era refrescante con suficiente frecuencia para mi caso de uso.

No he considerado si hay una solución más eficiente a mi problema; primero, tengo que ver si el problema desaparece con este ajuste.