Crochet / Ganchillo en Debian
Para cada necesidad siempre hay una aplicación Open Source
Recientemente mi mujer, que también usa Debian como SO para su equipo personal, le ha surgido la necesidad de un software donde tener e incluso poder crear patrones de Crochet (el ganchillo de toda la vida).
Buscando algún software para ella, he encontrado el software que incluso tiene paquete para Debian, se trata de "Crochet Charts":
Las características de este software según la propia página es:
- Colocación libre de puntadas o generación rápida de hileras o rondas básicas.
- Tamaño de gráfico ilimitado y número de puntadas ilimitado.
- Exportar gráficos a formatos estándar de la industria: PDF, SVG, JPEG, PNG, TIFF, BMP.
- Leyendas de puntadas y colores personalizables.
- Exportar leyendas a PDF, SVG, JPEG, PNG, TIFF, BMP.
- Posibilidad de exportar el gráfico como texto sin formato.
- Puntadas escalables (usando SVG).
- Colores de fila alternos personalizados.
- Biblioteca de puntadas personalizable que incluye la posibilidad de tener múltiples conjuntos.
- Indicadores para marcar el gráfico con puntos y/o texto.
- Agrupa puntadas en una sola unidad.
- Líneas de cuña para ayudar a guiar la creación de gráficos redondos.
- Permitir varios gráficos en un documento.
- Y más...
Instalación y Fallo
Lo primero que he ido a comprobar es si podía descargar el programa (.deb) desde su repositorio e instalarlo.
El programa está sin "movimiento" ni actualizaciones desde hace más de 8 años y al ir a instalarlo falla por dependencia de librerías, ya que se trata de un programa compilado para Debian 10 (Buster) y usa librerías QT 4.8 (actualmente se usan QT 5.x y QT 6.x)
Primer acercamiento a la Solución
Lo primero que he realizado ha sido clonarme el "repo" e ir a modificar el programa que está realizado usando C++, Python, QT Designer y QMake.
Después de perder un rato grande recodificando y arreglando código deprecado y adaptando funciones que ya no funcionan a QT 5.x, he visto que me iba a llevar demasiado tiempo, ya que a cada corrección surgían otros errores relacionados, con lo que esta no iba a ser el métdo correcto para abordar el problema y llegar a una solución rápida para disponer del programa funcionando a corto plazo.
Segundo acercamiento y Solución
He extraído el binario compilado del paquete para Debian y he comprobado cuales son las dependencias y librerías necesarias para que funcione correctamente la aplicación.
El fichero 'control' me ha dado la primera pista:
Depends: libqtgui4 (>= 4.7.0), libqtcore4 (>= 4.7.0), libqt4-svg (>= 4.7.0), libqt4-xml (>= 4.7.0), libqt4-network (>= 4.7.0)
Despues he comprobado mediante el comando ldd las dependencias reales del binario:
$ ldd CrochetCharts
linux-vdso.so.1 (0x00007ffd2f7e5000)
libQtSvg.so.4 => not found
libQtGui.so.4 => not found
libQtNetwork.so.4 => not found
libQtCore.so.4 => not found
libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f4518600000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f4518921000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f4518f4d000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f451841f000)
/lib64/ld-linux-x86-64.so.2 (0x00007f4518fa3000)
La solución para hacer que funcione el programa es fácil, tan solo hay que descargar y dejar estas librerías que nos faltan en un directorio especial (para no "ensuciar" los directorios por defecto de Linux).
Luego usaremos el poder de la variable LD_LIBRARY_PATH, para que antes de ejecutarse el programa, le indicamos donde poder buscar otras librerías extra.
Me he descargado los paquetes Debian y he extraído de ellas las librerías necesarias, luego he realizado he indicado en LD_LIBRARY_PATH donde buscar la librerías y comprobado de nuevo mediante ldd, si el programa tiene disponible para usar todas las librerías necesarias:
# Indicamos ruta de librerias QT 4.8
export LD_LIBRARY_PATH=/opt/Crochet/libqt4
# Comprobamos con 'ldd' si dispongo de todas las librerias necesarias
ldd CrochetCharts
linux-vdso.so.1 (0x00007fff3b9e9000)
libQtSvg.so.4 => /opt/Crochet/libqt4/libQtSvg.so.4 (0x00007f61f9050000)
libQtGui.so.4 => /opt/Crochet/libqt4/libQtGui.so.4 (0x00007f61f7e00000)
libQtNetwork.so.4 => /opt/Crochet/libqt4/libQtNetwork.so.4 (0x00007f61f8ef0000)
libQtCore.so.4 => /opt/Crochet/libqt4/libQtCore.so.4 (0x00007f61f7a00000)
libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f61f7600000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f61f7d21000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f61f89ae000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f61f781f000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f61f898f000)
libfontconfig.so.1 => /lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007f61f8944000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f61f8ee9000)
libaudio.so.2 => /lib/x86_64-linux-gnu/libaudio.so.2 (0x00007f61f75e4000)
libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f61f74ac000)
libpng16.so.16 => /lib/x86_64-linux-gnu/libpng16.so.16 (0x00007f61f7476000)
libfreetype.so.6 => /lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f61f73ab000)
libgobject-2.0.so.0 => /lib/x86_64-linux-gnu/libgobject-2.0.so.0 (0x00007f61f734c000)
libSM.so.6 => /lib/x86_64-linux-gnu/libSM.so.6 (0x00007f61f8939000)
libICE.so.6 => /lib/x86_64-linux-gnu/libICE.so.6 (0x00007f61f732e000)
libXrender.so.1 => /lib/x86_64-linux-gnu/libXrender.so.1 (0x00007f61f7d14000)
libXext.so.6 => /lib/x86_64-linux-gnu/libXext.so.6 (0x00007f61f7319000)
libX11.so.6 => /lib/x86_64-linux-gnu/libX11.so.6 (0x00007f61f71d7000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f61f8ee0000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f61f7d0f000)
/lib64/ld-linux-x86-64.so.2 (0x00007f61f90af000)
libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f61f71ac000)
libXt.so.6 => /lib/x86_64-linux-gnu/libXt.so.6 (0x00007f61f7142000)
libXau.so.6 => /lib/x86_64-linux-gnu/libXau.so.6 (0x00007f61f7d0a000)
libpcre2-8.so.0 => /lib/x86_64-linux-gnu/libpcre2-8.so.0 (0x00007f61f70a8000)
libbrotlidec.so.1 => /lib/x86_64-linux-gnu/libbrotlidec.so.1 (0x00007f61f709b000)
libffi.so.8 => /lib/x86_64-linux-gnu/libffi.so.8 (0x00007f61f708f000)
libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007f61f7085000)
libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f61f706f000)
libxcb.so.1 => /lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f61f7045000)
libbrotlicommon.so.1 => /lib/x86_64-linux-gnu/libbrotlicommon.so.1 (0x00007f61f7022000)
libmd.so.0 => /lib/x86_64-linux-gnu/libmd.so.0 (0x00007f61f7015000)
libXdmcp.so.6 => /lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f61f6e00000)
¡Perfecto! El programa es capaz de resolver las librerías necesarias.
Inicio el programa y compruebo que funciona correctamente sin problemas.
Paquete Debian con la aplicación y librerías corregidas
El último paso ha sido sencillo, simplemente crearme mi propio paquete Debian (.deb) con su propio lanzador en el que se ajusta las librerías antes de iniciar el programa.
Si queréis disfrutar de esta aplicación, tan sólo tenéis que configurar el repositorio de SoloConLinux como repo extra en vuestro equipo, podéis hacerlo siguiendo las instrucciones del artículo:
Para instalar el programa tan sólo debéis salir al terminal y escribir:
# Actualizamos lista de paquetes de los repositorios
sudo apt update
# Instalamos CrochetCharts
sudo apt -y install crochetcharts
Crochet Charts
En la ruta /usr/share/CrochetCharts hay un manual en inglés en formato PDF, donde explican el funcionamiento completo del programa.
Podéis descargar una "traducción no oficial" que he realizado de la documentación desde el enlace siguiente: