Failed to execute operation: No such file or directory

¿Porque un systemctl enable myservice.service da este error?

Hoy es unos de esos días donde algo tan simple deja de funcionar. Te pongo en contexto: Un worker service creado en .NET 7.0 encargado de interactuar con un servicio de telefónia Asteriks y una API de .NET

Este servicio funciona correctamente en el servidor linux que cuenta con CentOS y una distro de «FreePBX». Por lo que se decidió pasar a servicio la ejecución del mismo.

Para ello, de acuerdo a la documentación de .NET tan solo con el siguiente archivo de texto es suficiente:

Host ASP.NET Core on Linux with Nginx | Microsoft Learn

[Unit]
Description=Example .NET Web API App running on Linux
After=network.target

[Service]
WorkingDirectory=/var/ami
ExecStart=/usr/bin/dotnet /var/ami/WorkerServiceAMI.dll
Restart=always

Restart service after 10 seconds if the dotnet service crashes:

RestartSec=10

KillSignal=SIGINT
SyslogIdentifier=dotnet-ami
User=root
Environment=ASPNETCORE_ENVIRONMENT=Production
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false

[Install]
WantedBy=multi-user.target

Una vez generado el mismo tan solo al ejecutar systemctl enable myservice.service debería funcionar pero recibía constantemente este error:

Failed to execute operation: No such file or directory

Luego de romperme la cabeza y no encontrar la solución en Google me puse analizar el porque no encontraba el archivo. Y entendí lo siguiente: Systemctl es parte del administrador de servicios del sistema, por lo tanto busca los archivos de forma predeterminada en /etc/systemd/system o /usr/lib/systemd/system.

Solución:

Copia el archivo dentro de esa ubicación y asunto arreglado.

Espero que te sirva este dato.

Maui con Mysql

Sino sábes lo que es net MAUI te dejo un video donde está bien explicado.

La historia corta es que es el framework de Microsoft para desarrollar aplicaciones móviles nativas para iOs, Android, MacOs y Windows.

En caso de que requieras persistencias historicamente se ha trabajado siempre con el motor SQLLite de forma local. Pero si quieres algo más robutos te conviene buscar un motor de bases de datos como PostgreSQL, MySQL, MSSQl, etc.

Pero la cuestión aquí es: «Puedo conectarme directamente a MySQL desde Net MAUI?

La respuesta corta es: «No, Lamentablemente no es posible». El problema está en la forma en que se realiza la encriptación de la conexión al motor, y el sistema operativo que la intenta hacer, por ejemplo Android.

Tuve varias horas cacharreando con el asunto, y cada paso que avanzaba, se compensaba con dos mas de retroceso.

¿Porque lo intente hacer?

A fines educativo, ya que no es la manera correcta.

¿Como deberías hacerlo?

Siempre a través de un servicio web (WebService Rest Ful). Es la mejor alternativa ya que simplemente con un cliente web (http client) podrás realizar la integración de una manera standarizada.