Pfad zur Git-Ausführbaren für Discourse Docker-Installation ändern

Hallo zusammen,

danke für die großartige Forum-App! Bitte verzeiht mir als Neuling sowohl bei Docker als auch bei Discourse, falls es eine triviale Frage ist. System: Ubuntu LTS 20.04

Kurz: Gibt es eine Möglichkeit, Git an einem anderen Ort als /usr/bin zu verwenden?

Lange: Ich habe manuell eine neue Version von Git (2.31.1) in /usr/local installiert (um das Problem mit dem Link zu libgnutls und dem gnutls_handshake()-Fehler zu beheben) und /usr/local/bin zur PATH-Umgebungsvariable hinzugefügt. Im Launcher habe ich vor cd /pups/ in run_command den Befehl echo $PATH && which git eingefügt. Beim Ausführen von ./launcher rebuild app wird Folgendes ausgegeben:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin/:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
/usr/bin/git

Bedeutet das, dass alle folgenden Git-Aktionen tatsächlich /usr/bin/git verwenden? In diesem Fall würde ich eher erwarten, dass Git unter /usr/local/bin gefunden wird.

Tatsächlich kann ich mich nicht erinnern, Git jemals mit apt-get oder einer anderen Methode in /usr installiert zu haben. Ich vermute also, dass dies mit der Funktionsweise von Docker zusammenhängt. Gibt es eine Möglichkeit, dies anzupassen?

Nochmals vielen Dank!
minye

Hallo zusammen,

für alle, die zufällig hier sind: Ich habe es geschafft, indem ich ein neues Image mit dem Tag newgit vom offiziellen Discourse-Basis-Image erstellt und dann Discourse darauf installiert habe, indem ich die Variable image im Launcher angepasst habe.

Die wichtigsten Anweisungen im Dockerfile sehen wie folgt aus. Alle Abhängigkeiten (perl, gcc usw.) werden vom Basis-Image verwaltet.

# install a git free of 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}*
# check git install
RUN which git && git version && (ldd -v /usr/local/libexec/git-core/git-remote-https | grep gnutls) || echo "Git is not linked to libgnutls"

und liefert /usr/local/bin/git.

Mir ist bewusst, dass dies ein schmutziger Hack ist und vom Entwicklungsteam nicht empfohlen wird. Ich stelle ihn hier nur als Referenz von einem Docker-Laien bereit, falls jemand eine ähnliche Anforderung hat.