تغيير المسار إلى الملف التنفيذي لـ git لتثبيت Discourse Docker

مرحبًا بالجميع،

شكرًا لكم على تطبيق المنتدى الرائع! أرجو أن تعذروني كصغير في كل من Docker وDiscourse، إذا كان سؤالًا تافهًا. النظام: Ubuntu LTS 20.04

مختصر: هل توجد أي طريقة لاستخدام git مثبتًا في مكان آخر غير /usr/bin؟

مفصل: قمت بتثبيت إصدار جديد من git (2.31.1) يدويًا في /usr/local (للتخلص من الارتباط بـ libgnutls وخطأ gnutls_handshake()) وأضفت /usr/local/bin إلى PATH. في أداة التشغيل، أضفت echo $PATH && which git قبل cd /pups/ في run_command، وعند تشغيل ./launcher rebuild app يظهر:

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

هل يعني هذا أن جميع عمليات git اللاحقة تستخدم فعليًا /usr/bin/git؟ في هذه الحالة، أتوقع أن يتم العثور على git في /usr/local/bin.

في الواقع، لا أتذكر تثبيت git في /usr عبر apt-get أو أي طريقة أخرى. لذا أعتقد أن الأمر مرتبط بطريقة عمل Docker، هل توجد أي طريقة لتخصيص ذلك؟

شكرًا مجددًا!
minye

مرحباً بالجميع،

لأي شخص قد يكون هنا، تمكنت من إنجاز ذلك عن طريق بناء صورة جديدة، مُوسومة بـ newgit، انطلاقاً من الصورة الأساسية الرسمية لـ Discourse، ثم تثبيت Discourse عليها عن طريق تعديل متغير image في launcher.

الأوامر الرئيسية في ملف Dockerfile هي كما يلي. جميع التبعيات (مثل perl و gcc وغيرها) يتم التعامل معها بواسطة الصورة الأساسية.

# تثبيت نسخة من git خالية من 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}*
# التحقق من تثبيت git
RUN which git && git version && (ldd -v /usr/local/libexec/git-core/git-remote-https | grep gnutls) || echo "Git is not linked to libgnutls"

وهو ما ينتج /usr/local/bin/git.

أدرك أن هذا حيلة غير نظيفة ولا يوصي بها فريق التطوير. لقد وضعتها هنا فقط كمرجع من مستخدم عادي في Docker، في حال كان لدى شخص ما حاجة مشابهة.