es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Forzar una dependencia transitoria de versión en golang.

Tengo una pregunta acerca de las dependencias en Golang.
Mi aplicación define un go.mod de esta manera:

module my.host.com/myapp

require (
    ext1.com/module1 v0.0.1
)

go 1.14

La relación de dependencia es:
1. ext1.com/module1 v0.0.1 depende de ext3.com/module3 v0.0.3

Una escaneo de seguridad detecta que ext3.com/module3 v0.0.3 es inseguro y debe actualizarse a v0.0.4.

¿Hay alguna manera de “forzar” que mi aplicación obtenga solo module3 v0.0.4, anulando las directivas definidas en el go.mod de module1 v0.0.1?
1. Digamos que ext1.com/module1 v0.0.1 ya está en la última versión, por lo que actualizarlo no funciona.

¿Funcionaría “replace”?

module my.host.com/myapp

require (
    ext1.com/module1 v0.0.1
)

replace ext3.com/module3 v0.0.3 => ext3.com/module3 v0.0.4

go 1.14

¡Gracias de antemano!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, el uso de una directiva “replace” en su archivo go.mod funcionaría en este escenario. Al agregar la siguiente línea a su archivo go.mod:

    replace ext3.com/module3 v0.0.3 => ext3.com/module3 v0.0.4
    

    Está diciéndole a Go que reemplace cualquier referencia a “ext3.com/module3” en la versión “v0.0.3” con “ext3.com/module3” en la versión “v0.0.4” en su aplicación. Esto obligará efectivamente a su aplicación a usar la versión actualizada del módulo inseguro, independientemente de la versión que se especifique en el archivo go.mod de la dependencia.

    Vale la pena señalar que el uso de una directiva “replace” generalmente debe usarse como último recurso, ya que puede producir un comportamiento inesperado y puede dificultar la reproducción de las compilaciones. Además, debe asegurarse de que el módulo actualizado sea compatible con la versión de la dependencia que está utilizando.

Comments are closed.