Página 1 de 1

¿El principio de las actualizaciones de paquetes?

Publicado: 18 de julio de 2018 - 14:19
por tsunyan
Buen día,

Recientemente comencé a usar la versión 1.5.1.26 de WAPT Community y tengo una pregunta que me ha estado molestando. No entiendo bien cómo funcionan las actualizaciones del software.

Cuando importo un paquete desde la tienda WAPT https://store.wapt.fr/ Usando el botón "Importar desde Internet", recibo este paquete en mi repositorio privado. Hasta ahora, todo bien. Pero si hay una nueva versión del software en su sitio web oficial, el paquete no se actualiza automáticamente.

¿Importar el paquete desde la tienda WAPT actualizará los paquetes de mi repositorio privado? De ser así, ¿dependemos de la persona que administra el paquete en la tienda? De no ser así, ¿tenemos que esperar a que haya una nueva versión en la tienda antes de volver a importarlo a nuestro repositorio privado?

Otra pregunta relacionada con las actualizaciones de paquetes

Me di cuenta de que la versión de OwnCloud en la tienda está desactualizada. Así que creé el paquete y añadí la función `update_package()` que actualiza el código fuente si no está actualizado dentro del paquete. Para quienes usan ownCloud, aquí está la función que recupera la última versión del software del sitio web oficial https://owncloud.org/descargar/ :

Código: Seleccionar todo

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()
Esto funciona correctamente en PyScripter. Al hacer clic derecho en `update-package-source` y seleccionar "Ejecutar", se actualiza el software en la carpeta y la versión en el archivo `control`. Después, solo hay que ejecutar `build-upload` y listo. El problema es que no se puede hacer directamente desde la consola. Quizás no he descubierto cómo; corríjanme si me equivoco.

Para una alternativa un poco "fea", podría incluir la actualización del paquete al comienzo de la función install() después de verificar si la versión en internet es superior a la de mi paquete; aún no lo he probado, pero no parece muy adecuado.

Gracias por tus comentarios

Re: ¿El principio de las actualizaciones de paquetes?

Publicado: 18 de julio de 2018 - 21:58
por kguerineau
Buenas noches,
Cuando importo un paquete de la tienda WAPT (https://store.wapt.fr/) mediante el botón "Importar desde Internet", lo recibo en mi repositorio privado. Hasta aquí todo bien. Pero si hay una nueva versión del software en su sitio web oficial, el paquete no se actualizará automáticamente. ¿

Se actualizarán los paquetes en mi repositorio privado al importar el paquete de la tienda WAPT? Si es así, ¿dependemos de la persona que gestiona el paquete en la tienda? Si no, ¿tenemos que esperar a que haya una nueva versión en la tienda antes de volver a importarlo a nuestro repositorio privado?
Al actualizar el software, es necesario importarlo a su servidor WAPT. Puede crear un script que compruebe que sus paquetes estén actualizados comparando ambos repositorios. Esto es lo que hacemos con nuestros clientes de servicios gestionados.


Otra pregunta relacionada con las actualizaciones de paquetes:

He notado que la versión de OwnCloud en la tienda no está actualizada. Así que creé el paquete y agregué una función `update_package()` que actualiza el código fuente si no está ya actualizado dentro del paquete. Para quienes usan ownCloud, aquí está la función que obtiene la última versión del software del sitio web oficial: https://owncloud.org/download/ :
[...]

Esto funciona bien en PyScripter. Al hacer clic derecho en `update-package-source` y seleccionar "Ejecutar", actualiza correctamente el software en la carpeta, así como la versión en el archivo `control`. Luego solo necesitas ejecutar `build-upload`, y listo. El problema es que no puedes hacer esto directamente desde la consola. Tal vez no he descubierto cómo; corrígeme si me equivoco.
De hecho, la consola no está actualizando los paquetes.

Para una alternativa un poco "fea", podría incluir la actualización del paquete al comienzo de la función install() después de verificar si la versión en internet es superior a la de mi paquete; aún no lo he probado, pero no parece muy adecuado.
Se trata sobre todo de una alternativa nada recomendable y que va en contra del funcionamiento de WAPT.
De hecho, si se implementa el paquete mediante la función "update-package" del instalador, cada máquina descargará el ejecutable de internet. Esto presenta dos problemas:
  • 1. El ancho de banda que se utilizará intensamente
  • 2. Falta de control sobre lo que se instala en el ordenador. Imagine un problema con la integridad del archivo descargado (corrupto o con virus).
Además, en este caso, entre el momento en que importa el paquete a su repositorio privado y el momento en que se descarga el ejecutable, puede haber una diferencia de versión... ¡El informe de inventario del paquete será entonces inexacto!

La función 'update-package' ahorra tiempo cuando actualiza el paquete.

Buenas noches

Re: ¿El principio de las actualizaciones de paquetes?

Publicado: 19 de julio de 2018 - 16:48
por tsunyan
Al actualizar el software, es necesario importarlo a su servidor WAPT. Puede crear un script que compruebe que sus paquetes estén actualizados comparando ambos repositorios. Esto es lo que hacemos con nuestros clientes de servicios gestionados.
Sí, ya veo, para saber si necesitamos actualizarnos respecto al depósito público.

De hecho, la consola no está actualizando los paquetes.
¿Es esta una característica que se implementará en el futuro?

Esta es principalmente una alternativa que se desaconseja encarecidamente y que va en contra del funcionamiento de WAPT.
De hecho, si implementa el paquete con la función "update-package" en el instalador, significa que cada máquina descargará el ejecutable de internet. Esto presenta dos problemas:
1. El ancho de banda se utilizará en exceso.
2. No hay control sobre lo que se instala en la máquina. Imagínese un problema con la integridad del archivo descargado (corrupción o virus).
Además, en este caso, puede haber una diferencia de versión entre el momento en que importa el paquete a su repositorio privado y el momento en que se descarga el ejecutable... ¡El inventario de paquetes será entonces inexacto!

La función "update-package" ahorra tiempo al actualizar el paquete.
Eso pensé, no fue buena idea. Supongo que entonces puedo automatizar la actualización de todos los paquetes con un script por lotes o PowerShell.

Gracias por estas explicaciones.

Re: ¿El principio de las actualizaciones de paquetes?

Publicado: 19 de julio de 2018 - 21:59
por vcardon
tsunyan escribió: 19 de julio de 2018 - 16:48¿Es esta una función que se implementará en el futuro?
Esta característica es altamente indeseable porque el administrador del parque es responsable de lo que recupera de Internet y de lo que implementa en su parque.

Debe verificar que lo que despliega sea seguro.

Te dejaré que traces tu propio paralelo con este artículo que describe una tragedia reciente:

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

Atentamente.

Vicente

Re: ¿El principio de las actualizaciones de paquetes?

Publicado: 19 de julio de 2018 - 22:35
por sfonteneau
tsunyan escribió: 19 de julio de 2018 - 16:48 Eso es lo que pensaba, no era una buena idea. Supongo que entonces puedo automatizar la actualización del paquete para todos los paquetes con un script por lotes o PowerShell.
¿Por qué no ejecutar un paquete de actualización cada noche? Pero, como señala Vincent, esto no se recomienda por razones obvias de seguridad. El software debe ser verificado por un humano antes de instalarse en toda la red.

De hecho, un editor puede verse comprometido, por ejemplo:

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

O, por ejemplo, recientemente en el caso de PDF Creator: https://landingpage.pdfforge.org/domain/es

En este tipo de situaciones, automáticamente se planta un parque entero... :rollo: Daño ...

Una buena solución sería, en el peor de los casos, ejecutar un paquete de actualización todas las noches pero enviar el nuevo paquete a una fase de madurez: VALIDACIÓN-ESPERA

Lo único que te queda por hacer es probar el software

Re: ¿El principio de las actualizaciones de paquetes?

Publicado: 20 de julio de 2018 - 13:10
por tsunyan
Gracias por estas recomendaciones y respuestas rápidas @vcardon @sfonteneau.