Tôi đã đập đầu vào tường về điều này.
Tôi đang tìm cách thêm một tệp thực thi vào PATH dưới rượu trên Ubuntu 20.04.
Đang cố định cấu hình cái này từ dockerfile, nhưng gặp sự cố lạ.
Cụ thể, tôi đang cố cài đặt python dưới rượu để bạn có thể gọi trăn rượu
. Tôi đã chọn thử sử dụng nhúng python và cài đặt thủ công qua pip get_pip.py
(Không hiển thị ở đây).
Trong Dockerfile, tôi có:
TỪ Ubuntu:20.04
CHẠY useradd --no-log-init -r --uid 1003 -G dialout -g 100 -s /bin/bash jenkins
# KÉO /wine/winecfg từ máy chủ riêng được cấu hình sẵn
CHẠY dpkg --add-architecture i386 \
&& apt nhận bản cập nhật
&& apt get install -y \
libc6:i386 \
&& apt get install -y \
rượu=5.0-3
CHẠY mkdir -p /wine/winecfg && chown -R jenkins:users /wine
# Thêm Python nhúng
ARG Python_Embedded_Archive=python-3.9.7-embed-win32.zip
CHẠY cài đặt apt-get -y giải nén
SAO CHÉP ${Python_Embedded_Archive} /temp/${Python_Embedded_Archive}
CHẠY giải nén /temp/${Python_Embedded_Archive} -d /wine/python
CHẠY chmod +x /wine/python/python.exe
CHẠY chown jenkins: người dùng /wine/python
# Chuyển sang jenkins, công ty sở hữu rượu
NGƯỜI DÙNG jenkins:true
# Thêm Python nhúng vào PATH trong rượu
SAO CHÉP add_to_wine_path.sh /wine
CHẠY bash /wine/add_to_wine_path.sh /wine/python \
&& rượu trăn --version
RUN rượu trăn --version
Lưu ý: Đây không phải là dockerfile đầy đủ, chỉ là những phần có liên quan
Thư mục /wine/cfg là f
Với add_to_wine_path.sh
:
path_to_add=$1
echo "Thêm '$path_to_add' vào biến PATH của Wine"
# Xóa các giá trị đường dẫn hiện tại (thường trống, nhưng tập lệnh có thể được gọi lần thứ hai)
hiện tại_path=$(wine reg QUERY 'HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment' -v PATH | grep -Po '(?<=\^%).*(?=\^%)')
# Nếu giá trị đường dẫn hiện tại trống
nếu [ -z $current_path" ]
sau đó
# Đặt giá trị đường dẫn mặc định (đường dẫn Windows)
hiện tại_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\;$current_path^% /f
Điều gì thực sự xảy ra:
Khi tôi xây dựng hình ảnh docker, cuộc gọi đầu tiên tới trăn rượu --version
hoạt động, cho biết rằng PATH đã được cập nhật. CÓ!
Nhưng, khi lần thứ hai trăn rượu --version
chạy ở một nơi khác CHẠY
chặn, nó không thành công.
Đối với tôi, điều này có vẻ giống như sổ đăng ký cần phải được cập nhật cho tất cả người dùng trong wine, khởi động lại một cách hiệu quả.
Vì vậy, tôi đã cố gắng rượu vang
với tất cả các tùy chọn khác nhau và điều đó vẫn không giúp được gì.
Bất kỳ chuyên gia Windows Registry hoặc Wine nào cũng biết chuyện gì đang xảy ra ở đây?