Page 1 sur 1

Le principe de MAJ de paquet ?

Publié : 18 juil. 2018 - 14:19
par tsunyan
Bonjour,

Je découvre depuis quelques temps WAPT Community version 1.5.1.26 et une question me turlupine. Je ne comprends pas très bien comment fonctionne la mise à jour des paquets logiciels.

Lorsque j'importe un paquet depuis le store de WAPT https://store.wapt.fr/ avec le bouton "Importer depuis Internet", je reçois ce paquet dans mon dépôt privé. Jusque là c'est ok. Mais s'il y a une nouvelle version du logiciel sur leur site officiel, le paquet ne va pas se mettre à jour automatiquement.

Est-ce que le fait d'avoir importé le paquet depuis le store de WAPT va mettre à jour les paquets qui sont dans mon dépôt privé ? Si oui, est-on dépendant de la personne qui gère le paquet sur le store ? Si non, doit-on attendre de voir une nouvelle version sur le store pour le ré-importer sur notre dépôt privé ?

Autre question liée aux mises à jour de paquet

Je constate que la version de OwnCloud sur le store n'est pas à jour. J'ai donc créé le paquet en y ajoutant une fonction update_package() qui va mettre à jour la source s'il ne l'est pas dans le paquet. Pour ceux qui utilisent ownCloud voici la fonction qui récupère la dernière version du logiciel sur le site officiel https://owncloud.org/download/ :

Code : Tout sélectionner

from setuphelpers import *
import glob
import re

def update_package():
    htmlSource = wgets("https://owncloud.org/download/").splitlines()
    filename = ''
    realVersion = ''

    for line in htmlSource:

        match = re.search("https://download.owncloud.com/desktop/stable/ownCloud-.*-setup\.exe", line)
        if match:
            realVersion = line[line.find("ownCloud-")+9:line.find("-setup.exe")]
            print("Last version : ", realVersion)
            filename = 'ownCloud-%s-setup.exe' % realVersion
            print("File name : ", filename)

    exe = glob.glob('*.exe')
    for fn in exe:
        if fn != filename :
            print 'remove' + fn
            remove_file(fn)

    if not isfile(filename):
        print('Download' + filename)
        wget('https://download.owncloud.com/desktop/stable/ownCloud-%s-setup.exe' % (realVersion), filename)

    print ('Write ' + realVersion + '-0 in WAPT\\control')
    from waptpackage import PackageEntry
    pe = PackageEntry()
    pe.load_control_from_wapt(os.getcwd())
    pe.version = realVersion +'-0'
    pe.save_control_to_wapt(os.getcwd())

    print('The update is complete, you can now test and then launch a build upload.')
    
if __name__ == '__main__':
    update_package()
Cela marche bien sur PyScripter, en faisant clic droit sur update-package-source et Exécuter, il me met bien à jour le logiciel dans le dossier ainsi que la version dans le fichier control. Il faut donc ensuite build-upload et le tour est joué. Le soucis c'est qu'on ne peut pas faire cela directement sur la console. Peut-être que je n'ai pas trouvé comment faire, corrigez-moi si je me trompe.

Pour une alternative un peu "moche", je peux inclure la mise à jour du paquet au début de la fonction install() après avoir vérifié si la version sur le net est supérieure à celle de mon paquet, je n'ai pas encore essayé mais cela ne m'a l'air pas très adapté.

Merci pour vos retours

Re: Le principe de MAJ de paquet ?

Publié : 18 juil. 2018 - 21:58
par kguerineau
Bonsoir,
Lorsque j'importe un paquet depuis le store de WAPT https://store.wapt.fr/ avec le bouton "Importer depuis Internet", je reçois ce paquet dans mon dépôt privé. Jusque là c'est ok. Mais s'il y a une nouvelle version du logiciel sur leur site officiel, le paquet ne va pas se mettre à jour automatiquement

Est-ce que le fait d'avoir importé le paquet depuis le store de WAPT va mettre à jour les paquets qui sont dans mon dépôt privé ? Si oui, est-on dépendant de la personne qui gère le paquet sur le store ? Si non, doit-on attendre de voir une nouvelle version sur le store pour le ré-importer sur notre dépôt privé ?
Lorsque nous mettons à jour un logiciel, il faut effectivement que vous l'importiez sur votre serveur WAPT. Vous pouvez faire un script qui va vérifier que vos paquets sont à jour en comparant les deux dépôts. C'est ce que nous faisons chez nos clients info-gérés.


Autre question liée aux mises à jour de paquet

Je constate que la version de OwnCloud sur le store n'est pas à jour. J'ai donc créé le paquet en y ajoutant une fonction update_package() qui va mettre à jour la source s'il ne l'est pas dans le paquet. Pour ceux qui utilisent ownCloud voici la fonction qui récupère la dernière version du logiciel sur le site officiel https://owncloud.org/download/ :
[...]

Cela marche bien sur PyScripter, en faisant clic droit sur update-package-source et Exécuter, il me met bien à jour le logiciel dans le dossier ainsi que la version dans le fichier control. Il faut donc ensuite build-upload et le tour est joué. Le soucis c'est qu'on ne peut pas faire cela directement sur la console. Peut-être que je n'ai pas trouvé comment faire, corrigez-moi si je me trompe.
Effectivement la console ne met pas à jour les paquets.

Pour une alternative un peu "moche", je peux inclure la mise à jour du paquet au début de la fonction install() après avoir vérifié si la version sur le net est supérieure à celle de mon paquet, je n'ai pas encore essayé mais cela ne m'a l'air pas très adapté.
C'est surtout une alternative pas du tout préconisé et à l'encontre du fonctionnement de WAPT.
En effet, si vous déployez le paquet avec la fonction "update-package" dans l'install, cela veut dire que chaque machine ira télécharger l'exécutable sur Internet. Deux problèmes à cela :
  • 1. La bande passante qui sera fortement sollicitée
  • 2. Le non contrôle de ce qui est installé sur le poste. Imaginez un problème d'intégrité du fichier téléchargé (corrompu ou virus).
De plus, dans ce cas, entre le moment où vous aurez importé le paquet dans votre dépôt privé et le moment où l'exécutable sera téléchargé, il peut y avoir une différence de version... La remontée d'inventaire des paquets sera alors faussée !

La fonction 'update-package" permet de gagner du temps lorsque vous mettez à jour le paquet.

Bonne soirée

Re: Le principe de MAJ de paquet ?

Publié : 19 juil. 2018 - 16:48
par tsunyan
Lorsque nous mettons à jour un logiciel, il faut effectivement que vous l'importiez sur votre serveur WAPT. Vous pouvez faire un script qui va vérifier que vos paquets sont à jour en comparant les deux dépôts. C'est ce que nous faisons chez nos clients info-gérés.
Oui je vois, pour savoir si on doit se mettre à jour par rapport au dépôt public.

Effectivement la console ne met pas à jour les paquets.
Est-ce une fonctionnalité qui sera implémentée dans le futur ?

C'est surtout une alternative pas du tout préconisé et à l'encontre du fonctionnement de WAPT.
En effet, si vous déployez le paquet avec la fonction "update-package" dans l'install, cela veut dire que chaque machine ira télécharger l'exécutable sur Internet. Deux problèmes à cela :
1. La bande passante qui sera fortement sollicitée
2. Le non contrôle de ce qui est installé sur le poste. Imaginez un problème d'intégrité du fichier téléchargé (corrompu ou virus).
De plus, dans ce cas, entre le moment où vous aurez importé le paquet dans votre dépôt privé et le moment où l'exécutable sera téléchargé, il peut y avoir une différence de version... La remontée d'inventaire des paquets sera alors faussée !

La fonction 'update-package" permet de gagner du temps lorsque vous mettez à jour le paquet.
C'est bien ce qu'il me semblait que ce n'était pas une bonne idée. Je suppose que je peux alors automatiser le update-package à l'ensemble des paquets avec un script batch ou powershell.

Merci à vous pour ces explications.

Re: Le principe de MAJ de paquet ?

Publié : 19 juil. 2018 - 21:59
par vcardon
tsunyan a écrit : 19 juil. 2018 - 16:48Est-ce une fonctionnalité qui sera implémentée dans le futur ?
Une telle fonctionnalité est très indésirable car l'administrateur du parc est responsable de ce qu'il récupère sur internet et de ce qu'il déploie sur son parc.

Il doit vérifier que ce qu'il déploie est sain.

Je vous laisse faire l'analogie avec cet article décrivant un drame récent :

http://www.lefigaro.fr/international/20 ... parfum.php

Cordialement.

Vincent

Re: Le principe de MAJ de paquet ?

Publié : 19 juil. 2018 - 22:35
par sfonteneau
tsunyan a écrit : 19 juil. 2018 - 16:48 C'est bien ce qu'il me semblait que ce n'était pas une bonne idée. Je suppose que je peux alors automatiser le update-package à l'ensemble des paquets avec un script batch ou powershell.
Pourquoi pas exécuter un update package toute les nuits. Mais comme l'indique Vincent, ce n'est pas conseillé pour des raison évidente de sécurité. Le logiciel doit être vérifié par un humain avant d'être installé sur tout un parc.

En effet un éditeur peut être compromis, exemple:

CCleaner : https://www.generation-nt.com/ccleaner- ... 51839.html

Ou par exemple récemment dans le cas de pdf creator : https://landingpage.pdfforge.org/domain/en

Dans ce genre de cas vous plantez tout un parc de manière automatique... :roll: Dommage ...

Une bonne solution serait au pire d’exécuter un update package toutes les nuits mais de pousser le nouveau paquet dans une maturity : VALIDATION-WAIT

Il ne vous reste plus qu'à tester le logiciel

Re: Le principe de MAJ de paquet ?

Publié : 20 juil. 2018 - 13:10
par tsunyan
Merci pour ces recommandations et ces réponses rapides @vcardon @sfonteneau.