Notxor tiene un blog

Defenestrando la vida


Esto es un desastre

Empezamos con decepción

Esto es un desastre. Mi blog se ha ido por el sumidero... bueno eso es una exageración, pero casi.

Tuve un problema con el ordenador. Casualidades de la vida, a la batería le dio por fallar en medio de una actualización del sistema y todo se quedó negro. Pude llegar a abrir una consola y ver qué podía haber pasado. La conclusión después de darle varias vueltas fue que la instalación quedó a medias y seguramente habría que reiniciarla.

Mi primera intención fue hacer una actualización total:

sudo zypper dup --no-allow-vendor-change

Lo más seguro es que todo hubiera funcionado de nuevo sin más problema que tener un portátil sin batería y estar obligado a tenerlo enchufado siempre. Sin embargo, yo que soy muy listo, decidí hacer otra cosa: Instalar de cero OpenSuse Tumbreweed, ajustando algunos parámetros de la anterior instalación --hecha sobre una previa de no me acuerdo qué distro-- que no terminaban de gustarme, como la estructura de las particiones en disco.

Me puse a ello, sabiendo que tenía copia de seguridad de todos mis datos y no pasaba nada, porque lo demás son aplicaciones que funcionan sobre los datos.

El error que me daba pelican era que había ficheros en las fuentes que no era correcto y no generaba los html como debería. Revisé todos los ficheros y todos estaban en correcto markdown. Es más, hasta el día anterior los había estado procesando sin problema. Después de muchas pruebas y desesperación, instalando la versión para python 2.x, volviendo a la versión para python 3.x, volviendo a probar, repasar los ficheros, quitando las carpetas estáticas, volviéndolas a poner, repasando una y otra vez el fichero de configuración pelicanconf.py... Al final desistí. Después de haber intentado todo, incluso generar un blog nuevo y copiar los archivos (para seguir recibiendo el mismo error), desistí y busqué alternativas.

Las alternativas que encontré en los repositorios de OpenSuse, a parte de pelican, eran jekyll y nikola. Probé los dos. No sé si fue por falta de paciencia a esas alturas; por falta de documentación, o quizá mi torpeza habitual, el caso es que fui incapaz de iniciar ningún proyecto de los dos.

Emacs al rescate: probando org-page

Poco después recordé haber mirado por encima alguna vez la posibilidad de hacer el blog única y exclusivamente con emacs y tropecé con el paquete org-page. Por probar no perdía nada.

Y bueno, de momento parece funcionar correctamente. O al menos hace lo que se espera de él mientras escribo esta primera entrada. Pero vamos por partes a ver si me puedo explicar todo lo que me gustaría.

Instalación de org-page

Esa es la parte más fácil: Primero accedí a M-x list-packages y busqué por toda la lista paquetes de blog. Primero vi que había un paquete prometedor que se llama hexo-mode, así que intenté a ver si tenía suerte y podía instalar «hexo» un creador de sitios estáticos hecho con javascript, pero tuve la misma suerte con el agravante de que no está en los repositorios de OpenSuse y seguro que algo de basurilla me ha quedado por el disco... pero bueno, hay que probarlo todo (o casi todo).

Decía que una vez instalado el paquete había que configurarlo, así que siguiendo las instrucciones del sitio de org-page añadí a mi fichero .emacs las siguientes lineas.

(require 'org-page)
(setq op/repository-directory "~/proyectos/blog-org-page/")
(setq op/site-domain "https://notxor.nueva-actitud.org")
(setq op/site-main-title "Notxor tiene un blog")
(setq op/site-sub-title "Defenestrando la vida")

Además, se puede cambiar la apariencia con distintos themes que proporcionan los css correspondientes... de momento no he hecho modificaciones a la apariencia más allá elegir uno de ellos. Para cambiar de tema para la visualización se utiliza la variable op/theme. De momento estoy utilizando el tema que elige por defecto cuando no le dices ninguno (mdo). Las opciones para elegir son: emacs_love, kactus, kd_mdo, mdo, phaer y wy

De todas formas, después de haberlas visto todas, me ha quedado claro que ningún diseñador gráfico le ha echado un ojo a este paquete.

Primeros problemas, apareció git

La gestión de todo el blog lo lleva org-page acoplándose sobre git... y git es una de mis bestias negras. Tengo una tendencia, casi enfermiza diría yo, a cagarla con git, meter la pata y cargarme los repositorios. Aquel de vosotros que lea esto que haya trabajado conmigo en algún proyecto utilizando git daréis fe de mi torpeza con esa herramienta. Espero que el uso extensivo de esta herramienta para el blog consiga que por fin me aclare con esta maravilla y comience a entenderla poco a poco.

org-page utiliza dos ramas, los ficheros .org las guarda por defecto en la rama source y los html generados en la master. Pero otra vez vamos por partes. Primero hay que crear un repositorio y mi costumbre de crearlo en la nube tiene sus peculiaridades:

Crear repositorio en Nextcloud

Tengo una nube particular que la uso para mis cosas y para tener, básicamente, sincronizadas todas las cosas con las que trabajo de forma normal, en varios ordenadores, en varios aparatos (teléfono móvil, tablet). Así que el origen del blog lo he creado en él.

cd nube
mkdir blog-org-page.git
cd blog-org-page.git
git init --bare

Por lo que sé, la opción bare genera un repositorio que contiene toda la información pero no los ficheros para modificarla, es decir, actuará de «repositorio remoto» del que descargar información y al que subir cambios. Después hay que crear el «repositorio local»

cd ~/proyectos
git clone ~/nube/blog-org-page.git

Con esto nos crea, después de avisarnos de que hemos «clonado» un repositorio vacío, un directorio que se llama «blog-org-page». Éste es el directorio que debemos establecer en la variable op/repository-directory como vimos antes.

Ahora necesitamos una rama que se llame source... aunque bueno, la podemos llamar como queramos y luego se puede configurar en las opciones. Sin embargo, para no liarme he llamado a esa rama como dice la documentación.

git branch source

Creando el esqueleto del blog y comenzando a escribir

Una vez tenemos creado el repositorio hay que crear el esqueleto del blog. Algo tan sencillo como hacer los siguientes pasos:

  1. Asegurarnos de que estamos en la rama source, fuera de emacs podemos llamar al comando:

    git checkout source
    

    Si tenemos instalado en emacs magit también podemos hacer sin salirnos de nuestro editor M-x magit-checkout y seleccionar la rama source.

  2. Generar el esqueleto con el comando correspondiente de org-page: M-x op/new-repository.

Si vamos al directorio del proyecto, veremos que nos ha creado un directorio llamado blog y los ficheros README, about.org e index.org... Y ya lo tenemos todo listo para comenzar.

Esta primera entrada la he creado en el dentro del directorio blog con el nombre de fichero inicio-nuevo-blog.org... Bueno, en realidad no lo he creado a mano. En realidad lo que hice fue abrir emacs y lanzar M-x op/new-post y contestar a las preguntas que hace. Eso ya genera la cabecera que tiene la siguiente pinta:

#+TITLE:       Esto es un desastre
#+AUTHOR:      Notxor
#+EMAIL:       notxor «en» nueva-actitud «punto» org
#+DATE:        2017-10-30 lun
#+URI:         /blog/%y/%m/%d/esto-es-un-desastre
#+KEYWORDS:    varios
#+TAGS:        varios, blog
#+LANGUAGE:    es
#+OPTIONS:     H:3 num:nil toc:nil \n:nil ::t |:t ^:nil -:nil f:t *:t <:t
#+DESCRIPTION: Artículo inicial del nuevo blog

Publicando lo hecho

Una vez de haber escrito todo este chorizo (bueno, en realidad lo hice de varias veces y probando que funcionaba todo), guardas tus cambios y tienes que generar el blog. He ido haciendo cambios y subiéndolos poco a poco. ¿Cómo? poco a poco y empezando con git:

Por ejemplo, para subir los cambios en el los ficheros que crea por defecto about.org e index.org. Los he modificado y subido de la siguiente manera:

git add about.org index.org
git commit -m "Establecer los estados iniciales del blog."
git push

Por separado subiré el primer post de este blog con comandos similares a lo anterior, por lo que no voy repetir ese proceso. Pero además, teniendo todos los cambios guardados y seguros en el repositorio, el siguiente paso es publicar lo hecho. Lo que se hace es M-x op/do-publication o si se quiere tener una visión previa de cómo está quedando lo que vamos escribiendo se puede utilizar el comando M-x op/do-publication-and-preview-site, que guarda los ficheros generados en el directorio ~/.op-tmp/.

Conclusión

Y poco más puedo contar después de dos días de trastear con el «chismático» éste. Sólo que de momento me permite volver a tener el blog y aunque me lío con bastante frecuencia con el tema de git, espero que esto me sirva para arrancar con ello.

Por otro lado un punto a favor es que utiliza directamente org-mode, no necesito convertir ni romper nada, ni insertar código html «a pelo» como había que hacer con el Markdown.

Veremos si esto me hace escribir un poco más en mi blog.


Comentarios