Projet

Général

Profil

Evolution #5127

Revoir la gestion des paquets par pyeole/pkg.py

Ajouté par Daniel Dehennin il y a environ 11 ans. Mis à jour il y a plus de 10 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Début:
23/07/2013
Echéance:
26/07/2013
% réalisé:

100%

Temps passé:
Distribution:
EOLE 2.4

Description

Maintenant que eole-common:source:scripts/gen_conteneurs.py fonctionne il faut revoir la gestion des paquets par source:pyeole/pkg.py.

L’un des problème est la gestion des dépendances à installer pour les conteneurs.

Une option serait d’utiliser un cache Apt sur le maître et laisser les conteneurs gérer les dépendances :

- apt-cacher-ng
- approx


Demandes liées

Lié à python-pyeole - Evolution #4954: Certains paquets posent des questions lors de leur installation par instance/reconfigure [2.4] Fermé 19/06/2013 21/06/2013
Lié à Distribution EOLE - Scénario #8533: Consolider la configuration des sources APT Terminé (Sprint) 02/07/2014 26/09/2014
Bloque eole-common - Evolution #2622: Mettre à jour l’utilisation de LXC pour 2.4 Fermé 28/01/2013 21/03/2014

Révisions associées

Révision a2834333 (diff)
Ajouté par Daniel Dehennin il y a presque 11 ans

Rename "uninstall()" to "remove()" to match apt command

  • pyeole/pkg.py (EolePkgApt.remove): New name of "uninstall()".
    (EolePkg.remove): Ditoo.
  • tests/test_pkg.py: Rename "test_uninstall()" to "test_remove()" and
    update API.

Ref: #5127 @2m

Révision f8f6da09 (diff)
Ajouté par Daniel Dehennin il y a presque 11 ans

EolePkg.update() returns method instead of call result

  • pyeole/pkg.py (EolePkg.update): Add missing parentheses.

Ref: #5127 @2m

Révision ba071a33 (diff)
Ajouté par Daniel Dehennin il y a presque 11 ans

Load EOLE APT configuration file

Now eole-common-pkg provides an apt configuration file.

  • pyeole/pkg.py (EolePkgApt.__init__): Initialize configuration.
    (EolePkgApt.configure): Load apt configuration file.

Ref: #5127 @20m

Révision bea3c8a4 (diff)
Ajouté par Daniel Dehennin il y a presque 11 ans

Let the client of EoleAptPkg handling the update of package database

  • pyeole/pkg.py (EoleAptPkg.upgrade): do not update apt cache.

Ref: #5127 @2m

Révision f1d374d1 (diff)
Ajouté par Daniel Dehennin il y a presque 11 ans

pkg: let "apt.Cache()" calculate upgradable list for us

  • pyeole/pkg.py (EolePkgApt.get_upgradable_list): Use the
    "apt.Cache.get_changes()" method to get list of packages to upgrade.
    Take care to no commit thoses changes.

Ref: #5127 @5m

Révision 50f37b5e (diff)
Ajouté par Daniel Dehennin il y a presque 11 ans

Do not install/remove packages one-by-one

  • pyeole/pkg.py (EoleAptPkg._apply_to_package): factorize action to
    perform on a package or list of packages.
    (EoleAptPkg.install): Use new API.
    (EoleAptPkg.remove): Use new API.

Ref: #5127 @10m

Révision 981d9694 (diff)
Ajouté par Daniel Dehennin il y a presque 11 ans

Permettre de rendre les appels APT silencieux

Par défaut, les appels APT affiche la progression sur la sortie standard.

  • pyeole/pkg.py (EolePkgApt.__init__): Définition des différents systèmes
    de progression.
    (EolePkgApt.commit): Ajout du paramètre « silent » afin de rendre les
    appels APT silencieux.
  • pyeole/pkg.py (EolePkgApt._apply_to_package): Idem.
    Passer le paramètre aux appels de méthode.
  • pyeole/pkg.py (EolePkgApt.install): Idem.
  • pyeole/pkg.py (EolePkgApt.remove): Idem.
  • pyeole/pkg.py (EolePkgApt.update): Idem.
  • pyeole/pkg.py (EolePkgApt.upgrade): Idem.
  • pyeole/pkg.py (EolePkgApt.download): Idem.
  • pyeole/pkg.py (EolePkgApt.get_upgradable_list): L’appel à update doit
    être silencieux.
  • pyeole/pkg.py (EolePkg.install): Ajout du paramètre « silent » afin de rendre les
    appels APT silencieux.
    Passer le paramètre aux appels de méthode.
  • pyeole/pkg.py (EolePkg.remove): Idem.
  • pyeole/pkg.py (EolePkg.update): Idem.
  • pyeole/pkg.py (EolePkg.upgrade): Idem.
  • pyeole/pkg.py (EolePkg.download): Idem.

Ref: #5127 @10m

Révision 25807a35 (diff)
Ajouté par Daniel Dehennin il y a presque 11 ans

Ajout des utilitaires de ligne de commandes pour APT

  • pyeole/pkg.py (parse_apt_cmdline): Gestion des options de la ligne de
    commande.
    (run_apt): Exécute une action en fonction des paramètres d’appel.
    (apt_cli): Exécute une action en fonction des options de la ligne de
    commande.

Ref: #5127 @15m

Révision e0df4852 (diff)
Ajouté par Daniel Dehennin il y a presque 11 ans

La fonction « run_apt » ne vérifie pas ses arguments

  • pyeole/pkg.py (run_apt): Définition des valeurs par défaut des paramètres.
    Appliquer la vérification comme lors de la gestion des options de la
    ligne de commande.

Ref: #5127 @5m

Révision 8c6f1dd7 (diff)
Ajouté par Daniel Dehennin il y a presque 11 ans

Utilisation de la nouvelle API de « pyeole.pkg »

La fonction « pyeole.pkg.run_apt() » prend en charge l’exécution de la
commande « apt-eole » dans les conteneurs.

  • creole/reconfigure.py (remove_packages): Utilisation de « run_apt() ».
    (install_packages): Utilisation de « run_apt() ».
    Installe les paquets par groupe de conteneurs.
    (packages): Ne plus utiliser « pyeole.pkg.EolePkg ».
    (dist_upgrade): Suppression de la fonction inutilisée.
    (update_server): Utilisation de la nouvelle API.

Ref: #5127 @20m

Révision 9b796176 (diff)
Ajouté par Daniel Dehennin il y a presque 11 ans

La commande « apt-eole » sera fournie par « eole-common-pkg »

Suppression de la commande « apt-eole » et du script de complètement bash correspondant.

  • setup.py: Suppression des références à « apt-eole ».

Ref: #5127 @2m

Révision e5a45aff (diff)
Ajouté par Daniel Dehennin il y a presque 11 ans

Ajout de l’utilitaire apt-eole

L’utilitaire « apt-eole » est à installer dans tous les conteneurs

  • apt-eole: Utilisation du code de « pyeole.pkg ».

Ref: #5127 @20m

Révision 927bf6bb (diff)
Ajouté par Daniel Dehennin il y a presque 11 ans

EOLE purge les paquets par défaut

  • apt-eole.conf: Ajout de la purge des paquets.

Ref: #5127

Révision 432595cf (diff)
Ajouté par Daniel Dehennin il y a presque 11 ans

La configuration APT et l’outil « apt-eole » sont fournis par « eole-common-pkg »

  • debian/eole-server.install: Ne pas inclure « /etc/apt/ ».
  • debian/control: « eole-common-pkg » fourni « apt-eole » qui était
    auparavant fourni par « creole ».
    (Depends): « eole-server » requiert une version récente de « creole ».

Ref: #5127 @5m

Révision 90157603 (diff)
Ajouté par Daniel Dehennin il y a presque 11 ans

Mise à niveau du complètement bash de la commande « apt-eole »

  • bash-completion/apt-eole: Mise à niveau avec la nouvelle version de la
    commande.
  • eole-common.mk (bash-completion_DATA_DIR): Installation du complètement.

Ref: #5127 @2m

Révision 97406ae0 (diff)
Ajouté par Daniel Dehennin il y a presque 11 ans

Lance « apt-get » dans les conteneurs

La configuration APT étant installée dans les conteneurs, nous demandons
à « apt-get » de l’utiliser.

  • pyeole/pkg.py (run_apt): Lance « apt-get » dans les conteneurs avec la
    configuration EOLE.

Ref: #5127 @2m

Révision 799bdb54 (diff)
Ajouté par Daniel Dehennin il y a presque 11 ans

Les commandes apt dans les conteneurs sont trop silencieuses

  • pyeole/pkg.py: Passage de « pyeole.process.system_out »
    à « pyeole.process.system_code ».

Ref: #5127 @2m

Révision eb621d57 (diff)
Ajouté par Daniel Dehennin il y a presque 11 ans

Les commandes apt-eole ne sont pas répercutées dans les conteneurs

  • pyeole/pkg.py: Import « CreoleClient ».
    Factorisation de la liste des actions avec et sans arguments.
    (parse_apt_cmdline): Ajout de l’action « dist-upgrade ».
    (run_apt): On lance « run_apt » pour chaque conteneur s’il est activé.
    (EolePkgApt.dist_upgrade): Nouvelle méthode pour mettre à jour la
    distribution.
    (EolePkg.dist_upgrade): Idem.

Ref: #5127 @20m

Révision 925c55e0 (diff)
Ajouté par Daniel Dehennin il y a presque 11 ans

Le logger racine ne doit être créé que pour la ligne de commande

  • pyeole/pkg.py (parse_apt_cmdline): Passage du logger en mode « info »
    par défaut.
    (run_apt): Ne gère plus le logger.
    (apt_cli): Création du logger racine pour la ligne de commande.

Ref: #5127 @5m

Révision 1a41229a (diff)
Ajouté par Daniel Dehennin il y a presque 11 ans

La commande « apt-eole » supporte « dist-upgrade »

  • bash-completion/apt-eole: Ajout de « dist-upgrade » au complètement.

Ref: #5127

Révision dc15235d (diff)
Ajouté par Daniel Dehennin il y a presque 11 ans

Changement d’API de « pyeole.pkg.run_apt() »

  • creole/reconfigure.py (remove_packages): « pyeole.pkg.run_apt() » ne
    gère plus le « log_level ».
    (install_packages): Idem.

Ref: #5127

Révision 3f276cfd (diff)
Ajouté par Daniel Dehennin il y a presque 11 ans

reconfigure: la liste des paquets à supprimer peut être vide

  • creole/reconfigure.py (remove_packages): Ne supprimer les paquets que
    si la liste n’est pas vide.

Ref: #5127

Révision 9e0d0ed3 (diff)
Ajouté par Daniel Dehennin il y a presque 11 ans

Permettre d’installer/supprimer des paquets pour tous les conteneurs

À l’heure actuelle, seul les commandes de mise à jour fonctionne sur tous
les conteneurs, et ce par défaut.

L’utilisation du nom de conteneur « all » permet d’exécuter une action
sur le maître et tous les conteneurs, principalement utile pour
« install » et « remove ».

  • pyeole/pkg.py (run_apt): Le conteneur « all » déclanche l’action sur
    tous les conteneurs après le maître.

Ref: #5127 @2m

Révision 71e47373 (diff)
Ajouté par Daniel Dehennin il y a presque 11 ans

La commande « apt-eole » supporte le conteneur « all »

Cela exécute la commande sur le maître puis dans tous les conteneurs
disponibles si le mode est activé.

  • bash-completion/apt-eole (_apt_eole): Ajout du conteneur « all » par
    défaut.

Ref: #5127

Révision 6d40551a (diff)
Ajouté par Daniel Dehennin il y a presque 11 ans

Correction du complètement de la commande « apt-eole »

  • bash-completion/apt-eole: Ne proposer la liste des paquets que pour
    « install » et « remove ».
    Forcer « ls » à ne pas utiliser de couleur.
    Ajout du mot courant à la commande « compgen » pour le complètement des
    noms de conteneurs. Sans cette option, la liste est affichée mais non
    complété.

Ref: #5127 @5m

Révision 4d90152b (diff)
Ajouté par Daniel Dehennin il y a presque 11 ans

Make dpkg/debconf noninteractive

This works on LXC controller and in LXC guests.

  • pyeole/pkg.py (run_apt): Pass "DEBIAN_FRONTEND" to "apt-get" process in
    containers.
    (NonInteractiveInstallProgress): New install progress to set
    "DEBIAN_FRONTEND" environment variable.
    (EolePkgApt.__init__): Define two install progress, one for normal
    output and one for no output (silent mode).
    (EolePkgApt.commit): Use new silent progress.
    (EolePkgApt.install): Pass "silent" parameter.
    (EolePkgApt.update): Use silent acquire

Ref: #5127 @25m

Révision 7f4c0d03 (diff)
Ajouté par Daniel Dehennin il y a plus de 10 ans

Découpage de « list-upgrade » et factorisation de la sortie JSON

Cela permettra à Maj-Auto/Query-Auto de compter le nombre de paquet avant
de les afficher

  • pyeole/pkg.py (parse_apt_cmdline): La fonction de « list-upgrade » est
    « list_upgrade ».
  • pyeole/pkg.py (EolePkg.__init__): Gère l’état de sortie JSON avec
    l’attribut « _return_json ».
  • pyeole/pkg.py (EolePkg._make_containers_return_json): Configure l’objet
    courant et les arguments pour que les appels dans les conteneurs
    retourne du JSON. Gère le cas où l’appel se passe dans un conteneur.
  • pyeole/pkg.py (EolePkg._run): Factorisation de la sortie JSON.
  • pyeole/pkg.py (EolePkg.get_upgradable_list): Configure la sortie JSON
    pour les conteneurs et lance le dispatcher « _run() ».
  • pyeole/pkg.py (EolePkg.list_upgrade): Utilise la liste des paquets à
    mettre à jour en paramètre ou appel « EolePkg.get_upgradable_list() ».

Ref: #5127 @20m

Révision d125a6e8 (diff)
Ajouté par Daniel Dehennin il y a plus de 10 ans

Affichage d’un log de l’action pour le maître

  • pyeole/pkg.py (EolePkgApt._run): Prend le nom du conteneur en paramètre
    afin de n’afficher un message de log pour le conteneur « root ».
    (EolePkg._run): Passe le nom du conteneur à la méthode « _run() » du
    gestionnaire de paquet.

Ref: #5127 @5m

Historique

#1 Mis à jour par Daniel Dehennin il y a plus de 10 ans

  • Echéance mis à 26/07/2013
  • Statut changé de Nouveau à Résolu
  • Assigné à mis à Daniel Dehennin
  • Version cible mis à Eole 2.4-dev-3
  • Début mis à 23/07/2013
  • % réalisé changé de 0 à 100

#2 Mis à jour par Joël Cuissinat il y a plus de 10 ans

  • Statut changé de Résolu à Fermé

Formats disponibles : Atom PDF