M-am lovit cu capul de un perete despre asta.
Caut să adaug un executabil la PATH sub wine pe Ubuntu 20.04.
Încerc să configurez acest lucru din fișierul docker, dar am o problemă ciudată.
Mai exact, încerc să instalez python sub wine, astfel încât să puteți apela piton de vin
. Am ales să încerc să folosesc python încorporat și să instalez manual pip through get_pip.py
(Nu este afișat aici).
În Dockerfile, am:
DIN ubuntu:20.04
RUN useradd --no-log-init -r --uid 1003 -G dialout -g 100 -s /bin/bash jenkins
# PULL /wine/winecfg de pe serverul privat preconfigurat
RUN dpkg --add-architecture i386 \
&& apt obține actualizare
&& apt get install -y \
libc6:i386 \
&& apt get install -y \
vin=5,0-3
RUN mkdir -p /wine/winecfg && chown -R jenkins:utilizatori /vin
# Adăugați Embedded Python
ARG Python_Embedded_Archive=python-3.9.7-embed-win32.zip
RUN apt-get install -y unzip
COPIEAZĂ ${Python_Embedded_Archive} /temp/${Python_Embedded_Archive}
RUN unzip /temp/${Python_Embedded_Archive} -d /wine/python
RUN chmod +x /wine/python/python.exe
RUN chown jenkins: utilizatorii /wine/python
# Treceți la jenkins, care deține vin
UTILIZATOR jenkins: adevărat
# Adăugați Embedded Python la PATH în vin
COPY add_to_wine_path.sh /wine
RUN bash /wine/add_to_wine_path.sh /wine/python \
&& wine python --versiune
RUN wine python --versiune
Notă: Acesta nu este fișierul docker complet, ci doar părțile relevante
Dosarul /wine/cfg este f
Cu add_to_wine_path.sh
:
path_to_add=$1
echo „Adăugarea „$path_to_add” la variabila PATH a lui Wine”
# Curățați valorile căii curente (în general goale, dar scriptul poate fi apelat a doua oară)
existent_path=$(INTERROARE regul vinurilor 'HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment' -v PATH | grep -Po '(?<=\^%).*(?=\^%)')
# Dacă valoarea căii existente este goală
dacă [ -z $cale_existent" ]
atunci
# Setați valorile implicite ale căilor (căi Windows)
existent_path="C:\windows\system32;C:\windows"
fi
wine reg add „HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment” -v PATH /t REG_EXPAND_SZ /d ^%\;&path_to_add\;$existing_path^% /f
Ce se întâmplă de fapt:
Când construiesc imaginea docker, primul apel la wine python --versiune
funcționează, indicând că PATH a fost actualizat. URA!
Dar, când al doilea wine python --versiune
rulează într-un alt mod ALERGA
bloc, eșuează.
Acest lucru mi se pare că registrul trebuie să fie forțat să se actualizeze pentru toți utilizatorii din wine, efectiv o repornire.
Așa că am încercat cizma de vin
cu toate opțiunile diferite și asta tot nu a ajutat.
Orice expert în Registrul Windows sau Wine știe ce se întâmplă aici?