Project

General

Profile

Evolution #5127

Revoir la gestion des paquets par pyeole/pkg.py

Added by Daniel Dehennin about 11 years ago. Updated over 10 years ago.

Status:
Fermé
Priority:
Normal
Assigned To:
Category:
-
Start date:
07/23/2013
Due date:
07/26/2013
% Done:

100%

Spent time:
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


Related issues

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

Associated revisions

Revision a2834333 (diff)
Added by Daniel Dehennin almost 11 years ago

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

Revision f8f6da09 (diff)
Added by Daniel Dehennin almost 11 years ago

EolePkg.update() returns method instead of call result

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

Ref: #5127 @2m

Revision ba071a33 (diff)
Added by Daniel Dehennin almost 11 years ago

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

Revision bea3c8a4 (diff)
Added by Daniel Dehennin almost 11 years ago

Let the client of EoleAptPkg handling the update of package database

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

Ref: #5127 @2m

Revision f1d374d1 (diff)
Added by Daniel Dehennin almost 11 years ago

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

Revision 50f37b5e (diff)
Added by Daniel Dehennin almost 11 years ago

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

Revision 981d9694 (diff)
Added by Daniel Dehennin almost 11 years ago

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

Revision 25807a35 (diff)
Added by Daniel Dehennin almost 11 years ago

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

Revision e0df4852 (diff)
Added by Daniel Dehennin almost 11 years ago

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

Revision 8c6f1dd7 (diff)
Added by Daniel Dehennin almost 11 years ago

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

Revision 9b796176 (diff)
Added by Daniel Dehennin almost 11 years ago

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

Revision e5a45aff (diff)
Added by Daniel Dehennin almost 11 years ago

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

Revision 927bf6bb (diff)
Added by Daniel Dehennin almost 11 years ago

EOLE purge les paquets par défaut

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

Ref: #5127

Revision 432595cf (diff)
Added by Daniel Dehennin almost 11 years ago

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

Revision 90157603 (diff)
Added by Daniel Dehennin almost 11 years ago

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

Revision 97406ae0 (diff)
Added by Daniel Dehennin almost 11 years ago

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

Revision 799bdb54 (diff)
Added by Daniel Dehennin almost 11 years ago

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

Revision eb621d57 (diff)
Added by Daniel Dehennin almost 11 years ago

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

Revision 925c55e0 (diff)
Added by Daniel Dehennin almost 11 years ago

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

Revision 1a41229a (diff)
Added by Daniel Dehennin almost 11 years ago

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

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

Ref: #5127

Revision dc15235d (diff)
Added by Daniel Dehennin almost 11 years ago

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

Revision 3f276cfd (diff)
Added by Daniel Dehennin almost 11 years ago

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

Revision 9e0d0ed3 (diff)
Added by Daniel Dehennin almost 11 years ago

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

Revision 71e47373 (diff)
Added by Daniel Dehennin almost 11 years ago

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

Revision 6d40551a (diff)
Added by Daniel Dehennin almost 11 years ago

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

Revision 4d90152b (diff)
Added by Daniel Dehennin almost 11 years ago

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

Revision 7f4c0d03 (diff)
Added by Daniel Dehennin over 10 years ago

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

Revision d125a6e8 (diff)
Added by Daniel Dehennin over 10 years ago

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

History

#1 Updated by Daniel Dehennin over 10 years ago

  • Due date set to 07/26/2013
  • Status changed from Nouveau to Résolu
  • Assigned To set to Daniel Dehennin
  • Target version set to Eole 2.4-dev-3
  • Start date set to 07/23/2013
  • % Done changed from 0 to 100

#2 Updated by Joël Cuissinat over 10 years ago

  • Status changed from Résolu to Fermé

Also available in: Atom PDF