--relocatableãã©ã°ã䜿çšããŸããã æ°ãããªãªãŒã¹20.0ã«ã¯ãã®ãã©ã°ããããŸããã åé 眮å¯èœãªç°å¢ãäœæããã«ã¯ã©ãããã°ããã§ããïŒ
åé 眮å¯èœãã©ã°ã¯åžžã«å®éšçãªãã®ã§ãããå®éã«æ©èœããããšã¯ãããŸããã§ããã ãµããŒããçµäºããæ©èœãå®å šã«åé€ãããŸããïŒãããã£ãŠã¡ãžã£ãŒãªãªãŒã¹ïŒã ãŠãŒã¹ã±ãŒã¹ã説æããŠãã ãããå¥ã®ã¢ãããŒããææ¡ã§ããå ŽåããããŸãã
CMD export branch && cd /build_dir && \
apt-get update -y && apt-get upgrade -y && \
pip3 install virtualenv && \
virtualenv --always-copy --python=python3 env && \
git clone http://user:pass@gitlab/dev/repo.git && \
cd /build_dir/veil-repo/code/veil-common && \
git checkout $branch && \
python3 install.py -p /build_dir/veil-repo/code/cli-app/ -v /build_dir/env && \
python3 install.py -p /build_dir/veil-repo/code/controller/ -v /build_dir/env && \
python3 install.py -p /build_dir/veil-repo/code/node/ -v /build_dir/env && \
cd /build_dir/ && \
./env/bin/pip3 install -r requirements.txt && \
virtualenv --relocatable env
ããã¯Dockerfileããã®æç²ã§ãã --relocatableãã©ã°ãåé€ãããšãã³ãŒãã¯æ£ããæ©èœããŸããïŒ ã€ãŸããç¬èªã®åé¢ãããç°å¢ãäœæããå¿ èŠããããŸããããã¯ãã©ã®ãããªæ¹æ³ã§ãã³ããŒã§ããŸãã
Dockerã®å éšã§ã¯ã90ïŒ ã ãšæããŸãã ãã ãããã®Dockerã³ãŒãã管çããŠãããŠãŒã¶ãŒãšé£çµ¡ãåãå¿ èŠãããããšã確èªããã«ã¯ãåé 眮å¯èœã®åŠçæ¹æ³ã®åŸ®åŠãªéããå®éã«çºçããå¯èœæ§ããããŸãã
CIã·ã¹ãã ãé·ãååã®ãã£ã¬ã¯ããªã«virtualenvãäœæããããããã®æ©èœã䜿çšããããšããããŸããã ååã¯ååã«é·ãããã #!
ãé·ãããŠãç°å¢ã§ã¹ã¯ãªãããå®è¡ã§ããŸããã
@ Nitori-ãã®ãããªå Žåã¯ãäžè¬çã«ããŒã«ãåŒã³åºãããã«python -m
圢åŒã䜿çšããããšããå§ãããŸãð€
ããã¯å ¬æ£ã§ãã å€ãã®Pythonããã±ãŒãžã¯åäœãæªãããã®ããã«åŒã³åºãããšã¯ã§ããŸãããã
@ Nitori-ãã®å Žåã§ãããã€ããªãã©ã«ããŒå ã®pythonã€ã³ã¿ãŒããªã¿ãŒãä»ããŠå®è¡å¯èœãã¡ã€ã«ãåŒã³åºãããšã«ããããã€ã§ã匷å¶çã«åŒã³åºãããšãã§ããŸãã äŸãã°
{venv}/bin/python {venv}/bin/bad-bad-tool
ããã§ã {venv}
ã¯ä»»æã®é·ãã«ããããšãã§ããŸãð
ç§ã®äŒç€Ÿã§ã¯ããã€ãã©ã€ã³ã§--relocatable
ãã©ã°ã䜿çšããŠãvirtualenvãåå©çšããæéãç¯çŽããŠããŸããGitLabã䜿çšããæ©ã段éã§virtualenvãæ§ç¯ããã¢ãŒãã£ãã¡ã¯ããšããŠä¿åããŠãããåå©çšããŠäžŠåãã¹ãã®æã
virtualenvã®ããŒãžã§ã³ãåºå®ããã€ããã§ãããããã°ã®ããã«ææ°ã®ãã®ããã«ããããšã«ãªããä»æãã€ãã©ã€ã³ãå£ããŸããã ãã®ãã°ãä¿®æ£ããŠåºå®ãããã¹ãŠãå®è¡ãããããã«ããŸããããã©ã°ãåé€ãããã®ãåé¿ããæ¹æ³ãèŠã€ããŸãã ããããåé¡ã解決ããããã©ã°ãä»åŸãµããŒããããããšãæåŸ ããŠããªããŠããç§ã®çµéšãäŒããããã«ããã«æ³šæããããšæããŸããã
virtualenvãäœæããæ°ããã¢ããªããŒã¿ã·ãŒããŒã¯100ããªç§åŒ±ãããããããã®ã¢ãããŒãã¯ãŠãŒã¹ã±ãŒã¹ã§æšå¥šãããŸãã
--relocatable
ã䜿çšããŠvenvãrpmã«ãã³ãã«ããŸãã virtualenvã¯$ DESTDIRã«äœæãããæçµçã«/opt/company
ã«ç§»åãããŸãã
ããã¯ç§ã®å Žåã§ãã
ã§ã¯ãçæããããã¹ã®æçµçãªã¿ãŒã²ãããäºåã«æž¡ãããšãã§ããããã«ããã®ã«åœ¹ç«ã¡ãŸããïŒ
@gaborbernatã¯ãïŒ
@gaborbernatã§ãã
ããã§è¯ã解決çãäœã§ãããããããŸããð€ç§ã¯ææ¡ãåãå ¥ããŠããŸãã
ãã®ãããªå Žåã®@gaborbernatã®å Žåãæšæºã®åäœã¯builddirãšprefixãåºå¥ããããšã§ãã
virtualenvã«ã¯DEST_DIR
åŒæ°ãããããã®å Žåã¯èª€è§£ãæãå¯èœæ§ããããŸãã DEST_DIR
ã¯å®éã®venvã®å Žæã§ãããäºå®äžãã¬ãã£ãã¯ã¹ã§ãïŒ/ usrã/ usr / localãªã©ã®ããã«ïŒã ãããã£ãŠã virtualenv LOCATION
ãææžåãããšããããããæ確ã«ãªãã¯ãã§ãã
次ã«ã --destdir
ãŸãã¯--root
ãªãã·ã§ã³ãè¿œå ã§ããŸããããã©ã«ãã¯/
ã§ãã ãã®ããã«ããŠãvirtualenvã¯destdir
ïŒchrootã®ãããªãã®ïŒã§åé¢ããŠåäœã§ããŸãã Pythonãpipããã®ä»ã®ã¹ã¯ãªãããããã«ã©ã®ããã«å¯ŸåŠããå¿
èŠãããã®ãââããããŸããã
åé¡ã¯ãçæããããã¹ãŠã®ã³ã³ãœãŒã«ã¹ã¯ãªããããshebangã®äœæäžã«ãã¹ãããŒãã³ãŒãããããšã§ãã ã·ãã³ãå«ããããã®çæãããã³ã³ãœãŒã«ã¹ã¯ãªãããããã«ãäžãšãããã€åŸã®å®è¡äžã®äž¡æ¹ã§æ©èœãããæšæºçãªæ¹æ³ã¯ãããŸããã ããã¯ããã«ãåŸã«èª°ããã·ã§ãã³ãä¿®æ£ããªãéãã§ãã ããããããã¯ä»®æ³ç°å¢ã®äœæã®ç¯å²å€ã§ãããããå¶åŸ¡ã§ããŸããã
@gaborbernatãããsetuptoolsã«å®è£ ããå¿ èŠããããšããããšã§ããïŒ ãã«ãæãšå®è¡æã®ã¿ãŒã²ãããã±ãŒã·ã§ã³ã®äž¡æ¹ã§åé¢ããŠäœ¿çšã§ããã·ãã³ã¯ã©ãã§ããïŒ
æ¢åã®virtualenvã®ã·ãã³ãç·šéããŠãæ°ããå Žæã§äœ¿çšã§ããããã«ããvirtualenv-relocate
ã¹ã¯ãªãããäœæããããšãèããŠããŸãã äœãã®ãããªãã® ïŒ
$ virtualenv-relocate /build/dir/venv /opt/company/app/venv
Rewriting shebang of bin/pip.
Rewriting shebang of bin/pip3.5.
...
$
setuptoolsã¯ããã«ãé©ããŠãããšã¯æããŸããã ããã¯ããã±ãŒã·ã§ã³Aã§ãã«ãããŠããããã±ãŒã·ã§ã³Bã«ãããã€ãããã«ãã·ã¹ãã ã®äžéšã§ããå¿ èŠãããæ©èœã§ãã
ããŠãCãããžã§ã¯ãã§ã¯ãPATHãšLD_LIBRARY_PATHãç·šéããã ãã§ãåé¢ããŠãã«ãã§ããŸãã 䜿çšãããã«ãã·ã¹ãã ã«é¢ä¿ãªãã
ç§ã¯Cããããã©ã®ããã«éæããã®ãããç¥ããªããå€å誰ããããã説æããããã«ãªã³ã¯ããããšãã§ããã ãããïŒ ä»¥åã«èµ·ãã£ãããšã¯ããã«ãããŸãhttps://github.com/pypa/virtualenv/blob/legacy/virtualenv.py#L1880-L1894 ; åºæ¬çã«ãããã€ãã®ãã¹ãçžå¯Ÿçãªãã®ã«ããããšããŠããŸããã€ãŸããã¹ã¯ãªãããšpth / egg-filesã§ãã
ç§ã®ãªããžããªã--relocatableã䜿çšããŠãããã¹ã¯ãªããã䜿çšããŠïŒåé 眮å¯èœãªä»®æ³ç°å¢ãäœæãããåŸïŒãè¿œå ã®ã©ã€ãã©ãªãvirtualenvã«ã³ããŒããŠããŸãã ããã«ãããå®å šã«åé 眮å¯èœãªvirtualenvãäœæããããšãã§ããŸããã ããšãã°ããããWindowsã§äœ¿çšããvirtualenvãã€ã³ã¹ããŒã©ãŒã«è¿œå ããŸãã ã€ã³ã¹ããŒã«åŸãpython3ããã°ã©ã ã¯ããã±ãŒãžåãããvirtualenvã§æ£åžžã«åäœããŠããŸãã
åããŠãŒã¹ã±ãŒã¹ã¯ãMacãšLinuxã§ãæ©èœããŸãã
@ Gagi2kã§è¡ã£ãŠããããšã¯ãçŸåšã®åé 眮å¯èœãªå®è£ ã®è匱æ§ããã§ã«ç€ºããŠããŸãã envãäœæããåŸãå®å šã«åé 眮å¯èœã«ããããã«ãããã€ãã®è¿œå ã®ã¹ã¯ãªãããå®è¡ããå¿ èŠããããŸããã åé¡ã¯ãããã±ãŒãžãå®å šã«åé 眮å¯èœã«ããæ¹æ³ããã¿ãŒã²ããç°å¢ã«å€§ããäŸåããŠããããšã§ãã ãããã£ãŠãããã§ã®èãæ¹ã¯ãvirtualenvèªäœãç°å¢ãå®å šã«åé 眮å¯èœã«ããããšãè«ŠãïŒå€ãã®å Žåæåã§ããªãããïŒã代ããã«ããããå®çŸãããã®ã«ã¹ã¿ã ã¹ã¯ãªãããäœæãã人ã ã«å®å šã«ãžã§ããå§ä»»ãããšãããã®ã§ãã ã¿ãŒã²ããç°å¢ã®ç¥èãæã£ãŠããã¹ã¯ãªãããªã®ã§ãäœããåé 眮å¯èœã«ããããã«å¿ èŠãªå€æŽã®å 容ãšéãæ£ç¢ºã«ææ¡ããŠãã ããã
æ¬åœã®ãå ¬æ£ãªç¹ã
ç§ã®åé¡ã¯å€ããå°ãªããã以åã«æäŸããæ©èœãåäœæãããã¹ãŠã®ãã©ãããã©ãŒã ãšããã€ãã®ãã£ã¹ããªãã¥ãŒã·ã§ã³ã§ãã¹ãããŠãå€ãæ©èœãšãŸã£ããåãããã«ããå¿ èŠãããããšã§ãã
ç§ãŸãã¯ä»ã®èª°ãããããå®è£ ããæéããããŸã§ãç§ã¯ä»ã®ãšããå€ãvirtualenvããŒãžã§ã³ã«åºå·ããããšæããšæããŸãã
@ Gagi2kã¯ã virtualenv-relocate
ãããžã§ã¯ãã®ã¢ã€ãã¢ã«é¢ããäžèšã®ç§ã®ã³ã¡ã³ããåç
§ããŠãã ããã ç§ã¯ããã«ã€ããŠä»ã®äººãšååããŠåãã§ããŸãã https://github.com/spotify/dh-virtualenv/ãåºçºç¹ãšããŠé©ããŠããå ŽåããããŸãã
@bersace thxãç§ã¯ãã§ã«å€ãã³ãŒããã³ããŒãã
@ Gagi2kå ±æããŠ
@bersaceãŸã é²è¡äžã§ãïŒ https ïŒ //codereview.qt-project.org/c/qt/qtivi/+/290859
virtualenv 20ã®æŽæ°å
šäœã«ãããäºæ³ãããã¯ããã«å€ãã®åé¡ãçºçããŸãã å€ãæ©èœãåå©çšããŠã¹ã¯ãªãããåé
眮å¯èœã«ããããšã¯å€§ããããšã§ã¯ãããŸããããçŸåšã¯venvã«åºã¥ããŠããããã®pyvenv.cfgã䜿çšãããšãã¯ããã«è€éã«ãªããŸãã ããšãã°ãWindowsã§ã¯ãå€ãvirtualenvãå€ãã®ããŒã¹pyãã¡ã€ã«ãã³ããŒããŸãã
ä»ã®ãšãããç§ã¯ãããã§ãããšã¯æããŸããïŒpyvenv.cfgãããããµããŒãããŠããªããã°ïŒã
@gaborbernat virtualenvãæ¬æ¥ã®æå³ãšèª€çšããŠããå¯èœæ§ããããŸãããpipã䜿çšããŠæ¡åŒµã§ããããã«ããããã«ãã¢ããªã±ãŒã·ã§ã³ã«ç¬èªã®python3ã³ããŒãæäŸããå ¬åŒã®æ¹æ³ã¯äœã§ããïŒ
@ Gagi2kç§ã¯ããã§äœããæ¬ ããŠãããšç¢ºä¿¡ããŠããŸãã ããããç¹å®ã®ãã·ã³ã®ã€ã³ã¹ããŒã«ãã§ãŒãºã®äžéšãšããŠpyenv.cfg
hone
ãå€æŽããã ãã§ã¯ãããŸãããïŒ
@gaborbernat virtualenvãæ¬æ¥ã®æå³ãšèª€çšããŠããå¯èœæ§ããããŸãããpipã䜿çšããŠæ¡åŒµã§ããããã«ããããã«ãã¢ããªã±ãŒã·ã§ã³ã«ç¬èªã®python3ã³ããŒãæäŸããå ¬åŒã®æ¹æ³ã¯äœã§ããïŒ
ä»®æ³ç°å¢ã¯ãåžžã«ãã·ã³äžã®Pythonã€ã³ã¿ãŒããªã¿ãŒãåç
§ããããã«èšèšãããŠããŸãã åºæ¬çãªåæã¯ããã·ã³äžã«å®å
šã«æ©èœããPythonç°å¢ãããããã®ããã«è€æ°ã®åå¥ã®site-packages
å¿
èŠãªããšã§ãã ãªã³ã¯ãå®å
šã«æ瀺çã«ããªãããšã«ã¯ããçšåºŠã®äŸ¡å€ããããŸããïŒå®å
šã«æ瀺çãªãã¹ã®å Žåã®ããã«ïŒããã©ãå Žåã¯ã pexã䜿çšããŠã³ãŒããããã±ãŒãžåããŠãã ãããåç
§ãç°¡åã«å£ãããšãªããPythonå®è¡å¯èœãã¡ã€ã«ãäºåã«å®è¡ã§ããŸããïŒ
@gaborbernat確ãã«ãããã¯ããŸãããã§ããããæ倧ã®åé¡ã¯ãã»ãšãã©ã®ãŠãŒã¶ãŒãã€ã³ã¹ããŒã«åŸã«ãã©ã«ãã®ååãå€æŽããã ãã§äœ¿çšã§ãããããæ©èœãç¶ããããšã§ã...
ããããPYTHONHOMEãèšå®ããŠãããŸãããããšãããããŸãããå°ãªããšããå
ã®ã€ã³ã¹ããŒã«ãåç
§ããã«åäœãããWindowsã§ã¯ã
pexã¯é¢çœããã ããããããã£ãšè©³ããèŠãŠãããŸãããã³ãã¯thxã§ãã
@gaborbernatããã§ãã
@gaborbernat確ãã«ãããã¯ããŸãããã§ããããæ倧ã®åé¡ã¯ãã»ãšãã©ã®ãŠãŒã¶ãŒãã€ã³ã¹ããŒã«åŸã«ãã©ã«ãã®ååãå€æŽããã ãã§äœ¿çšã§ãããããæ©èœãç¶ããããšã§ã...
圌ãããããæåŸ ããçç±ãããããŸããã ããã¯æ±ºããŠããã§ã¯ãããŸããã§ããã åé 眮å¯èœãã©ã°ããã£ãŠããèããããã±ãŒã¹ã®ãµãã»ããã§ã¯åœãŠã¯ãŸããŸããã ãããã£ãŠããªããããv20ã§æ©ãŸãããã®ãã
@gaborbernatããã§ãã
@bersaceããã¯å€ãã®ãŠãŒã¹ã±ãŒã¹ã«äŸåããŸãã deb / rpmã¯ãPythonãã¿ãŒã²ãããã·ã³ã®åãå Žæã§å©çšã§ããããšãä¿èšŒããŸããïŒ ãããããªããã€ã³ã¹ããŒã«äžã«ã·ã§ãã³ãã¹ãä¿®æ£ããã ãã§ãð
ã·ã¹ãã pythonã«äŸåãã@gaborbernatã¯ãpythonãç¹å®ã®å Žæã«ããããšã確èªããã®ã«ååã§ãã
postinstã§ã€ã³ã¹ããŒã«ããããã¡ã€ã«ãå€æŽããããšã¯éåžžã«æªãèãã§ãã ããã«ã¯ãdpkgã¬ã«ã ãããã¹ãŠã®ã¹ã¯ãªãããé€å€ããå¿ èŠããããããdpkgã¯ã¢ããã°ã¬ãŒãæã«ãããã«è§ŠããŸããã ããã¯åãå ¥ããããŸããã
AFIAKãæåã®è§£æ±ºçã¯ããã¹ãŠã®ã·ãã³ãç·šéããŠdestdir
ãåé€ããæçµããã±ãŒãžãã¢ãŒã«ã€ãããåã«å®è¡ããvirtualenv-change-prefix
ã§ãã
@bersaceãšããªãã¯shebangsãäœã«èšå®ããŸããïŒ
@gaborbernat絶察ã¿ãŒã²ããäœçœ®ã äŸïŒ #!/opt/company/app/venv/bin/python
ã
ããã¯ããã®ããã±ãŒãžã/
以å€ã®æ°ããrefrootã«ãããã€ããããšããµããŒããããªããªã£ãããšãæå³ããŸããïŒ
@gaborbernatã¯ããèšèšã«ãããã®ã§ãã dpkg / rpmã§ç®¡çãããŠãããã¡ã€ã«ã¯ããŠãŒã¶ãŒã移åããŠã¯ãªããŸããã
ããã¯relocatable
ãšã¯å€å°ç°ãªããŸãã ç®çã¯ãvenvãçžå¯Ÿçãªãã®ã«ããããšã§ã¯ãªããbuilddirïŒdebian / build / ...ãŸãã¯ïŒ
builddirïŒãšrundirïŒ/ïŒãåºå¥ããããšã§ãã
ç§ãã¡ã®åŽã«å®çšçãªã¢ã€ãã ããªãã®ã§ããããéããŸãã ããã§ããŸãã¯virtualenvã®äžã§ããã«åãçµãããšãè©Šã¿ãæœåšçãªãããžã§ã¯ãã«ã€ããŠè°è«ãç¶ããããšããå§ãããŸãã
å®éã«ã¯ãããŒãžã§ã³ç®¡çãè¡ããã«ããã³ããŒã®äŸåé¢ä¿ããããã代æ¿ããããšãã§ããŸãã
ç§ã®å Žåãåæ£Sparkã¯ã©ã¹ã¿ãŒã§ã®ããã°ã©ã ã®å®è¡ããµããŒãããããã«ãå¿
èŠãªäŸåé¢ä¿ãå«ãpythonããã±ãŒãžãå§çž®ããããããã¢ãŒã«ã€ãããšããŠSpark onYarnã«æž¡ãå¿
èŠããããŸãã ãã®æäœã¯ã¢ãã³ã³ãã§å®äºã§ããŸãããç§ã®äŒç€Ÿã§ã¯ãšã³ã¿ãŒãã©ã€ãºãœãããŠã§ã¢ã䜿çšã§ããŸããã relocatable
ã¯ã以åã¯ãã®åé¡ã解決ã§ããŸããããçŸåšã¯ãªããªããŸããã
ç§ã®å Žåãåæ£Sparkã¯ã©ã¹ã¿ãŒã§ã®ããã°ã©ã ã®å®è¡ããµããŒãããããã«ãå¿ èŠãªäŸåé¢ä¿ãå«ãpythonããã±ãŒãžãå§çž®ããããããã¢ãŒã«ã€ãããšããŠSpark onYarnã«æž¡ãå¿ èŠããããŸãã ãã®æäœã¯ã¢ãã³ã³ãã§å®äºã§ããŸãããç§ã®äŒç€Ÿã§ã¯ãšã³ã¿ãŒãã©ã€ãºãœãããŠã§ã¢ã䜿çšã§ããŸããã
relocatable
ã¯ã以åã¯ãã®åé¡ã解決ã§ããŸããããçŸåšã¯ãªããªããŸããã
ããã«ã¡ã¯@jackhhh ãæ¢åã®ãŠãŒã¹ã±ãŒã¹ã®åé¿çãèŠã€ããŸãããïŒ
åãåé¡ãçºçããŠããŸãã
æãåèã«ãªãã³ã¡ã³ã
--relocatable
ã䜿çšããŠvenvãrpmã«ãã³ãã«ããŸãã virtualenvã¯$ DESTDIRã«äœæãããæçµçã«/opt/company
ã«ç§»åãããŸãã