ฉันเอาหัวโขกกำแพงเกี่ยวกับเรื่องนี้
ฉันต้องการเพิ่มไฟล์เรียกทำงานให้กับ PATH ภายใต้ไวน์บน Ubuntu 20.04
พยายามกำหนดค่านี้จาก dockerfile แต่มีปัญหาแปลก ๆ
โดยเฉพาะอย่างยิ่ง ฉันกำลังพยายามติดตั้ง python under wine เพื่อให้คุณโทรได้ หลามไวน์
. ฉันเลือกที่จะลองใช้งูหลามแบบฝังและติดตั้ง pip ผ่านด้วยตนเอง get_pip.py
(ไม่แสดงที่นี่).
ใน Dockerfile ฉันมี:
จากอูบุนตู:20.04
RUN useradd --no-log-init -r --uid 1003 -G dialout -g 100 -s /bin/bash เจนกินส์
# ดึง /wine/winecfg จากเซิร์ฟเวอร์ส่วนตัวที่กำหนดค่าไว้ล่วงหน้า
RUN dpkg --add-architecture i386 \
&& ฉลาดรับการปรับปรุง
&& apt รับการติดตั้ง -y \
libc6:i386 \
&& apt รับการติดตั้ง -y \
ไวน์=5.0-3
RUN mkdir -p /wine/winecfg && chown -R เจนกินส์:ผู้ใช้ /ไวน์
# เพิ่ม Python ในตัว
ARG Python_Embedded_Archive=python-3.9.7-embed-win32.zip
RUN apt-get install -y เปิดเครื่องรูด
คัดลอก ${Python_Embedded_Archive} /temp/${Python_Embedded_Archive}
RUN เปิดเครื่องรูด /temp/${Python_Embedded_Archive} -d /wine/python
RUN chmod +x /wine/python/python.exe
รัน chown jenkins:users /wine/python
# เปลี่ยนเป็นเจนกินส์ซึ่งเป็นเจ้าของไวน์
ผู้ใช้เจนกินส์:จริง
# เพิ่ม Embedded Python ให้กับ PATH ในไวน์
คัดลอก add_to_wine_path.sh /wine
RUN ทุบตี /wine/add_to_wine_path.sh /wine/python \
&& หลามไวน์ --version
RUN หลามไวน์ --version
หมายเหตุ: นี่ไม่ใช่ไฟล์นักเทียบท่าแบบเต็ม แต่เป็นเพียงส่วนที่เกี่ยวข้อง
โฟลเดอร์ /wine/cfg คือ f
กับ add_to_wine_path.sh
:
path_to_add=$1
echo "การเพิ่ม '$path_to_add' ให้กับตัวแปร PATH ของไวน์"
# รับค่าเส้นทางปัจจุบันที่สะอาด (โดยทั่วไปว่างเปล่า แต่สคริปต์สามารถเรียกเป็นครั้งที่สอง)
ที่มีอยู่_path=$(wine reg QUERY 'HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment' -v PATH | grep -Po '(?<=\^%).*(?=\^%)')
# หากค่าเส้นทางที่มีอยู่ว่างเปล่า
ถ้า [ -z $existing_path" ]
แล้ว
# ตั้งค่าเส้นทางเริ่มต้น (เส้นทาง Windows)
ที่มีอยู่_path="C:\windows\system32;C:\windows"
ไฟ
reg ไวน์เพิ่ม 'HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment' -v PATH /t REG_EXPAND_SZ /d ^%\;&path_to_add\;$existing_path^% /f
เกิดอะไรขึ้นจริง:
เมื่อฉันสร้างอิมเมจนักเทียบท่า การเรียกครั้งแรกไปที่ หลามไวน์ --version
ทำงานโดยระบุว่า PATH ได้รับการอัปเดตแล้ว เย้!
แต่เมื่อวินาทีที่ หลามไวน์ --version
ทำงานในที่แตกต่างกัน วิ่ง
บล็อกมันล้มเหลว
สำหรับฉันแล้วดูเหมือนว่าจำเป็นต้องบังคับให้รีจิสตรีอัปเดตสำหรับผู้ใช้ทุกคนในไวน์และรีบูตเครื่องอย่างมีประสิทธิภาพ
ดังนั้นฉันจึงพยายาม ไวน์บูท
ด้วยตัวเลือกต่างๆ ทั้งหมด แต่นั่นก็ไม่ได้ช่วยอะไร
กูรู Windows Registry หรือ Wine รู้ว่าเกิดอะไรขึ้นที่นี่?