Crochet / Ganchillo en Debian

Aplicaciones 10 de mar. de 2024

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":

Stitchworks Software
Stitchworks software graphics design software for symbol crochet

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.

GitHub - StitchworksSoftware/CrochetCharts: Graphics design software for crochet pattern designers
Graphics design software for crochet pattern designers - StitchworksSoftware/CrochetCharts

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:

Repositorio Debian de SoloConLinux
Ya tienes Debian 12 instalado y actualizado. ¿Y ahora qué? Si te has decidido a dar el paso a usar Linux, y eres nuevo con GNU/Linux puede que te encuentres con dudas sobre como usarlo y que aplicaciones usar... En breve publicaré una guía para los ‘newbies’ en Linux,

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

Captura de 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:

Etiquetas

Luis GuLo

🐧 SysAdmin GNU/Linux - 🐳 Docker - 🖥️ Bash Scripting - 🐪 Perl - 🐬 MySQL - 👥 Formador de TI - 👥 Formador de SysAdmin's - 💢 Ansible - ☁️ Cloud Computing - ❤️ Debian GNU/Linux