¡Gracias por la excelente aplicación del foro! Por favor, discúlpenme si soy nuevo tanto en Docker como en Discourse y si esta es una pregunta trivial. Sistema: Ubuntu LTS 20.04
Corto: ¿Existe alguna manera de usar git instalado en un lugar distinto a /usr/bin?
Largo: He instalado manualmente una nueva versión de git (2.31.1) en /usr/local (para eliminar el enlace a libgnutls y el error de gnutls_handshake()) y he añadido /usr/local/bin al PATH. En el launcher, añadí echo $PATH && which git antes de cd /pups/ en run_command, y al ejecutar ./launcher rebuild app obtengo:
¿Significa esto que todas las acciones posteriores de git están usando realmente /usr/bin/git? En ese caso, esperaría que git se encontrara en /usr/local/bin.
De hecho, no recuerdo haber instalado git en /usr mediante apt-get o de alguna otra manera. Creo que esto está relacionado con la forma en que funciona Docker; ¿hay alguna manera de personalizarlo?
Para cualquiera que se encuentre por aquí, logré hacerlo construyendo una nueva imagen, etiquetada como newgit, a partir de la imagen base oficial de Discourse, y luego instalando Discourse sobre ella modificando la variable image en el launcher.
Las instrucciones principales en el Dockerfile son las siguientes. Todas las dependencias (perl, gcc, etc.) son gestionadas por la imagen base.
# instalar git sin gnutls
RUN cd / \
vcurl=7.68.0 \& wget http://dl.uxnr.de/mirror/curl/curl-$vcurl.tar.gz \& \
vssl=1.1.1f \& wget http://www.openssl.org/source/openssl-$vssl.tar.gz \& \
vgit=2.31.1 \& wget http://mirrors.edge.kernel.org/pub/software/scm/git/git-$vgit.tar.gz \& \
tar -zxf curl-$vcurl.tar.gz \& tar -zxf openssl-$vssl.tar.gz \& \
tar -zxf git-$vgit.tar.gz \& \
cd openssl-$vssl \& ./config --prefix=/usr/local \& make \& make install \& cd .. \& \
cd curl-$vcurl \& ./configure --with-ssl=/usr/local --prefix=/usr/local --without-gnutls --disable-ldap --without-librtmp \& make \& make install \& cd .. \& \
cd git-$vgit \& make configure \& ./configure --prefix=/usr/local --with-openssl=/usr/local --with-curl=/usr/local \& make \& make install \& cd ../ \& \
rm -rf /curl-${vurl}* /openssl-${vssl}* /git-${vgit}*
# verificar instalación de git
RUN which git \& git version \& (ldd -v /usr/local/libexec/git-core/git-remote-https | grep gnutls) || echo "Git no está vinculado a libgnutls"
y proporciona /usr/local/bin/git.
Soy consciente de que esto sea un parche sucio y no sea recomendado por el equipo de desarrollo. Lo publico aquí solo como referencia de un lego en Docker, por si alguien tiene una necesidad similar.