Acerca de...
El equipo
Encuestas
Política de privacidad
WinTablets

Encuesta

¿Cual crees que triunfará?

Ver Resultados

Cargando ... Cargando ...

últimas entradas importantes

Categorías

Archivos

11
Jul 2020
Podcast

Un caso de éxito (esta vez sí) con Linux (y WSL2)

Juan Luis, socio fundador y gordo habitual de Wintablet, siempre ha mainfestado que le hacían palmas las orejas con el tema de Linux bajo Windows, y lo cierto es que, al menos a mi, siempre me ha parecido una característica bastante meh. Pero, ah, amigo, en un achuchón linuxero de esos que me dan de vez en cuando, y por el mero hecho de dar un poco por culo, he decidido intentar tener Koreader en Windows.

Si queréis saber más, después del corte.

Vale, gallinicas. La idea es tener un lector de ebooks que esté disponible en todas las plataformas posibles, que sincronice y tenga las opciones más mínimas para poder leer cómodamente con él. Y claro, Koreader es el más cercano a ese nirvana…

Pero espera un poco, porque soy tan gilipollas que no me di cuenta que en iOS no está ni lo van a estar por el tipo de licencia que Apple permite en las tiendas, y siendo los iPad y los flaifons mi plataforma principal… bueno, mejor escurramos un estúpido velo y vayamos al turrón (de Jijona, por supuesto).

Vale, pues uno se va todo pichichi a la página web de Koreader, navega por aquí y por allí y descubre que ni para Windows ni para Mac hay compilaciones nocturnas. Vamos, que ni una triste polución sinónima. Pero resulta que se pueden compilar en ambos sistemas. Bueno, en macOS y en Linux, pero como Windows tiene ahora el WSL2 ese, y la propia documentación de Koreader lo dice, pues…

… Gorra de juanker de medio pelo y vamos pallá. Primero WSL2, que no es difícil pero tiene su cosa ya que hasta tienes que instalarte un kelmer… de Windows, ahí es nada.

Puedes hacerlo con la interfaz gráfica, usando lo de “encender y apagar características de Windows”, pero como yo tengo puesto el gorro de juanker, que hago unos copys que te cagas, he seguido las instrucciones que aparecen aquí. Tened en cuenta que tenéis que tener Windows 2004 (que no, que no es un windows del 2004, sino la versión 20-04, la última en el momento en el que escribo esto).

Ojo, aviso para navegantes: reiniciad el ordeñador después de haber activado lo de la versión 2, y antes de meter nada de la tienda, tenéis que mirar lo del kelmer. Aquí. 

Vale, ahora sí que sí. Id a la tienda e instalaros una Debian. Debian. El Koreader se compila desde una Debian. Punto pelota. No, en serio, es en lo que yo lo he hecho y me ha funcionado. De aquélla manera pero lo ha hecho.

Turrón, turrón

Las instrucciones para compilar Koreader en cualquier plataforma compatible están aquí. Si abres una consola de Debian en WSL2 e intentas seguirlos, te vas a encontrar con este bug (sí, reportado por el menda).

Peeeero, con la ayuda de los desarrolladores del tema, he conseguido no solo instalarlo sino ejecutarlo. Yo os parafraseo aquí los pasos que he seguido. Y como tengo el sombrero de juanker, permitidme que utilice la jerga.

Lo primero que hay que hacer es eliminar del path de la consola toda la mierda de las carpetas Windows, que lo único que hacen es joder el puro y prístino entorno *nix:

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

Ahora ya tenemos una Debian virginal, todo lo virginal que pueda ser ejecutándose dentro del entorno propietario que es Windows 10, el mal personificado en bytes.

Instalemos un montón de paquetes que nos van a hacer falta:

sudo apt-get install build-essential git patch wget unzip gettext autoconf automake cmake libtool nasm ragel luarocks libsdl2-dev libssl-dev libffi-dev libsdl2-dev libc6-dev-i386 xutils-dev linux-libc-dev zlib1g

(Cómo mola esto. Si instaláis todo eso, luego no tendréis que ir con que me falta este o aquel paquete, interrumpiendo la compililación cada dos por tres. A veces alguien hace su trabajo bien).

Continuamos. El siguiente paso es:

git clone https://github.com/koreader/koreader.git

Eso se baja unas cuantas cosas y las deploya en la carpeta koreader dependiente de tu home. (¡Toma jerga juanker!).

Siguiente:

cd koreader && ./kodev fetch-thirdparty

¡Hala! Dos comandos en uno. Juanker hasta la sepultura. 

Bueno, en serio, la parte fetch-thirdarty es la que suele fallar dentro del WSL2 debido a la parte de rutas Windows que trae el path por defecto, porque hay rutas con paréntesis. Eso se soluciona poniendo como cincuenta mil comillas en al menos un makefile. Pero son muchas comillas.

Inciso. A ver, ./kodev es un script que acepta un parámetro, y llama a lo que tenga que llamar en base a ese parámetro. Es otra buena idea de alguien, haciendo su trabajo. Mucho más fácil que teclear cosas como

Make -f makefile.luser –blah –for-whatever –on-the-rocks

Seguimos. Vale, fijaos en la salida del comando anterior (el de verdad, no la tontería que he puesto justo arriba). No tenéis que tener ningún tipo de error, y desde luego no los del tipo que generó todo este tema:

/bin/sh: 1: Syntax error: «(» unexpected

Si veis alguno de esos, o habéis seguido mal los pasos, o el gato de Schrödinger os está haciendo una mala pasada. O también puede ser que Linux sea una mierda. A ver, a mi, en dos equipos diferentes, me ha funcionado, así que debería funcionaros a vosotros, que sois menos buggers que yo.

Ya solo nos queda compilar:

./kodev build

Id a por un café, sobre todo si no tenéis un flamante i7/i9 de muchos cores.

¿Ya? ¿Algún error? ¿Tenéis alguna carpeta con este nombre?: 

koreader-emulator–debug

Pues si tenéis alguna, bienvenidos al mundo de la puta mierda y los bugs raros. Borrad esa carpeta y reintentad, quizás con una consola nueva. No es de mucho consuelo la consola, pero al menos te consuela (Ya sé, se me olvidó tomar la medicación hoy). Deberíais tener una como esta:

koreader-emulator-x86_64-linux-gnu-debug

Y ahí dentro está toda la mandanga. Probad desde el directorio en el que estábais antes (es decir $HOME/koreader, no el nuevo):

./kodev run

No va, ¿verdad? Pero ahora no es ningún error raro, simplemente no encuentra unas X por las que salir:

./luajit: ./ffi/SDL2_0.lua:92: Cannot initialize SDL: No available video device

Pero al menos ya tenemos compilado el tema. Ojo al dato, puede ocurrir que a veces falle la compilación, o que al ejecutar te de errores de carpetas que no existen o que están vacías, como la falsa de antes. O que las cree y luego diga que están mal.

Lo siento, tíos, la vida es dura y a veces pasa. En general la borras, vuelves a ejecutar y funciona. El puto gato de los putos cojones de nuevo. Es lo que hay.

Podríais intentarlo con una build release. En la documentación dice cómo hacerla, y funciona e incluso te genera un paquete Debian listo para instalar. Y se puede instalar, y funciona siempre que sigáis lo que explico más abajo.

Pr0n Windows, digo Windows Pelirroja, digo Xwindow

Vale, ya tenemos una versión de koreader compilada. Ahora necesitamos un servidor Xwindow para que pueda ejecturarse. Como somos unos sucios Windowseros, no tenemos de eso. Joder, hasta macOS tiene uno, pero nosotros somos cutres, así que tenemos que instalarlo.

El que suscribe se ha instado Xming. (No no tiene nada que ver con Flash Gordon ni la pornografía entre villanos). Os pongo la página de descarga porque hay varias versiones, hasta pijas que necesitan clave de acceso. Nosotros, como somos pobres que te cagas y amamos el software libre por encima del vil metal, nos conformamos con la versión libre, libre como el mar yo soy libre, etc.

Instalamos al Emperador de Mongo, pero no lo ejecutamos. En su lugar ejecutamos “Xlaunch” y configuramos con “Multiple Windows”, “Start no client” y “No access control”. La última opción es muy importante.

Al ejecutar nos saltará la ventanita esa que nos pregunta por redes privadas y públicas. Tenemos que activar el modo servidor para ambas. Sí, para la pública también o no funcionará. Esto se debe a que el conector de red virtual de WSL2 está marcado como público, San Bill Puertas sabrá por qué lo han hecho así.

Vale. Ahora toca el Firewall. Tenemos que activar el puerto TCP 6000 para entrantes, tanto para públicas como para privadas. Por el mismo motivo.

Aquí, quizás Samquejo YoVirtualizador aka el que habla Klingon podría explicarnos cómo restringir las reglas al virtual switch o como se llame del WSL2.

Instalamos “x11-apps” desde la consola. ¿Para qué? Paraguayo. Para no tener que andar viendo si lo que no nos va se debe a algo del koreader, del gato o de su puta madre. Ya sabéis:

sudo apt-get install x11-apps

Ejecutad xeyes (sí, la jilipollez esa que va mirando al ratón. ¿Que pa qué sirve ese programa? Os iba a responder que para probar si lo que no va se debe a koreader o a otra cosas, pero os diré su funcionalidad real: localizar el ratón en pantallas grandes).

No va (ya lo sabía. Nada va en Linux sin un grandísimo esfuerzo). Incluso hay que hacer flexiones con una mano sola y dando la palmada en un bosque sin árboles.

Os dirá algo así:

Error: Can’t open display:

Enviadme 50 euros en bitcoins y os explicaré por qué no va. Vaaaaale, lo haré gratis: es que xeyes no tiene ni puta idea por dónde salir. No hay X corriendo. Bueno, sí, el maligno Xming, pero están enfadados y no se hablan.

LIBGL_ALWAYS_INDIRECT=1

Eso de arriba es la primera cosa que tenéis que poner en la consola. Luego una de estas dos:

export DISPLAY=$(awk ‘/nameserver / {print $2; exit}’ /etc/resolv.conf 2>/dev/null):0

ó

export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk ‘{print $2}’):0

¿Por qué una de dos? Pues porque unas veces me ha funcionado una, otras la otra. A vuestra elección. ¿Y qué hacen esos arcanos? Pues si fuerais juankers del mismo nivel que yo, tampoco tendríais ni zorra idea. Vamos, que lo que hacen es poner en la variable de entorno DISPLAY la IP local y el puerto X. Algo así:

export DSIPLAY=192.168.1.1:0

Ahora ejecutad xeyes. ¿Va? Si no va es que estáis tontos del culo y habéis hecho algo mal, seguro que con el Firewall (lo digo porque me ha pasado). Desactivad el firewall. ¿Funciona ahora? Pues hala, a mirar qué habéis hecho mal, porque si dejáis el puto firewall desconectado, voy y os corro a gorrazos. Os envío a Stallman, que desde que no tiene vida pública no se ha duchado ni una sola vez.

Ahora sí que sí, ahora ya podemos ejecutar el puto koreader:

./kodev run

Y debería funcionar. Y si no lo hace, que os la pique un pollo belga, yo ya me he cansado de escribir. “A mi me va”. Hala, a kaskarla.

Resumen

A ver, una vez construido todo, tenéis que haceros un script para poder arrancar el tema sin tener que leerse un tutorial de dos mil palabras. Básicamente, algo así:

export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk ‘{print $2}’):0
LIBGL_ALWAYS_INDIRECT=1
./kodev run –no-build

Y ahora sí, adios y ojo con los pollos belgas. (Chiste de un holandés sobre belgas: ¿Sabéis por qué las mujeres belgas tienen los pezones de las tetas cuadrados? Porque los hombres comen muchas patatas).

Por RFOG | Dejar un comentario | Enlaza esta entrada
contacto@wintablet.info tema WinTablet.info por Ángel García (Hal9000)