Build and package ogagent py3/qt6 for windows and linux #2
Loading…
Reference in New Issue
There is no content yet.
Delete Branch "py3-win"
Deleting a branch is permanent. Although the deleted branch may exist for a short time before cleaning up, in most cases it CANNOT be undone. Continue?
Para probar el agente de windows necesitamos un cliente de windows, pero en el ESXi todavía no tenemos automatizada la creación de clientes windows. Lo que he hecho fue usar https://github.com/dockur/windows, que crea un contenedor de docker con qemu (usando la imagen de dockerhub
dockurr/windows
) e instala windows dentro de manera automatizada.Hacen falta:
paso 1: instalar windows
Crear un yml para docker-compose, por ejemplo:
En el primer volumen (/custom.iso) usé una iso que tengo por aquí. Se puede omitir, y dockurr/windows se la baja de internet.
El segundo volumen (/storage) hace falta para almacenar el disco duro virtual de qemu y otras cosas. El directorio local puede ser cualquier directorio.
El tercero (/shared) es una unidad de red que será visible en windows bajo
\\host.lan\Data
. El directorio local debe ser el del repositorio de ogagent.Levantar el docker:
$ docker-compose --file natiwin11pro-devel.yml up -d
Conectarse con un navegador al VNC: http://localhost:8006/?resize=scale&autoconnect=true
paso 2: instalar python y demás
Abrir una ventana de powershell y ejecutar:
La instalación de NSIS es interactiva. No sé cómo evitarlo. Esto no bloquea la PR (basta con darle siguiente siguiente finalizar) pero sí bloquea el futuro CI.
paso 3: prepararativos
En powershell ejecutar:
Esto pone la versión del agente en varios archivos, y prepara algunas cosas del UI de QT. Además movemos el VC_redist a un sitio donde el NSIS lo va a buscar.
En powershell, desactivar antivirus y firewall. El primero hace falta porque cuando pyinstaller crea el exe, lo detecta como virus (lo hace desde que le puse
icon=['img\\oga.ico']
en el spec). El segundo hace falta para las pruebas. Esta es la máquina de desarrollo, así que no pasa nada por desactivar estas cosas.paso 4: compilar y empaquetar
Hay que copiar el .nsi para ejecutar makensis desde un directorio en particular. Evitarlo implica un diff de cierto tamaño que no creo que merezca la pena.
Tras la ejecución de makensis aparece un
OGAgentSetup-1.3.1.exe
en el directorio actual.Apagar windows.
paso 5: emular servidor de og
(usar la IP local correcta, obviamente). Este es un mini servidor HTTPS que acepta peticiones a
/cualquier/cosa
y responde con un objeto json vacío ({}
). También hace log por stdout de cada petición recibida. El agente envía cosas al servidor de og e ignora la respuesta, por lo que un json vacío nos sirve. Dejar este servidor ejecutándose en segundo plano.paso 6: ir a un windows nuevo e instalar el agente
Usar un yml ligeramente diferente (
natiwin11pro.yml
), donde solo cambian el container_name ("windows") y el volumen de /storage (/home/nati/Downloads/work/opengnsys/dockur-windows/windows
)En linux:
docker-compose --file natiwin11pro.yml up -d
.Ejecutar:
Durante la instalación hay que poner la IP donde está el servidor de og, que debe coincidir con la que hemos puesto en mojolicious.
La instalación del agente levanta el OGAgentService y éste realiza una petición POST al servidor de OG (a
/opengnsys/rest/ogagent/started
). La instalación también ejecuta el OGAgentUser, que hace otro POST al servidor (a/opengnsys/rest/ogagent/loggedin
).Podemos ver logs del OGAgentService y OGAgentUser respectivamente:
paso 7: comprobar que aparece el icono al lado de la hora
Con los últimos commits, esto quedó resuelto.
paso 8: reiniciar windows
Al reiniciar windows, tanto OGAgentService como OGAgentUser deberían levantarse solos, y deberían aparecer otra vez los siguientes POST en el servidor:
paso 9: consultar status al agente
paso 10: limpieza
sudo rm -vf **/__pycache__/*
(si no funciona, hay que hacershopt -s globstar
)Observaciones:
Sobre el tema de levantar el docker de windows todo bien
paso 2: instalar python y demás
La ruta que existe en el repo solo es \windows\setup.bat (es el que ejecuté y si instala varios componentes)
paso 3: prepararativos
En powershell ejecutar:
en src solo existe update.py, traté de ejecutarlo de varias formas pero no funciona, de entrada no existe python instalado en windows, no se si es de los paquetes que debieron quedar instalados en el paso 2. De cualquier forma, para validar, instalé directamente de la Tienda ambos aplicativos
python src/update.sh
python src/update.py
python3 src/update.sh
despues de eso ya no logré avanzar
Tienes razón, es f:\windows\setup.bat, y también es src/python.py. He estado moviendo archivos hasta el último momento. Acabo de editar.
¿Cómo que no tienes python en el sistema? En la salida del setup.bat ¿salió algún error?
Build and package ogagent py3/qt6 for windowsto Build and package ogagent py3/qt6 for windows and linuxSin hacer cambios adicionales al repo, la solución del icono también funciona en linux.
Para probarla en el ESXi hay que lanzar un entorno nuevo desde main e instalar el agente en un cliente con linux. Yo me he limitado a probarlo en local:
paso 1: crear deb
paso 2: desplegar VM
Yo usé virtualbox con una debian bookworm.
paso 3: instalar ogagent en la VM
Primero lanzamos el mismo emulador de ogserver que para windows:
Subimos el agente a la VM (por ejemplo
scp ogagent_1.3.1-1_all.deb nati@192.168.1.43:
) y por último en la VM lo instalamos (por ejemploapt-get install /home/nati/ogagent_1.3.1-1_all.deb
).paso 4: probar
En la VM como root:
En la VM en otra ventana, como usuario:
Reiniciar linux. El proceso de Service debería ejecutarse automáticamente al reiniciar. Y al iniciar sesión, el proceso de User también debería ejecutarse automáticamente. Y el icono también debería estar.
al ejecutar setup.bat aparece un error:
Image 1
Después continua la instalación, aparentemente sin problemas. Una vez que termina y se ejecuta el siguiente paso pero indica que python no se reconoce
Image 2
Para probar si se resolvia el problema se instaló python desde la Store
Image 3
pero envía otro error:
Image 4
En Err_install.png arriba de todo pone "curl: Failed to connect", es decir, que las descargas fallaron. Vuelve a ejecutarlo, o descarga las cosas a mano, o lo que sea.
Tenia esto en los logs
Solución: añadirle 1G de tamaño de RAM
En el paso 4 este comando
Hay que ejecutarlo en cmd, en Powershell ni con doble comillas ni comillas simples ni sin comillas funcionaba
It works!
Tambien aparece el icono de ogagen que te deja clickar a un "about"
Y al apagar aparece las otras peticiones
Y por ultimo
curl --insecure https://localhost:8000/opengnsys/status
{"status": "WIN", "loggedin": true, "session": "console"}luis@luis-Inspiron-5570:~
He probado a desinstalar el NSIS e instalarlo en modo silencioso de la siguiente forma:
No te aparece ninguna ventana de instalación ni el "siguiente siguiente finalizar".
Aparece al finalizar la carpeta NSIS en C://Program files (x86)/NSIS
Para ejecutar makensis en powershell:
C:\Pro
& 'C:\Program Files\'
& 'C:\Program Files (x86)\'
ns
& 'C:\Program Files (x86)\NSIS\'
ma
& 'C:\Program Files (x86)\NSIS\makensis.exe'
og
(ojo al espacio)& 'C:\Program Files (x86)\NSIS\makensis.exe' .\ogagent.nsi
Y funciona.
Y la captura de pantalla, creo que no querías subir esa ;)
ups vaya fallo. Era esta
La revisión de linux está en este mismo PR en otro comentario: #2 (comment)
Si le puedes echar un ojo, mergeo.
He revisado la versión de linux en Ubuntu 24.04 y aunque da un problema de dependencias al instalar, solventadas, se muestra el icono perfectamente.
arantuna@ubuntu2404:~$ sudo dpkg -i ogagent_1.3.1-1_all.deb [sudo] contraseña para arantuna: Seleccionando el paquete ogagent previamente no seleccionado. (Leyendo la base de datos ... 151142 ficheros o directorios instalados actualmente.) Preparando para desempaquetar ogagent_1.3.1-1_all.deb ... Desempaquetando ogagent (1.3.1-1) ... dpkg: problemas de dependencias impiden la configuración de ogagent: ogagent depende de python3-pyqt6; sin embargo: El paquete
python3-pyqt6' no está instalado.ogagent depende de python3-prctl; sin embargo:
El paquete `python3-prctl' no está instalado.
dpkg: error al procesar el paquete ogagent (--install):
problemas de dependencias - se deja sin configurar
Procesando disparadores para gnome-menus (3.36.0-1.1ubuntu3) ...
Procesando disparadores para desktop-file-utils (0.27-2build1) ...
Se encontraron errores al procesar:
ogagent
arantuna@ubuntu2404:~$ sudo apt install python3-pyqt6
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias... Hecho
Leyendo la información de estado... Hecho
Tal vez quiera ejecutar «apt --fix-broken install» para corregirlo.
Los siguientes paquetes tienen dependencias incumplidas:
ogagent : Depende: python3-prctl pero no va a instalarse
python3-pyqt6 : Depende: python3-pyqt6.sip (< 14) pero no va a instalarse
Depende: python3-pyqt6.sip (>= 13.6) pero no va a instalarse
Depende: libqt6core6t64 (>= 6.4.0) pero no va a instalarse
Depende: libqt6dbus6t64 (>= 6.4.0) pero no va a instalarse
Depende: libqt6gui6t64 (>= 6.4.0) pero no va a instalarse
Depende: libqt6network6t64 (>= 6.4.0) pero no va a instalarse
Depende: libqt6opengl6t64 (>= 6.3.0) pero no va a instalarse
Depende: libqt6openglwidgets6t64 (>= 6.2.4+dfsg-3~) pero no va a instalarse
Depende: libqt6printsupport6t64 (>= 6.2.4+dfsg-3~) pero no va a instalarse
Depende: libqt6sql6t64 (>= 6.2.4+dfsg-3~) pero no va a instalarse
Depende: libqt6test6t64 (>= 6.4.1) pero no va a instalarse
Depende: libqt6widgets6t64 (>= 6.4.0) pero no va a instalarse
Depende: libqt6xml6t64 (>= 6.2.4+dfsg-3~) pero no va a instalarse
Depende: qt6-base-abi (= 6.4.2)
E: Dependencias incumplidas. Intente «apt --fix-broken install» sin paquetes (o especifique una solución).
arantuna@ubuntu2404:~$ sudo apt --fix-broken
E: No tiene sentido la opción de línea de órdenes --fix-broken combinada con las otras opciones
arantuna@ubuntu2404:~$ sudo apt install --fix-broken
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias... Hecho
Leyendo la información de estado... Hecho
Corrigiendo dependencias... Listo
Se instalarán los siguientes paquetes adicionales:
libb2-1 libdouble-conversion3 libmd4c0 libpcre2-16-0 libqt6core6t64 libqt6dbus6t64 libqt6gui6t64
libqt6network6t64 libqt6opengl6t64 libqt6openglwidgets6t64 libqt6printsupport6t64 libqt6qml6
libqt6qmlmodels6 libqt6quick6 libqt6sql6-sqlite libqt6sql6t64 libqt6test6t64 libqt6waylandclient6
libqt6waylandcompositor6 libqt6waylandeglclienthwintegration6 libqt6waylandeglcompositorhwintegration6
libqt6widgets6t64 libqt6wlshellintegration6 libqt6xml6t64 libts0t64 python3-prctl python3-pyqt6
python3-pyqt6.sip qt6-gtk-platformtheme qt6-qpa-plugins qt6-translations-l10n qt6-wayland
Paquetes sugeridos:
qt6-qmltooling-plugins
Se instalarán los siguientes paquetes NUEVOS:
libb2-1 libdouble-conversion3 libmd4c0 libpcre2-16-0 libqt6core6t64 libqt6dbus6t64 libqt6gui6t64
libqt6network6t64 libqt6opengl6t64 libqt6openglwidgets6t64 libqt6printsupport6t64 libqt6qml6
libqt6qmlmodels6 libqt6quick6 libqt6sql6-sqlite libqt6sql6t64 libqt6test6t64 libqt6waylandclient6
libqt6waylandcompositor6 libqt6waylandeglclienthwintegration6 libqt6waylandeglcompositorhwintegration6
libqt6widgets6t64 libqt6wlshellintegration6 libqt6xml6t64 libts0t64 python3-prctl python3-pyqt6
python3-pyqt6.sip qt6-gtk-platformtheme qt6-qpa-plugins qt6-translations-l10n qt6-wayland
0 actualizados, 32 nuevos se instalarán, 0 para eliminar y 78 no actualizados.
1 no instalados del todo o eliminados.
Se necesita descargar 19,6 MB de archivos.
Se utilizarán 83,0 MB de espacio de disco adicional después de esta operación.
¿Desea continuar? [S/n]
...
...
arantuna@ubuntu2404:~$ sudo dpkg -i ogagent_1.3.1-1_all.deb
(Leyendo la base de datos ... 151811 ficheros o directorios instalados actualmente.)
Preparando para desempaquetar ogagent_1.3.1-1_all.deb ...
Desempaquetando ogagent (1.3.1-1) sobre (1.3.1-1) ...
Configurando ogagent (1.3.1-1) ...
Procesando disparadores para gnome-menus (3.36.0-1.1ubuntu3) ...
Procesando disparadores para desktop-file-utils (0.27-2build1) ...
`
Ocurre como en el resto, hay que revisar el "about" para actualizar la versión y el texto, pero funciona ok.
Un saludo,
A lo mejor en lugar de
sudo dpkg -i ogagent_1.3.1-1_all.deb
podías haber hechosudo apt-get install ./ogagent_1.3.1-1_all.deb
. No sé cuándo lo pusieron, pero ahora apt ya también es capaz de instalar paquetes del filesystem local.Mañana mergeo. Gracias!