Do not load modules unconditionally #8

Merged
nserrano merged 2 commits from modules into main 2024-09-19 09:36:27 +02:00
Collaborator

User story: https://ognproject.evlt.uma.es/redmine/issues/530

The important change regarding module loading is on loader.py and the renamed file src/test_modules/server/ogAdmClient/__init__.py to src/opengnsys/modules/server/ogAdmClient/. The rest is code cleanup.

To test:

  • Run ogcore (see opengnsys/ogcore#10)
  • Build package of ogagent 1.3.5 (see wiki)
  • Install ogagent on a VM
  • Configure ogagent.cfg to point to the ogcore
  • Reboot the VM

Everything should work, eg:

  • ogcore should receive HTTP POST calls to /opengnsys/rest/ogagent/started and /opengnsys/rest/ogagent/loggedin (docker-compose logs --tail=10 -f ogcore-nginx)
  • the user instance of the agent must show the icon next to the clock
User story: https://ognproject.evlt.uma.es/redmine/issues/530 The important change regarding module loading is on `loader.py` and the renamed file `src/test_modules/server/ogAdmClient/__init__.py` to `src/opengnsys/modules/server/ogAdmClient/`. The rest is code cleanup. To test: - Run ogcore (see https://ognproject.evlt.uma.es/gitea/opengnsys/ogcore/pulls/10) - Build package of ogagent 1.3.5 ([see wiki](https://ognproject.evlt.uma.es/redmine/projects/opengnsys-dev/wiki/Creaci%C3%B3n_de_paquetes_del_agente)) - Install ogagent on a VM - Configure ogagent.cfg to point to the ogcore - Reboot the VM Everything should work, eg: - ogcore should receive HTTP POST calls to `/opengnsys/rest/ogagent/started` and `/opengnsys/rest/ogagent/loggedin` (`docker-compose logs --tail=10 -f ogcore-nginx`) - the user instance of the agent must show the icon next to the clock
nserrano added 2 commits 2024-08-29 11:15:12 +02:00
nserrano requested review from lgromero 2024-08-29 11:44:30 +02:00
nserrano requested review from vtroshchinskiy 2024-08-29 11:44:30 +02:00
nserrano requested review from aguerrero 2024-08-29 11:44:30 +02:00
nserrano requested review from arantuna 2024-08-29 11:44:30 +02:00
nserrano requested review from ggil 2024-08-29 11:44:30 +02:00
nserrano requested review from maranda 2024-08-29 11:51:48 +02:00
Collaborator

Hasta donde he avanzado encuentro las siguientes observaciones

Siguiendo las anotaciones en el PR opengnsys/ogcore#10 se logra levantar el servicio de ogcore sin problema

En cuanto al siguiente paso (Build package of ogagent 1.3.5 ) haria falta especificar algunas precondiciones:
Al ejecutar src/update.py marca el siguiente error:

Traceback (most recent call last):
  File "/opt/git/ogagent/src/update.py", line 42, in <module>
    process_ui()
  File "/opt/git/ogagent/src/update.py", line 36, in process_ui
    subprocess.run (['pyuic6', 'about-dialog.ui',   '-o', 'about_dialog_ui.py',   '-x'])
  File "/usr/lib/python3.10/subprocess.py", line 503, in run
    with Popen(*popenargs, **kwargs) as process:
  File "/usr/lib/python3.10/subprocess.py", line 971, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/usr/lib/python3.10/subprocess.py", line 1863, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'pyuic6'

Se debe a que no encuentra el comando pyuic6, que se instala de la siguiente forma:

pip install PyQt6
pip install pyqt6-tools

y en mi caso, se tuvo que agregar al PATH la ruta donde queda instalado ya que después de instalar no lo reconocía tampoco

export PATH=$PATH:/ruta/del/ejecutable/

Otra dependencia que falla en linux/build-packages.sh es debuild

linux/build-packages.sh: línea 6: debuild: orden no encontrada

Que se instala como sigue:

sudo apt update
sudo apt-get install devscripts

Una vez cubiertas las dependencias, llega a un punto que falla linux/build-packages.sh porque requiere firmar los archivos:

...
Now signing changes and any dsc files...
 signfile buildinfo ogagent_1.3.5-1_amd64.buildinfo OpenGnsys developers <info@opengnsys.es>
gpg: omitido "OpenGnsys developers <info@opengnsys.es>": No tenemos la clave secreta
gpg: /tmp/debsign.JyqaIIAN/ogagent_1.3.5-1_amd64.buildinfo: clear-sign failed: No tenemos la clave secreta
debsign: gpg error occurred!  Aborting....
debuild: fatal error at line 1112:
running debsign failed

Se genera una clave genérica con

gpg --full-generate-key

y queda firmado al parecer correctamente

Now signing changes and any dsc files...
 signfile buildinfo ogagent_1.3.5-1_amd64.buildinfo OpenGnsys developers <info@opengnsys.es>

 fixup_changes buildinfo ogagent_1.3.5-1_amd64.buildinfo ogagent_1.3.5-1_amd64.changes
 signfile changes ogagent_1.3.5-1_amd64.changes OpenGnsys developers <info@opengnsys.es>

Successfully signed buildinfo, changes files

despues de esto se genera el paquete ogagent_1.3.5-1_all.deb correctamente.

Hasta donde he avanzado encuentro las siguientes observaciones Siguiendo las anotaciones en el PR [opengnsys/ogcore#10](https://ognproject.evlt.uma.es/gitea/opengnsys/ogcore/pulls/10) se logra levantar el servicio de ogcore sin problema En cuanto al siguiente paso (Build package of ogagent 1.3.5 ) haria falta especificar algunas precondiciones: Al ejecutar **src/update.py** marca el siguiente error: ``` Traceback (most recent call last): File "/opt/git/ogagent/src/update.py", line 42, in <module> process_ui() File "/opt/git/ogagent/src/update.py", line 36, in process_ui subprocess.run (['pyuic6', 'about-dialog.ui', '-o', 'about_dialog_ui.py', '-x']) File "/usr/lib/python3.10/subprocess.py", line 503, in run with Popen(*popenargs, **kwargs) as process: File "/usr/lib/python3.10/subprocess.py", line 971, in __init__ self._execute_child(args, executable, preexec_fn, close_fds, File "/usr/lib/python3.10/subprocess.py", line 1863, in _execute_child raise child_exception_type(errno_num, err_msg, err_filename) FileNotFoundError: [Errno 2] No such file or directory: 'pyuic6' ``` Se debe a que no encuentra el comando pyuic6, que se instala de la siguiente forma: ``` pip install PyQt6 pip install pyqt6-tools ``` y en mi caso, se tuvo que agregar al PATH la ruta donde queda instalado ya que después de instalar no lo reconocía tampoco ``` export PATH=$PATH:/ruta/del/ejecutable/ ``` Otra dependencia que falla en **linux/build-packages.sh** es debuild ``` linux/build-packages.sh: línea 6: debuild: orden no encontrada ``` Que se instala como sigue: ``` sudo apt update sudo apt-get install devscripts ``` Una vez cubiertas las dependencias, llega a un punto que falla **linux/build-packages.sh** porque requiere firmar los archivos: ``` ... Now signing changes and any dsc files... signfile buildinfo ogagent_1.3.5-1_amd64.buildinfo OpenGnsys developers <info@opengnsys.es> gpg: omitido "OpenGnsys developers <info@opengnsys.es>": No tenemos la clave secreta gpg: /tmp/debsign.JyqaIIAN/ogagent_1.3.5-1_amd64.buildinfo: clear-sign failed: No tenemos la clave secreta debsign: gpg error occurred! Aborting.... debuild: fatal error at line 1112: running debsign failed ``` Se genera una clave genérica con ``` gpg --full-generate-key ``` y queda firmado al parecer correctamente ``` Now signing changes and any dsc files... signfile buildinfo ogagent_1.3.5-1_amd64.buildinfo OpenGnsys developers <info@opengnsys.es> fixup_changes buildinfo ogagent_1.3.5-1_amd64.buildinfo ogagent_1.3.5-1_amd64.changes signfile changes ogagent_1.3.5-1_amd64.changes OpenGnsys developers <info@opengnsys.es> Successfully signed buildinfo, changes files ``` despues de esto se genera el paquete **ogagent_1.3.5-1_all.deb** correctamente.
Poster
Collaborator

La clave GPG está en el keepassx, en el repo team.

La clave GPG está en el keepassx, en el repo team.
Poster
Collaborator

He modificado el wiki para añadir las dependencias de pyqt6-dev y devscripts.

He modificado el wiki para añadir las dependencias de pyqt6-dev y devscripts.
Collaborator

Me encontré con un problema con la instalación del agente en ubuntu 22.04(Instalación Limpia)
Al igual que en el proceso de compilación del paquete deb, marcó un error con la librería de PyQt6, hice la instalación de las dependencias, de diferentes formas (apt install PyQt6, pip install PyQt6, pip3 install PyQt6) pero me sigue dando un error de dependencias incumplidas

(la instalación se probó con apt install y con dpkg -i)

qindel@desktop:~$sudo apt install ./ogagent_1.3.5-1_all.deb
Leyendo la lista de paquetes... Hecho
Creando árbol de dependencias... Hecho
Leyendo información de estado... Hecho
Nota, seleccionando <<ogagent>> en lugar de <<.ogagent_1.3.5-1_all.deb>>
No se pudieron instalar algunos paquete. Esto puede significar que
usted pidió una situación imposible o, si se está usando la distribución
inestable, que algunos paquetes necesarios aún no se han creado o se
han sacado de <<Incoming>>

Los siguientes paquetes tienen dependencias incumplidas:
 ogagent: Depende: python3-pyqt6 pero no es instalable
E: No se pudieron corregir los problemas, usted ha retenido paquetes rotos

Sin embargo, realicé una prueba para validar que PyQt6 estuviera correctamente instalado y funciona de forma correcta, este es el archivo test.py con el que se verificó:

from PyQt6.QtWidgets import QApplication, QLabel, QWidget

app = QApplication([])
window = QWidget()
label = QLabel('¡PyQt6 está funcionando correctamente!', parent=window)
window.show()
app.exec()

se ejecuta con python3 test.py y genera una ventana correctamente, por lo que se descarta que sea un problema de instalación

No se si se tenga que probar con una versión de OS en particular.

Me encontré con un problema con la instalación del agente en ubuntu 22.04(Instalación Limpia) Al igual que en el proceso de compilación del paquete deb, marcó un error con la librería de PyQt6, hice la instalación de las dependencias, de diferentes formas (apt install PyQt6, pip install PyQt6, pip3 install PyQt6) pero me sigue dando un error de dependencias incumplidas (la instalación se probó con apt install y con dpkg -i) ``` qindel@desktop:~$sudo apt install ./ogagent_1.3.5-1_all.deb Leyendo la lista de paquetes... Hecho Creando árbol de dependencias... Hecho Leyendo información de estado... Hecho Nota, seleccionando <<ogagent>> en lugar de <<.ogagent_1.3.5-1_all.deb>> No se pudieron instalar algunos paquete. Esto puede significar que usted pidió una situación imposible o, si se está usando la distribución inestable, que algunos paquetes necesarios aún no se han creado o se han sacado de <<Incoming>> Los siguientes paquetes tienen dependencias incumplidas: ogagent: Depende: python3-pyqt6 pero no es instalable E: No se pudieron corregir los problemas, usted ha retenido paquetes rotos ``` Sin embargo, realicé una prueba para validar que PyQt6 estuviera correctamente instalado y funciona de forma correcta, este es el archivo test.py con el que se verificó: ``` from PyQt6.QtWidgets import QApplication, QLabel, QWidget app = QApplication([]) window = QWidget() label = QLabel('¡PyQt6 está funcionando correctamente!', parent=window) window.show() app.exec() ``` se ejecuta con *python3 test.py* y genera una ventana correctamente, por lo que se descarta que sea un problema de instalación No se si se tenga que probar con una versión de OS en particular.
Poster
Collaborator

Hace falta ubuntu 23.10 o debian 12 como mínimo.

Hace falta ubuntu 23.10 o debian 12 como mínimo.
Poster
Collaborator

ya resolví los problemas de dependencias y paquetes rotos que me marca para instalar el agente.

cómo resolviste esos problemas?

Por favor, escribe aquí en el PR y no en el chat

> ya resolví los problemas de dependencias y paquetes rotos que me marca para instalar el agente. cómo resolviste esos problemas? Por favor, escribe aquí en el PR y no en el chat
Poster
Collaborator

En referencia al problema: AttributeError: 'FileFinder' object has no attribute 'find_module'

¿qué versión de python tienes? python3 --version

En referencia al problema: `AttributeError: 'FileFinder' object has no attribute 'find_module'` ¿qué versión de python tienes? `python3 --version `
Collaborator

He vuelto a realizar la prueba, adjunto toda la información relevante

OS: Ubuntu Desktop 24.04

qindel@desktop:~$ cat /etc/os-release 
PRETTY_NAME="Ubuntu 24.04 LTS"
NAME="Ubuntu"
VERSION_ID="24.04"
VERSION="24.04 LTS (Noble Numbat)"
VERSION_CODENAME=noble
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=noble
LOGO=ubuntu-logo

Se hizo update antes de comenzar con la instalación

qindel@desktop:~$ sudo apt update
[sudo] contraseña para qindel: 
Obj:1 http://security.ubuntu.com/ubuntu noble-security InRelease
Obj:2 http://archive.ubuntu.com/ubuntu noble InRelease
Obj:3 http://archive.ubuntu.com/ubuntu noble-updates InRelease
Obj:4 http://archive.ubuntu.com/ubuntu noble-backports InRelease
Leyendo lista de paquetes... Hecho
Creando árbol de dependencias... Hecho
Leyendo la información de estado... Hecho
Se pueden actualizar 309 paquetes. Ejecute «apt list --upgradable» para verlos.

Se ejecuta upgrade para actualizar a los paquetes mas recientes:

sudo apt upgrade

Version de python:

qindel@desktop:~$ python3 --version
Python 3.12.3

Se agregan permisos para ejecutar el instalador del ogagent:

qindel@desktop:~$ chmod a+x ogagent_1.3.4-1_all.deb

Se ejecuta la instalación del paquete

con dpkg:

qindel@desktop:~$ sudo dpkg -i ogagent_1.3.4-1_all.deb 
[sudo] contraseña para qindel: 
Seleccionando el paquete ogagent previamente no seleccionado.
(Leyendo la base de datos ... 191323 ficheros o directorios instalados actualmente.)
Preparando para desempaquetar ogagent_1.3.4-1_all.deb ...
Desempaquetando ogagent (1.3.4-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

con apt install:

qindel@desktop:~$ sudo apt install ./ogagent_1.3.4-1_all.deb 
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-pyqt6 pero no está instalado
           Depende: python3-prctl pero no está instalado
E: Dependencias incumplidas. Intente «apt --fix-broken install» sin paquetes (o especifique una solución).

Básicamente, hasta aquí se puede avanzar sin hacer tareas adicionales.

A modo de prueba, si se intentan instalar los mismos paquetes que se requieren para compilar el paquete de linux, buscando que estos paquetes contengan las dependencias solicitadas arroja lo siguiente:

qindel@desktop:~$ sudo apt-get install dpkg-dev devscripts debhelper lintian dh-python pyqt6-dev-tools
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:
 debhelper : Depende: autotools-dev pero no va a instalarse
             Depende: dh-autoreconf (>= 17~) pero no va a instalarse
             Depende: dh-strip-nondeterminism (>= 0.028~) pero no va a instalarse
             Depende: debugedit pero no va a instalarse
             Depende: dwz (>= 0.12.20190711) pero no va a instalarse
             Depende: libdebhelper-perl (= 13.14.1ubuntu5) pero no va a instalarse
             Depende: libdpkg-perl (>= 1.17.14) pero no va a instalarse
             Depende: po-debconf pero no va a instalarse
 devscripts : Depende: libfile-dirlist-perl pero no va a instalarse
              Depende: libfile-homedir-perl pero no va a instalarse
              Depende: libfile-touch-perl pero no va a instalarse
              Depende: libfile-which-perl pero no va a instalarse
              Depende: libipc-run-perl pero no va a instalarse
              Depende: libmoo-perl pero no va a instalarse
              Depende: patchutils pero no va a instalarse
              Depende: wdiff pero no va a instalarse
              Recomienda: dctrl-tools pero no va a instalarse
              Recomienda: dput o
                          dupload pero no va a instalarse
              Recomienda: libdistro-info-perl pero no va a instalarse
              Recomienda: libdpkg-perl pero no va a instalarse
              Recomienda: libgit-wrapper-perl pero no va a instalarse
              Recomienda: libjson-perl pero no va a instalarse
              Recomienda: liblist-compare-perl pero no va a instalarse
              Recomienda: libstring-shellquote-perl pero no va a instalarse
              Recomienda: licensecheck pero no va a instalarse
              Recomienda: python3-magic pero no va a instalarse
              Recomienda: python3-unidiff pero no va a instalarse
 dh-python : Depende: python3-setuptools pero no va a instalarse
 dpkg-dev : Depende: libdpkg-perl (= 1.22.6ubuntu6.1) pero no va a instalarse
            Depende: bzip2 pero no va a instalarse
            Depende: make
            Depende: binutils pero no va a instalarse
            Depende: lto-disabled-list pero no va a instalarse
            Recomienda: build-essential pero no va a instalarse
            Recomienda: gcc pero no va a instalarse o
                        c-compiler
            Recomienda: fakeroot
            Recomienda: libalgorithm-merge-perl pero no va a instalarse
 lintian : Depende: binutils pero no va a instalarse
           Depende: bzip2 pero no va a instalarse
           Depende: diffstat pero no va a instalarse
           Depende: gettext pero no va a instalarse
           Depende: intltool-debian pero no va a instalarse
           Depende: libapt-pkg-perl pero no va a instalarse
           Depende: libarchive-zip-perl pero no va a instalarse
           Depende: libberkeleydb-perl pero no va a instalarse
           Depende: libcapture-tiny-perl pero no va a instalarse
           Depende: libclass-xsaccessor-perl pero no va a instalarse
           Depende: libconfig-tiny-perl pero no va a instalarse
           Depende: libconst-fast-perl pero no va a instalarse
           Depende: libcpanel-json-xs-perl pero no va a instalarse
           Depende: libdata-dpath-perl pero no va a instalarse
           Depende: libdata-validate-domain-perl pero no va a instalarse
           Depende: libdata-validate-uri-perl pero no va a instalarse
           Depende: libdevel-size-perl pero no va a instalarse
           Depende: libdpkg-perl pero no va a instalarse
           Depende: libemail-address-xs-perl pero no va a instalarse
           Depende: libfile-find-rule-perl pero no va a instalarse
           Depende: libfont-ttf-perl pero no va a instalarse
           Depende: libhtml-html5-entities-perl pero no va a instalarse
           Depende: libhtml-tokeparser-simple-perl pero no va a instalarse
           Depende: libio-interactive-perl pero no va a instalarse
           Depende: libipc-run3-perl pero no va a instalarse
           Depende: libjson-maybexs-perl pero no va a instalarse
           Depende: liblist-compare-perl pero no va a instalarse
           Depende: liblist-someutils-perl pero no va a instalarse
           Depende: liblist-utilsby-perl pero no va a instalarse
           Depende: libmldbm-perl pero no va a instalarse
           Depende: libmoo-perl pero no va a instalarse
           Depende: libmoox-aliases-perl pero no va a instalarse
           Depende: libnamespace-clean-perl pero no va a instalarse
           Depende: libpath-tiny-perl pero no va a instalarse
           Depende: libperlio-gzip-perl pero no va a instalarse
           Depende: libperlio-utf8-strict-perl pero no va a instalarse
           Depende: libproc-processtable-perl pero no va a instalarse
           Depende: libregexp-wildcards-perl pero no va a instalarse
           Depende: libsereal-decoder-perl pero no va a instalarse
           Depende: libsereal-encoder-perl pero no va a instalarse
           Depende: libsort-versions-perl pero no va a instalarse
           Depende: libsyntax-keyword-try-perl pero no va a instalarse
           Depende: libterm-readkey-perl pero no va a instalarse
           Depende: libtext-levenshteinxs-perl pero no va a instalarse
           Depende: libtext-markdown-discount-perl pero no va a instalarse
           Depende: libtext-xslate-perl pero no va a instalarse
           Depende: libtime-duration-perl pero no va a instalarse
           Depende: libtime-moment-perl pero no va a instalarse
           Depende: libunicode-utf8-perl pero no va a instalarse
           Depende: libwww-mechanize-perl pero no va a instalarse
           Depende: libxml-libxml-perl pero no va a instalarse
           Depende: libyaml-libyaml-perl pero no va a instalarse
           Depende: lzip pero no va a instalarse o
                    lzip-decompressor
           Depende: lzop pero no va a instalarse
           Depende: patchutils pero no va a instalarse
           Depende: t1utils pero no va a instalarse
 ogagent : Depende: python3-pyqt6 pero no va a instalarse
           Depende: python3-prctl pero no va a instalarse
 pyqt6-dev-tools : Depende: python3-pyqt6 (>= 6.6.1-2build4) pero no va a instalarse
E: Dependencias incumplidas. Intente «apt --fix-broken install» sin paquetes (o especifique una solución).
He vuelto a realizar la prueba, adjunto toda la información relevante OS: Ubuntu Desktop 24.04 ``` qindel@desktop:~$ cat /etc/os-release PRETTY_NAME="Ubuntu 24.04 LTS" NAME="Ubuntu" VERSION_ID="24.04" VERSION="24.04 LTS (Noble Numbat)" VERSION_CODENAME=noble ID=ubuntu ID_LIKE=debian HOME_URL="https://www.ubuntu.com/" SUPPORT_URL="https://help.ubuntu.com/" BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/" PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy" UBUNTU_CODENAME=noble LOGO=ubuntu-logo ``` Se hizo update antes de comenzar con la instalación ``` qindel@desktop:~$ sudo apt update [sudo] contraseña para qindel: Obj:1 http://security.ubuntu.com/ubuntu noble-security InRelease Obj:2 http://archive.ubuntu.com/ubuntu noble InRelease Obj:3 http://archive.ubuntu.com/ubuntu noble-updates InRelease Obj:4 http://archive.ubuntu.com/ubuntu noble-backports InRelease Leyendo lista de paquetes... Hecho Creando árbol de dependencias... Hecho Leyendo la información de estado... Hecho Se pueden actualizar 309 paquetes. Ejecute «apt list --upgradable» para verlos. ``` Se ejecuta upgrade para actualizar a los paquetes mas recientes: ``` sudo apt upgrade ``` Version de python: ``` qindel@desktop:~$ python3 --version Python 3.12.3 ``` Se agregan permisos para ejecutar el instalador del ogagent: ``` qindel@desktop:~$ chmod a+x ogagent_1.3.4-1_all.deb ``` Se ejecuta la instalación del paquete con dpkg: ``` qindel@desktop:~$ sudo dpkg -i ogagent_1.3.4-1_all.deb [sudo] contraseña para qindel: Seleccionando el paquete ogagent previamente no seleccionado. (Leyendo la base de datos ... 191323 ficheros o directorios instalados actualmente.) Preparando para desempaquetar ogagent_1.3.4-1_all.deb ... Desempaquetando ogagent (1.3.4-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 ``` con apt install: ``` qindel@desktop:~$ sudo apt install ./ogagent_1.3.4-1_all.deb 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-pyqt6 pero no está instalado Depende: python3-prctl pero no está instalado E: Dependencias incumplidas. Intente «apt --fix-broken install» sin paquetes (o especifique una solución). ``` Básicamente, hasta aquí se puede avanzar sin hacer tareas adicionales. A modo de prueba, si se intentan instalar los mismos paquetes que se requieren para compilar el paquete de linux, buscando que estos paquetes contengan las dependencias solicitadas arroja lo siguiente: ``` qindel@desktop:~$ sudo apt-get install dpkg-dev devscripts debhelper lintian dh-python pyqt6-dev-tools 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: debhelper : Depende: autotools-dev pero no va a instalarse Depende: dh-autoreconf (>= 17~) pero no va a instalarse Depende: dh-strip-nondeterminism (>= 0.028~) pero no va a instalarse Depende: debugedit pero no va a instalarse Depende: dwz (>= 0.12.20190711) pero no va a instalarse Depende: libdebhelper-perl (= 13.14.1ubuntu5) pero no va a instalarse Depende: libdpkg-perl (>= 1.17.14) pero no va a instalarse Depende: po-debconf pero no va a instalarse devscripts : Depende: libfile-dirlist-perl pero no va a instalarse Depende: libfile-homedir-perl pero no va a instalarse Depende: libfile-touch-perl pero no va a instalarse Depende: libfile-which-perl pero no va a instalarse Depende: libipc-run-perl pero no va a instalarse Depende: libmoo-perl pero no va a instalarse Depende: patchutils pero no va a instalarse Depende: wdiff pero no va a instalarse Recomienda: dctrl-tools pero no va a instalarse Recomienda: dput o dupload pero no va a instalarse Recomienda: libdistro-info-perl pero no va a instalarse Recomienda: libdpkg-perl pero no va a instalarse Recomienda: libgit-wrapper-perl pero no va a instalarse Recomienda: libjson-perl pero no va a instalarse Recomienda: liblist-compare-perl pero no va a instalarse Recomienda: libstring-shellquote-perl pero no va a instalarse Recomienda: licensecheck pero no va a instalarse Recomienda: python3-magic pero no va a instalarse Recomienda: python3-unidiff pero no va a instalarse dh-python : Depende: python3-setuptools pero no va a instalarse dpkg-dev : Depende: libdpkg-perl (= 1.22.6ubuntu6.1) pero no va a instalarse Depende: bzip2 pero no va a instalarse Depende: make Depende: binutils pero no va a instalarse Depende: lto-disabled-list pero no va a instalarse Recomienda: build-essential pero no va a instalarse Recomienda: gcc pero no va a instalarse o c-compiler Recomienda: fakeroot Recomienda: libalgorithm-merge-perl pero no va a instalarse lintian : Depende: binutils pero no va a instalarse Depende: bzip2 pero no va a instalarse Depende: diffstat pero no va a instalarse Depende: gettext pero no va a instalarse Depende: intltool-debian pero no va a instalarse Depende: libapt-pkg-perl pero no va a instalarse Depende: libarchive-zip-perl pero no va a instalarse Depende: libberkeleydb-perl pero no va a instalarse Depende: libcapture-tiny-perl pero no va a instalarse Depende: libclass-xsaccessor-perl pero no va a instalarse Depende: libconfig-tiny-perl pero no va a instalarse Depende: libconst-fast-perl pero no va a instalarse Depende: libcpanel-json-xs-perl pero no va a instalarse Depende: libdata-dpath-perl pero no va a instalarse Depende: libdata-validate-domain-perl pero no va a instalarse Depende: libdata-validate-uri-perl pero no va a instalarse Depende: libdevel-size-perl pero no va a instalarse Depende: libdpkg-perl pero no va a instalarse Depende: libemail-address-xs-perl pero no va a instalarse Depende: libfile-find-rule-perl pero no va a instalarse Depende: libfont-ttf-perl pero no va a instalarse Depende: libhtml-html5-entities-perl pero no va a instalarse Depende: libhtml-tokeparser-simple-perl pero no va a instalarse Depende: libio-interactive-perl pero no va a instalarse Depende: libipc-run3-perl pero no va a instalarse Depende: libjson-maybexs-perl pero no va a instalarse Depende: liblist-compare-perl pero no va a instalarse Depende: liblist-someutils-perl pero no va a instalarse Depende: liblist-utilsby-perl pero no va a instalarse Depende: libmldbm-perl pero no va a instalarse Depende: libmoo-perl pero no va a instalarse Depende: libmoox-aliases-perl pero no va a instalarse Depende: libnamespace-clean-perl pero no va a instalarse Depende: libpath-tiny-perl pero no va a instalarse Depende: libperlio-gzip-perl pero no va a instalarse Depende: libperlio-utf8-strict-perl pero no va a instalarse Depende: libproc-processtable-perl pero no va a instalarse Depende: libregexp-wildcards-perl pero no va a instalarse Depende: libsereal-decoder-perl pero no va a instalarse Depende: libsereal-encoder-perl pero no va a instalarse Depende: libsort-versions-perl pero no va a instalarse Depende: libsyntax-keyword-try-perl pero no va a instalarse Depende: libterm-readkey-perl pero no va a instalarse Depende: libtext-levenshteinxs-perl pero no va a instalarse Depende: libtext-markdown-discount-perl pero no va a instalarse Depende: libtext-xslate-perl pero no va a instalarse Depende: libtime-duration-perl pero no va a instalarse Depende: libtime-moment-perl pero no va a instalarse Depende: libunicode-utf8-perl pero no va a instalarse Depende: libwww-mechanize-perl pero no va a instalarse Depende: libxml-libxml-perl pero no va a instalarse Depende: libyaml-libyaml-perl pero no va a instalarse Depende: lzip pero no va a instalarse o lzip-decompressor Depende: lzop pero no va a instalarse Depende: patchutils pero no va a instalarse Depende: t1utils pero no va a instalarse ogagent : Depende: python3-pyqt6 pero no va a instalarse Depende: python3-prctl pero no va a instalarse pyqt6-dev-tools : Depende: python3-pyqt6 (>= 6.6.1-2build4) pero no va a instalarse E: Dependencias incumplidas. Intente «apt --fix-broken install» sin paquetes (o especifique una solución). ```
Poster
Collaborator

Gracias por confirmar que tienes python 3.12. Lo sospechaba 🙃

Respecto a dpkg/apt, está todo normal:

Al hacer sudo dpkg -i ogagent_1.3.4-1_all.deb el sistema de paquetes queda roto y se niega a continuar hasta que hagas apt --fix-broken install. No hay que llamar a dpkg excepto que tengas todas las dependencias satisfechas de antemano. Hay que llamar a apt de primeras.

Para solucionar lo que tienes ahora: primero apt --fix-broken install y luego ya podrás hacer sudo apt install ./ogagent_1.3.4-1_all.deb.

Si después de eso te sigue saliendo Depende: python3-pyqt6 pero … entonces prueba sudo apt install python3-pyqt6 y a ver qué sale.

Gracias por confirmar que tienes python 3.12. Lo sospechaba 🙃 Respecto a dpkg/apt, está todo normal: Al hacer `sudo dpkg -i ogagent_1.3.4-1_all.deb` el sistema de paquetes queda roto y se niega a continuar hasta que hagas `apt --fix-broken install`. No hay que llamar a `dpkg` excepto que tengas todas las dependencias satisfechas de antemano. Hay que llamar a `apt` de primeras. Para solucionar lo que tienes ahora: primero `apt --fix-broken install` y luego ya podrás hacer `sudo apt install ./ogagent_1.3.4-1_all.deb`. Si después de eso te sigue saliendo `Depende: python3-pyqt6 pero …` entonces prueba `sudo apt install python3-pyqt6` y a ver qué sale.
Poster
Collaborator
--- a/src/opengnsys/loader.py
+++ b/src/opengnsys/loader.py
@@ -43,6 +43,8 @@ from opengnsys.workers import ServerWorker
 from opengnsys.workers import ClientWorker
 from .log import logger
 
+PY3_12 = sys.version_info[0:2] >= (3, 12)
+
 
 def loadModules(controller, client=False):
     '''
@@ -89,7 +91,11 @@ def loadModules(controller, client=False):
         for (module_loader, name, ispkg) in pkgutil.iter_modules(paths, modPath + '.'):
             if ispkg:
                 logger.debug('Found module package {}'.format(name))
-                module_loader.find_module(name).load_module(name)
+                if PY3_12:
+                    loader = module_loader.find_spec(name).loader
+                else:
+                    loader = module_loader.find_module(name)
+                loader.load_module(name)
 
     
     if controller.config.has_option('opengnsys', 'path') is True:
``` --- a/src/opengnsys/loader.py +++ b/src/opengnsys/loader.py @@ -43,6 +43,8 @@ from opengnsys.workers import ServerWorker from opengnsys.workers import ClientWorker from .log import logger +PY3_12 = sys.version_info[0:2] >= (3, 12) + def loadModules(controller, client=False): ''' @@ -89,7 +91,11 @@ def loadModules(controller, client=False): for (module_loader, name, ispkg) in pkgutil.iter_modules(paths, modPath + '.'): if ispkg: logger.debug('Found module package {}'.format(name)) - module_loader.find_module(name).load_module(name) + if PY3_12: + loader = module_loader.find_spec(name).loader + else: + loader = module_loader.find_module(name) + loader.load_module(name) if controller.config.has_option('opengnsys', 'path') is True: ```
Collaborator

Realizando el cambio en src/opengnsys/loader.py y ejecutando :

sudo apt --fix-broken install

queda todo corregido e instalado correctamente.

Para las pruebas se modifica el archivo /etc/ogagent/ogagent.cfg

[opengnsys]
# Listen address & port of REST
address=0.0.0.0
port=8000

# This is a comma separated list of paths where to look for modules to load
path=test_modules/server

# Remote OpenGnsys Service
remote=http://192.168.56.1:7500/opengnsys/rest
# Alternate OpenGnsys Service (comment out to enable this option)
#altremote=https://10.0.2.2/opengnsys/rest

# Execution level (permitted operations): status, halt, full
level=full

# Log Level, if omitted, will be set to INFO
log=DEBUG

# Module specific
# The sections must match the module name
# This section will be passes on activation to module
[ogAdmClient]
#path=test_modules/server
## this URL will probably be left equal to the other one, but let's see
remote=http://192.168.56.1:7500/opengnsys/rest
log=DEBUG

#servidorAdm=192.168.2.1
#puerto=2008
pathinterface=/opt/opengnsys/interfaceAdm
urlMenu=http://192.168.56.1:7500/opengnsys/varios/menubrowser.php
urlMsg=http://localhost/cgi-bin/httpd-log.sh

Fué reeemplazada la IP por defecto por 192.168.56.1:7500, en mi caso.

Se reinicia la VM cliente, no sin antes dejar ejecutando docker-compose logs --tail=10 -f nginx y al iniciar, se ven las peticiones que se esperaban a ogCore:

ogcore-nginx | 192.168.56.113 - - [18/Sep/2024:19:09:08 +0000] "POST /opengnsys/rest/ogagent/started HTTP/1.1" 200 12 "-" "python-requests/2.31.0"
ogcore-nginx | 192.168.56.113 - - [18/Sep/2024:19:09:23 +0000] "POST /opengnsys/rest/ogagent/loggedin HTTP/1.1" 200 12 "-" "python-requests/2.31.0"

por lo que se puede dar visto bueno de este proceso.

Realizando el cambio en src/opengnsys/loader.py y ejecutando : ``` sudo apt --fix-broken install ``` queda todo corregido e instalado correctamente. Para las pruebas se modifica el archivo /etc/ogagent/ogagent.cfg ``` [opengnsys] # Listen address & port of REST address=0.0.0.0 port=8000 # This is a comma separated list of paths where to look for modules to load path=test_modules/server # Remote OpenGnsys Service remote=http://192.168.56.1:7500/opengnsys/rest # Alternate OpenGnsys Service (comment out to enable this option) #altremote=https://10.0.2.2/opengnsys/rest # Execution level (permitted operations): status, halt, full level=full # Log Level, if omitted, will be set to INFO log=DEBUG # Module specific # The sections must match the module name # This section will be passes on activation to module [ogAdmClient] #path=test_modules/server ## this URL will probably be left equal to the other one, but let's see remote=http://192.168.56.1:7500/opengnsys/rest log=DEBUG #servidorAdm=192.168.2.1 #puerto=2008 pathinterface=/opt/opengnsys/interfaceAdm urlMenu=http://192.168.56.1:7500/opengnsys/varios/menubrowser.php urlMsg=http://localhost/cgi-bin/httpd-log.sh ``` Fué reeemplazada la IP por defecto por 192.168.56.1:7500, en mi caso. Se reinicia la VM cliente, no sin antes dejar ejecutando *docker-compose logs --tail=10 -f nginx* y al iniciar, se ven las peticiones que se esperaban a ogCore: ``` ogcore-nginx | 192.168.56.113 - - [18/Sep/2024:19:09:08 +0000] "POST /opengnsys/rest/ogagent/started HTTP/1.1" 200 12 "-" "python-requests/2.31.0" ogcore-nginx | 192.168.56.113 - - [18/Sep/2024:19:09:23 +0000] "POST /opengnsys/rest/ogagent/loggedin HTTP/1.1" 200 12 "-" "python-requests/2.31.0" ``` por lo que se puede dar visto bueno de este proceso.
Collaborator

Para el cambio en src/opengnsys/loader.py es necesario importar la librería sys al inicio del archivo

import sys
Para el cambio en *src/opengnsys/loader.py* es necesario importar la librería sys al inicio del archivo ``` import sys ```
Poster
Collaborator

No tendrías por qué añadir import sys, ya que está añadido desde el commit 0cadbf3381 de este mismo PR.

Mergeo.

No tendrías por qué añadir `import sys`, ya que está añadido desde el commit https://ognproject.evlt.uma.es/gitea/opengnsys/ogagent/commit/0cadbf33815736b9f4ca09b36e2c72c1fbd6c06c de este mismo PR. Mergeo.
nserrano merged commit ffa80a9af2 into main 2024-09-19 09:36:27 +02:00
Sign in to join this conversation.
No Label
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: opengnsys/ogagent#8
There is no content yet.