Resuelto Kodi aborta con Alfa en Linux Mint 21 y Ubuntu 22.04 LTS

NOTA: actualizando Linux Mint 21 ya aplica la corrección que mueve Python a la versión 3.10.6. Esto resuelve el problema con Alfa, si bien persisten problemas con add-ons como Luar. Esto es debido a que están "pre-compilados" (ver aquí). El usuario @Pardiles ha comprobado que instalando la versión 3.8 de Python en vez de la 3.11 se solucionan todos los problemas.

Los add-ons de Kodi utilizan primariamente Python como lenguaje de programación. En plataformas como Windows o Android Kodi lleva el lenguaje Python embebido, pero en las plataformas Linux el lenguaje Python viene con el sistema operativo, ya que lo usan varios de sus módulos. En la versión de Linux Ubuntu 22.04 y en sus derivados, como Mint 21, la versión de Python que "viene de fábrica" es la 3.10.4.

Esta versión de Python tiene un problema con la librería Sqllite3 que causa la cancelación (crash) de Kodi (ver artículo Kodi crashes with segfault after changes to the library · Issue #21243 · xbmc/xbmc). Este problema está corregido a partir de la versión de Python 3.10.5, pero hasta que Linux incorpore esta versión hay dos alternativas: esperar, o instalar una versión de Python posterior que ya haya corregido el problema.

¿Cómo hacer que Kodi use una versión más moderna de Python sin estropear el sistema Linux?

Basado en las sugerencias de los usuarios descritas en el foro de Kodi, estos son los pasos recomendados para solventar el problema:

  • sudo apt install software-properties-common
  • sudo apt update -y && sudo apt upgrade -y
  • sudo add-apt-repository ppa:deadsnakes/ppa
  • sudo apt update -y && sudo apt upgrade -y
  • sudo apt install python3.11*
  • sudo apt install patchelf
  • sudo patchelf --replace-needed libpython3.10.so.1.0 libpython3.11.so.1.0 /usr/lib/x86_64-linux-gnu/kodi/kodi.bin

Con esto se instala la versión 3.11 de Python y pasa a ser la usada por Kodi, mientras el resto de los programa Linux siguen usando la versión 3.10 por defecto.

Si en algún momento Linux pasa a una versión 3.10 superior a 3.10.4, se puede deshacer el cambio de Kodi para que vuelva a usar la versión de Python del sistema. Para ello solo habría que ejecutar este comando:

- sudo patchelf --replace-needed libpython3.11.so.1.0 libpython3.10.so.1.0 /usr/lib/x86_64-linux-gnu/kodi/kodi.bin

Creemos que esto no interferirá con el normal funcionamiento de Linux, pero no asumimos ninguna responsabilidad sobre efectos secundarios que pudieran ocurrir.
 
Última edición:
  • Me gusta
Reacciones: paco125689

Pardiles

Usuario Novato
23 Oct 2017
6
2
3
54
Buenos dias, tardes o noches.... ¿sabeis si esto podria ser, tambien, la solucion para los problemas de funcionamiento del addon instalador Kelebek? Porque desde siempre nunca ha funcionado en las ultimas versiones de linux. Aparte de otros addons que tampoco funcionan, como Luar, Cristal, etcc.
Muchas gracias, y si he nombrado algo que no podia, no dudeis en eliminar el post.
Un saludo.
 
  • Me gusta
Reacciones: paco125689
24 Oct 2017
1.978
574
113
Pues eso requeriría un estudio de cada add-on. Si tienes algún sistema con Kodi-Python 3.10 inferior a 3.10.5, el problema puede afectar a muchos add-ons.
 
24 Oct 2017
1.978
574
113
He echado una ojeada a Luar para ver el problema, pero me imagino que al resto de add-ons que comentas les pasa lo mismo. La razón de que no funcione es bastante técnica, pero ahí va la explicación:

El código de programas hechos en Python es bastante transparente entre versiones. Con un poco de cuidado, como hacemos en Alfa, el código puede servir para las versiones 2 y 3 de Python.

Pero hay una función de Python que es incompatible entre versiones: marshal. Esta función se usa para pre-compilar los programas de Python, pero también para "camuflar u ofuscar" el código para que "no te lo copien". Esto obliga a tener una versión pre-compilada para cada versión "major" de Python: 2,7, 3,7, 3.8, etc

Kodi para sistemas Windows y Android (al menos) lleva embebida su propia versión de Python, que hoy día es la 3.8 para Kodi 19 y 20. Aquí no hay problema. El problema surge con Linux, donde Python es suministrado con el sistema operativo y no con Kodi. En Alfa tenemos dos módulos "ofuscados" y eso nos obliga a mantener 7 copias para las diferentes versiones de Python que nos podemos encontrar: 2,7, y 3.6 a 3.11. Cuando se lanza Kodi detectamos que versión de Python usa Kodi y aplicamos la versión correspondiente de nuestros módulos ofuscados.

Pero esto tiene obviamente una servidumbre: de entrada tenemos que tener instaladas 7 versiones del lenguaje Python en el PC, y luego compilar y subir la 7 versiones cada vez que hacemos un cambio en esos módulos. Lo hemos automatizado bastante, pero aún así...

Luar no lo hace. Luar tiene el código ofuscado para las versiones 2.x y para 3.8 (que son las usadas en Windows y Android), por tanto no va a funcionar en Linux con versiones de Python distintas a 3.8.

Una solución podría ser (no lo he probado) aplicar el tutorial descrito arriba pero con la versión 3.8 en vez de la versión 3.11. Supongo que funcionaría Alfa y los add-ons que comentas.
 

Pardiles

Usuario Novato
23 Oct 2017
6
2
3
54
Pues, la verdad, muchisimas gracias. Sobre todo por la molestia que te has pegado. El tema técnico no es que lo lleve muy alla, pero mas o menos he comprendio cual es el problema.
Sobre la posible solución que me aportas, esta noche lo probaré a ver como resulta. Supongo que ahora que tengo hecho lo de poner la version 3.11, tendre que hacer el proceso de deshacerlo con el comando:

- sudo patchelf --replace-needed libpython3.11.so.1.0 libpython3.10.so.1.0 /usr/lib/x86_64-linux-gnu/kodi/kodi.bin

Y luego volver hacer lo del principio cambiando 3.11 por 3.8

Con lo que consiga te comento. Aunque obtenga el resultado que obtenga, agradezco las molestias que te has tomado en esto, y las que os tomais todo el equipo en mantener este Addon. Para mi un IMPRESCINDIBLE en kodi. Saludos.
 
24 Oct 2017
1.978
574
113
Hola, creo que si después de instalar la 3.8 haces lo siguiente debería servir:
- sudo patchelf --replace-needed libpython3.11.so.1.0 libpython3.8.so.1.0 /usr/lib/x86_64-linux-gnu/kodi/kodi.bin
 
  • Me gusta
Reacciones: paco125689

Eva_lavi

Usuario Novato
26 Sep 2022
5
0
1
46
Hola chicos/as. Antes de nada quiero advertir que soy muy novata en linux asi que si digo algo que es obvio os ruego que perdoneis mi ignorancia. Como trata el tema de este foro al actualizar a Ubuntu 22.4 me encontré con el problema de que no funcionaba el addn de Alfa en Kodi. Seguí la solución en el terminal que puso kingbox (actualizar a Python 3.11 solo para kodi) y alfa funciona perfectamente. El problema es que ubuntu creo que ya ha actualizado Python a una versión nueva (la 3.10.6) que en teoria ya serviria para que alfa funcione en kodi. Al actualizar en el terminal me da un error (ahora lo adjunto) que creo que tiene que ver con la versión de Python 3.11. Utilicé el comando
"sudo patchelf --replace-needed libpython3.11.so.1.0 libpython3.10.so.1.0 /usr/lib/x86_64-linux-gnu/kodi/kodi.bin", como aconsejaba kingbox pero me sigue dando error. Captura desde 2022-09-26 18-48-11.png
 

Eva_lavi

Usuario Novato
26 Sep 2022
5
0
1
46
Hola , muchas gracias por tu ayuda, hice lo que me aconsejabas pero me sigue dando error.Captura desde 2022-09-27 11-59-14.pngCaptura desde 2022-09-27 11-53-10.pngCaptura desde 2022-09-27 11-59-14.png error.
 
24 Oct 2017
1.978
574
113
Es obvio que tienes algo mal en el sistema: "El paquete de sistema está roto"

He actualizado Linux Mint 21 y efectivamente pasa a Python 3.10.6. Yo tenía instalado también la versión 3.8 para Kodi y he podido para Kodi a la versión 3.10 y de vuelta a la 3.8 sin problemas. En ambos casos funciona Alfa.
 

paco125689

Usuario Novato
17 Oct 2017
1
1
3
35
El problema que tienes es debido a la instalacion de ppa:deadsnakes/ppa y la instalacion posterior de python3.11
Que aunque lo desinstales conservaras componentes del python instalado de ppa:deadsnakes/ppa
Prueba esto:
sudo apt-get install ppa-purge
sudo ppa-purge ppa:deadsnakes

Con esto se eliminan los rescoldos del python 3.11 que se instalo desde ppa:deadsnakes/ppa

sudo apt-get update && sudo apt-get upgrade
espero que con esto se eliminen los paquetes rotos, luego podras usar python 3.10 ó 3.8 segun el tutorial

Espero haber ayudado.
Un saludo
 
  • Me gusta
Reacciones: Eva_lavi

Eva_lavi

Usuario Novato
26 Sep 2022
5
0
1
46
Muchas gracias por vuestra ayuda e interés. Al final he resuelto el problema utilizando Synaptic. Saludos.
 

BENDER_35

Usuario Novato
17 Feb 2021
1
0
1
32
hola
siento reflotar de nuevo el tema, pero es necesario, ¿esta solucion seria valida para solucionar el cuelgue de alfa? ¿valdria tambien si desinstalo la 3.10 e instalo la 3.11? a mi nada mas instalar el alfa se me cuelga (tengo ubuntu mate 22.04)

SALU2
 

DieFeM

Miembro del equipo
Colaborador
4 Ago 2023
74
35
18
41
Girona, España
Sin saber el motivo por el que se te cuelga, dar una respuesta a esa pregunta sería dar palos de ciego. Pero por intentarlo no pierdes nada.