Compilar Emacs para Ubuntu o ElementaryOS | Programador Web Valencia

Compilar Emacs para Ubuntu o ElementaryOS

2 minutos

Emacs

Compilar Emacs proporciona una mejor experiencia ya que aumenta la velocidad gracias a las optimizaciones de rendimiento y la posibilidad de habilitar la compilación nativa, o compilación Just-In-Time, gracias al flag --with-native-compilation. Además puedes disponer en tu sistema de la versión más actualizada sin esperar el compilado oficial de tu distribución.

Para lograrlo debes seguir los siguientes pasos para compilar e instalar Emacs en tu equipo. ¡Atención! Esta testeado con la versión de Ubuntu 22.04 y ElementaryOS 7. Tal vez funcione en otras versión e incluso en Debian, pero no lo he experimentado.

1. Desinstalar Emacs

sudo apt remove --autoremove emacs emacs-common

2. Instalar dependencias para la compilación

sudo apt install build-essential autoconf libgtk-3-dev texinfo libxpm-dev libgif-dev libncurses-dev libxml2-dev automake libtool texinfo libjpeg-dev libncurses5-dev libdbus-1-dev libgif-dev libtiff-dev libm17n-dev libpng-dev librsvg2-dev libotf-dev libxml2-dev

3. Instalar libgccjit

Necesitaremos la versión adecuada de libgccjit. Primero averigua cual es tu versión de gcc que tienes instalada.

gcc --version

En mi caso dice gcc (Ubuntu 11.3.0-1ubuntu1~22.04) 11.3.0. En otras palabras, uso la versión 11.3.0 o la versión 11.

sudo apt install libgccjit-11-dev

4. Instalar libgnutls

Encuentra cual es el paquete para tu versión.

apt-cache search 'libgnutls.*-dev'

En mi caso era libgnutls28-dev.

sudo apt install libgnutls28-dev

5. Descarga el código fuente

Descargaremos la última versión estable desde el repositorio espejo alojado en GitHub.

wget https://codeload.github.com/emacs-mirror/emacs/zip/refs/heads/master
unzip emacs-master.zip
cd emacs-master/

6. Prepara los archivos para la compilación

./autogen.sh
./configure --with-native-compilation

Opcionalmente he añadido algunos flags extra mejorar la integración con el sistema.

Primero incluye las nuevas dependencias.

sudo apt install mpv libtool-bin libtool cmake imagemagick xclip aspell-es imagemagick libmagickwand-dev libm17n-dev libmagickcore-dev libtree-sitter-dev libjansson4 libjansson-dev

Y luego compila con los siguientes flags.

    ./configure \
	--with-native-compilation \
	--with-mailutils \
	--with-imagemagick \
	--with-cairo \
	--with-x-toolkit=gtk3 \
	--with-json \
	--with-tree-sitter \
	--with-xwidgets

7. Compila

make bootstrap -j4

8. Instala

sudo make install

Y ya hemos terminado. Encontrarás el lanzador en tu menú de aplicaciones.

Bonus: Cambiar el color de la ventana en modo dark

Si utilizas un tema oscuro en tu sistema, puede que veas el borde superior de la ventana en un color claro. Para cambiarlo a un color oscuro, puedes añadir el siguiente código en tu archivo de configuración de Emacs.

;; Set default frame color to black
(defun ed/set-new-frame-dark (frame)
  "Ensure the given FRAME will be seen as preferring dark theme.
This function only works on X window system."
  (when (string= (window-system) "x")
    (let ((wid (frame-parameter frame 'outer-window-id)))
      (start-process "xprop" nil "xprop" "-id" wid
                     "-f" "_GTK_THEME_VARIANT" "8u"
                     "-set" "_GTK_THEME_VARIANT" "dark"))))
(add-hook 'after-make-frame-functions #'ed/set-new-frame-dark)
;; Call it once as the first created frame will not be handled by the
;; previous hook.
(ed/set-new-frame-dark (selected-frame))

Esta obra está bajo una Licencia Creative Commons Atribución-NoComercial-SinDerivadas 4.0 Internacional.

Atribución/Reconocimiento-NoComercial-SinDerivados 4.0 Internacional

¿Me ayudas?

Comprame un café
Pulsa sobre la imagen

No te sientas obligado a realizar una donación, pero cada aportación mantiene el sitio en activo logrando que continúe existiendo y sea accesible para otras personas. Además me motiva a crear nuevo contenido.

Comentarios

{{ comments.length }} comentarios

Nuevo comentario

Nueva replica  {{ formatEllipsisAuthor(replyComment.author) }}

Acepto la política de Protección de Datos.

Escribe el primer comentario

Tal vez también te interese...