Projet

Général

Profil

Tâche #37373

Scénario #37277: Porter Eolebase en 2.11

Étude

Ajouté par Benjamin Bohard il y a 6 mois. Mis à jour il y a 3 mois.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Début:
01/10/2022
Echéance:
% réalisé:

100%

Restant à faire (heures):
0.0

Historique

#1 Mis à jour par Benjamin Bohard il y a 6 mois

  • Statut changé de Nouveau à En cours

#2 Mis à jour par Benjamin Bohard il y a 6 mois

Pour participer à l’identification des changements potentiels, quelques pistes :

informations sur les paquets

Sur les deux versions 2.10 et 2.11, récupérer les paquets installés et les versions

dpkg-query -W

Filtrer avec les fichiers de configuration qu’on écrase (ne couvre pas tous les programmes pour lesquels on créé des fichiers de configuration.

dpkg -S $(xmllint --xpath '//file/@name' /usr/share/eole/creole/dicos/*.xml 2>/dev/null | sed -e 's/ name="\(.*\)"/\1/')

#3 Mis à jour par Benjamin Bohard il y a 6 mois

Un problème dans pyeole.common.get_current_column : fcntl.ioctl(sys.stdout.fileno(), termios.TIOCGWINSZ, u'1234') provoque une erreur SystemError: buffer overflow.

Ce code est utilisé par les commandes Maj-Auto, instance,…

Le fait que sys.stdout soit du type io.StringIO et ne possède pas de méthode fileno pourrait expliquer le plantage de fcntl.ioctl. Toutefois, en 2.9, le même problème se pose mais n’empêche pas le code de bien récupérer la largeur de colonne du terminal.

for pv in 3.9 3.10 3.11 3.12 3.13 3.14
do
  uv python install $pv
  uv init $pv
  sed 
done

python3 -c "import fcntl, termios, struct, sys;data = fcntl.ioctl(sys.stdout.fileno(), termios.TIOCGWINSZ, u'1234');print(struct.unpack('hh', data)[1])" 
root@eolebase:~# cd 3.9/
root@eolebase:~/3.9# uv run main.py
Using CPython 3.9.25
Creating virtual environment at: .venv
Hello from 3-9!
148
root@eolebase:~/3.9# cd ../3.10/
root@eolebase:~/3.10# uv run main.py
Using CPython 3.10.20
Creating virtual environment at: .venv
Hello from 3-10!
148
root@eolebase:~/3.10# cd ../3.11/
root@eolebase:~/3.11# uv run main.py
Using CPython 3.11.15
Creating virtual environment at: .venv
Hello from 3-11!
148
root@eolebase:~/3.11# cd ../3.12/
root@eolebase:~/3.12# uv run main.py
Using CPython 3.12.13
Creating virtual environment at: .venv
Hello from 3-12!
148
root@eolebase:~/3.12# cd ../3.13/
root@eolebase:~/3.13# uv run main.py
Using CPython 3.13.12
Creating virtual environment at: .venv
Hello from 3-13!
148
root@eolebase:~/3.13# cd ../3.14/
root@eolebase:~/3.14# uv run main.py
Using CPython 3.14.3
Creating virtual environment at: .venv
Hello from 3-14!
Traceback (most recent call last):
  File "/root/3.14/main.py", line 9, in <module>
    main()
    ~~~~^^
  File "/root/3.14/main.py", line 4, in main
    data = fcntl.ioctl(sys.stdout.fileno(), termios.TIOCGWINSZ, u'1234')
SystemError: buffer overflow


On peut contourner le problème en surchargeant la fonction get_current_column pour qu’elle renvoie un entier arbitraire.

#4 Mis à jour par Benjamin Bohard il y a 6 mois

On doit pouvoir utiliser les fonctions du module termios directement :

width = termios.tcgetwinsize(sys.stdout)[1]

La fonction accepte le type io.StringIO. Il n’est donc pas nécessaire d’obtenir le file descriptor correspondant.

#5 Mis à jour par Benjamin Bohard il y a 6 mois

Journal d’instance :

chsh: Warning: /usr/bin/manage-eole is an invalid shell

Ajouter /usr/bin/manage-eole au fichier /etc/shells suffit à supprimer l’avertissement.
Ce fichier n’est pas apporté par un paquet.

Pas d’autres erreurs à l’instance.

La commande diagnose rapporte seulement le problème de mise à jour (clés des dépôts introuvables).

#6 Mis à jour par Benjamin Bohard il y a 6 mois

sysctl --all --deprecated > all
sysctl --all > almost_all

diff all almost_all 
52c52
< fs.dentry-state = 58115       43495   45      0       6256    0
---
> fs.dentry-state = 58114       43494   45      0       6256    0
64,65c64,65
< fs.inode-nr = 61100   5053
< fs.inode-state = 61100        5053    0       0       0       0       0
---
> fs.inode-nr = 61099   5053
> fs.inode-state = 61099        5053    0       0       0       0       0
165c165
< kernel.ns_last_pid = 23922
---
> kernel.ns_last_pid = 23932
203c203
< kernel.random.uuid = 28afd580-e685-4944-b817-0e9fd39d77c9
---
> kernel.random.uuid = fcbaa845-6379-4d58-a0b2-6b5a9d4c9758
478d477
< net.ipv4.neigh.default.base_reachable_time = 30
492d490
< net.ipv4.neigh.default.retrans_time = 100
499d496
< net.ipv4.neigh.enp4s0.base_reachable_time = 30
509d505
< net.ipv4.neigh.enp4s0.retrans_time = 100
516d511
< net.ipv4.neigh.lo.base_reachable_time = 30
526d520
< net.ipv4.neigh.lo.retrans_time = 100
933d926
< net.ipv6.neigh.default.base_reachable_time = 30
947d939
< net.ipv6.neigh.default.retrans_time = 1000
954d945
< net.ipv6.neigh.enp4s0.base_reachable_time = 30
964d954
< net.ipv6.neigh.enp4s0.retrans_time = 1000
971d960
< net.ipv6.neigh.lo.base_reachable_time = 30
981d969
< net.ipv6.neigh.lo.retrans_time = 1000

Toutes les variables *_time ont un pendant en millisecondes qui est valable.

#7 Mis à jour par Benjamin Bohard il y a 6 mois

Mise à jour en erreur :

Paramétrage de openssh-server (1:10.2p1-2ubuntu3) ...
Could not execute systemctl:  at /usr/bin/deb-systemd-invoke line 148.
dpkg: erreur de traitement du paquet openssh-server (--configure) :
 old openssh-server package postinst maintainer script subprocess failed with exit status 1

L’erreur provient donc de l’exécution de cette ligne dans /usr/bin/deb-systemd-invoke

system('systemctl', --quiet', @instance_args, $action, @start_units) == 0 or die("Could not execute systemctl: $!");

Le service ne peut pas être démarré parce qu’il a des dépendances non satisfaites.
Le service est dorénavant activé via un socket. Le socket ne peut pas démarré parce que le port est utilisé par le service lui-même.

Ce problème n’est pas reproduit en toutes circonstances…

#8 Mis à jour par Benjamin Bohard il y a 5 mois

Paramétrage de python3-pyeole (2.11.0-2~dev+2~g14de729) ...
/usr/lib/python3/dist-packages/pyeole/bareos.py:376: SyntaxWarning: 'return' in a 'finally' block
  return mount_bareos_support(retry=attempt-1, chown=chown)

=> #37522

#9 Mis à jour par Benjamin Bohard il y a 5 mois

Le nouveau pager par défaut des commandes apt n’est pas configuré (compatible ?) pour la coloration.

Pour le désactiver (en attendant de voir comment ça se configure) :

Binary::apt::Pager "false";

#10 Mis à jour par Benjamin Bohard il y a 4 mois

Dans l’environnement de test automatisé, l’instance du module Eolebase échoue avec un problème d’allocation mémoire. Pour l’instant, ce problème n’a pas été reproduit dans les tests manuels.
Quand on observe la mémoire utilisée par salt, notamment lors de l’enregistrement des modules qui correspond à un pic, on constate que la procédure est très gourmande en ressources.

On peut tester si donner davantage de mémoire au module pallie le problème (à voir si l’augmentation nécessaire est raisonnable). Sinon, il faut voir si les ressources de salt peuvent être limitées (via systemd à défaut ?).

#11 Mis à jour par Benjamin Bohard il y a 3 mois

  • Statut changé de En cours à À valider

#12 Mis à jour par Ludwig Seys il y a 3 mois

  • Statut changé de À valider à Résolu

#13 Mis à jour par Joël Cuissinat il y a 3 mois

  • Statut changé de Résolu à Fermé
  • % réalisé changé de 0 à 100
  • Restant à faire (heures) mis à 0.0

Formats disponibles : Atom PDF