sirve - emacs tutorial
Cómo reconstruir paquetes ELPA después de la actualización de Emacs (3)
Esto funciona para mí en Emacs 25.1 y 26:
(defun package-reinstall-all-activated-packages ()
"Refresh and reinstall all activated packages."
(interactive)
(package-refresh-contents)
(dolist (package-name package-activated-list)
(when (package-installed-p package-name)
(unless (ignore-errors ;some packages may fail to install
(package-reinstall package-name))
(warn "Package %s failed to reinstall" package-name)))))
Acabo de actualizar GNU Emacs de 23 a 24 en MacOS y algunos paquetes instalados de ELPA dejaron de funcionar. Uno de ellos es AucTeX. Eliminarlo y volver a instalarlo a través del administrador de paquetes lo hizo funcionar nuevamente, pero no quiero hacerlo a mano para cada paquete. Estoy un poco confundido de que no encuentre nada al respecto en Internet.
¿No es necesario volver a compilar el .elc para obtener una nueva versión de Emacs? ¿Por qué no es esta una característica de package.el?
La variable package-activated-list
contiene la lista de paquetes que nos interesan. Por lo tanto, solo tenemos que instalar cada uno de nuevo. No es necesario que los eliminemos explícitamente; Llamar package-install
arruinará una versión anterior.
Coloque este código en un búfer de rayado y evalúelo (es decir, coloque el cursor al final y presione Cx Ce
):
(dolist (package-name package-activated-list)
(package-install package-name))
No necesita volver a instalar todos los paquetes. Es probable que los paquetes en sí estén bien, sin embargo, deben volverse a compilar, porque el código de byte de Emacs Lisp generalmente no es compatible en las versiones principales.
Para volver a compilar todos los paquetes, escriba M-: (byte-recompile-directory package-user-dir nil ''force)
. Después de reiniciar Emacs, los paquetes deberían funcionar bien de nuevo.