Π Π°Π·Π΄Π΅Π» Π΄Π»Ρ ΡΠ΅Ρ , ΠΊΠΎΠΌΡ Π½ΡΠΆΠ½ΠΎ ΡΡΠΎ-ΡΠΎ ΡΠΎΠ±ΡΠ°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ TA
- ΠΠ»ΠΎΠ½ΠΈΡΡΠΉΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡ Ρ Π»ΡΠ±ΠΎΠ³ΠΎ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΡ, Π³Π΄Π΅ Π²Ρ ΡΠΈΡΠ°Π΅ΡΠ΅ ΡΡΠΎΡ ΡΠ΅ΠΊΡΡ.
- Π’Π°ΠΊ Π±ΡΠ΄Π΅Ρ Π΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ
git pull
, ΡΠ΅ΠΉΡΠ°Ρ ΠΏΡΠΎΠ΅ΠΊΡ TA Π² ΡΠ°Π·Π΅ Π°ΠΊΡΠΈΠ²Π½ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ.
- Π’Π°ΠΊ Π±ΡΠ΄Π΅Ρ Π΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ
- ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ Π² ΠΏΠ°ΠΏΠΊΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°
sudo python3 -m pip install -e .
- ΠΠ°Ρ Π»ΠΈΠ½ΡΠΊΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π² sudoers, Π±Π΅Π· ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΆΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠΎΠ»Π΅ΠΌ (Π³ΡΠ³Π»ΠΈΡΠ΅ Β«sudoers NOPASSWDΒ»)
- ΠΠ°ΠΏΡΡΡΠΈΡΠ΅ β ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ ΠΏΠΎΡΡΠ°Π²ΠΈΡ Π½ΡΠΆΠ½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ Π² Π²Π°Ρ Π»ΠΈΠ½ΡΠΊΡ β β ΠΏΡΠΎΠ²Π΅ΡΠ΅Π½ΠΎ Π½Π° Ubuntu 22.04 (ΡΠ°ΠΌ Π΅ΡΡΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ, ΡΠΌ Π½ΠΈΠΆΠ΅.) ΠΈ Fedora (ΠΎΡ FC36)
terrarium_assembler systeminstall
-
ΠΡΠΈΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΌΠ°Π»ΠΎ, ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π°Π±ΡΠΎΠ»ΡΡΠ½ΡΠΉ ΠΌΠΈΠ½ΠΈΠΌΡΠΌ, Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠ΅ ΠΎΠ½ ΡΠΊΠ°ΡΠ°Π΅Ρ ΠΈ Π±ΡΠ΄Π΅Ρ ΡΡΠ°Π²ΠΈΡΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΡ ΠΈ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ.
-
ΠΠΏΡΠΈΠΈ ΠΈ Π²ΡΠ΅ ΡΠ°ΠΊΠΎΠ΅ Π΄ΠΎΠ»Π³Π°Ρ ΡΠ΅ΠΌΠ°, Π½ΠΎ ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π΅ΡΡΡ ΡΠΏΠ΅ΠΊ ΠΏΡΠΎΠ΅ΠΊΡΠ° (
project.yml
) ΠΈ Π΅Π³ΠΎ Π½Π°Π΄ΠΎ ΡΠΎΠ±ΡΠ°ΡΡ, ΡΠΎ Π·Π°ΠΏΡΡΡΠΈΡΠ΅ Π² ΠΏΠ°ΠΏΠΊΠ΅ ΡΡΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°
terrarium_assembler --stage-checkout project.yml
Π½Ρ Π° Π²ΡΠ΅ ΡΠ±ΠΎΡΠΊΠΈ-ΠΏΠ΅ΡΠ΅ΡΠ±ΠΎΡΠΊΠΈ:
terrarium_assembler --stage-all project.yml
Π’Π°ΠΌ ΡΠΎΠ±ΡΠ°Π½Ρ ΡΡΠ°ΡΡΠ΅ Π²Π΅ΡΡΠΈΠΈ podman, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΠΎΠ²ΡΠ΅ΠΌ ΡΠ»ΠΎΠΌΠ°Π½Π½ΡΠ΅. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ Ρ Π²Π°Ρ Π²Π΅ΡΡΠΈΡ
podman 3.4.4+ds1-1ubuntu1.22.04.2, ΡΠΎ ΠΎΠ½Π° ΡΠ»ΠΎΠΌΠ°Π½Π° (Π²ΠΈΠ΄Π½ΠΎ, ΠΊΠ°ΠΊ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Ρ sudo), ΠΈ Π½Π°Π΄ΠΎ Π΄Π°ΡΠ½Π³ΡΠ΅ΠΉΠ΄ΠΈΡΡΡ
sudo apt-get install podman=3.4.4+ds1-1ubuntu1 -y
Π§ΡΠΎΠ±Ρ Π΄ΠΎΠ±ΠΈΡΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π³ΠΈΠ±ΠΊΠΎΡΡΠΈ ΠΈ Π²Π΅ΡΠΈΡΠΈΡΠΈΡΡΠ΅ΠΌΠΎΡΡΠΈ ΡΠ±ΠΎΡΠΊΠΈ, Π±Π΅Π· Π·Π°ΠΏΡΡΠ°Π½Π½ΠΎΠΉ ΠΌΠ°Π³ΠΈΠΈ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΈΡΡΠ΅ΠΌ ΡΠ±ΠΎΡΠΎΠΊ (make-Scons-β¦, Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΠΎ ΡΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ, Π·Π°ΡΠ΅ΠΌ ΠΈ Π³Π΄Π΅)
- Π²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ°Π·Π±ΠΈΡΡ Π½Π° Π½Π΅ΠΊΠΈΠ΅ ΠΏΡΠΎΠ½ΡΠΌΠ΅ΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ°Π³ΠΈ-ΡΠ°Π·Ρ, Ρ ΠΏΠΎΠ½ΡΡΠ½ΡΠΌ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΡ
- Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠ°ΠΊΠΎΠΉ ΡΠ°Π·Ρ Π³Π΅Π½Π΅ΡΠΈΡΡΡ bash-ΡΠ°ΠΉΠ», Ρ Π½ΠΎΠΌΠ΅ΡΠΎΠΌ ΠΈ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΡΠ°Π·Ρ Π² Π½Π°Π·Π²Π°Π½ΠΈΠΈ, Π³Π΄Π΅ ΠΏΡΠΎΠΏΠΈΡΠ°Π½ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ, ΡΡΠΎΡ ΡΠ°ΠΉΠ» ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠΏΡΠ°Π²ΠΈΡΡ, ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ² ΠΈ Ρ.ΠΏ.
- ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ
- ΠΈΠ΄Π΅ΠΌΠΏΠΎΡΠ΅Π½ΡΠ½Ρ
- ΠΏΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅, ΡΡΠΎΠ±Ρ Π½Π΅ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΡ, Π΅ΡΠ»ΠΈ Β«Π²ΡΠΎΠ΄Π΅ ΠΊΠ°ΠΊΒ» ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΠΈΡΡ (Π½Π΅ ΡΠΊΠ°ΡΠΈΠ²Π°ΡΡ Π·Π°Π½ΠΎΠ²ΠΎ ΠΏΠ°ΠΊΠ΅ΡΡ, Π΅ΡΠ»ΠΈ ΡΠΏΠΈΡΠΎΠΊ ΠΈ ΠΎΠΏΡΠΈΠΈ ΡΠ°ΠΊΠΈΠ΅ ΠΆΠ΅, Π½Π΅ ΠΏΠ΅ΡΠ΅ΡΠΎΠ±ΠΈΡΠ°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡ, Π΅ΡΠ»ΠΈ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»ΡΡ ΠΊΠΎΠ΄ ΠΈ Ρ.ΠΏ.) β Ρ ΠΎΡΡ ΡΡΠΎ Π½Π΅ Π΄Π°Π΅Ρ 100% Π³Π°ΡΠ°Π½ΡΠΈΠΈ.
- Π½Π°Π·Π²Π°Π½ΠΈΡ ΡΠ°Π³ΠΎΠ² ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎ Π΄Π»ΠΈΠ½Π½ΡΠ΅,
- ΠΏΡΡΠ°ΡΡΡΡ Π±ΡΡΡ ΠΎΠ±ΡΡΡΠ½ΡΡΡΠΈΠΌΠΈ (Π²Π½ΡΡΡΠΈ ΡΠ΅Π»Π»-ΡΠ°ΠΉΠ»Π° Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΠΎΠ΅ ΠΎΠ±ΡΡΡΠ½Π΅Π½ΠΈΠ΅)
- ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡ ΠΎΡΡΠΈΠ»ΡΡΡΠΎΠ²ΡΠ²Π°ΡΡ ΠΈ Β«ΡΠΊΠΈΠΏΠ°ΡΡΒ» ΠΏΠΎ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΡΠ»ΠΎΠ²Π°ΠΌ (ΡΠΌ. Π΄Π°Π»ΡΡΠ΅)
- ΡΠΎ, ΡΡΠΎ ΠΎΠ½ΠΈ Π΄Π»ΠΈΠ½Π½ΡΠ΅ β Π½Π΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Π΄Π»Ρ ΡΠΊΡΠΈΠΏΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°ΡΡ, Π΄Π»Ρ ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΡΠΎ ΠΊΠ»ΠΈΠΊΠ½ΡΡΡ ΠΏΠΎ ΡΠ΅Π»Π»-ΡΠ°ΠΉΠ»Ρ Π² ΡΠ°ΠΉΠ»ΠΎΠ²ΠΎΠΌ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅ΡΠ΅ ΠΈΠ»ΠΈ Π²ΠΎΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΎΠΉ β Ρ.Π΅. ΡΡΠΎ ΠΏΠΎΡΡΠΈ ΠΊΠ°ΠΊ Π²ΡΠ·ΠΎΠ² ΠΈΠ· ΠΌΠ΅Π½Ρ.
- Π΅ΡΡΡ ΠΎΠΏΡΠΈΠΈ-ΠΊΠΎΠΌΠ±ΠΎ, ΡΠΈΠΏΠ°
--stage-all
, Π΅ΡΠ»ΠΈ ΡΠΏΡΠΎΡΠΈΡΡ
terrarium_assembler --help
ΠΏΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΡ ΡΠ°ΠΊΡΡ ΠΎΠ½ ΡΠ°ΡΡΠΊΠ°ΠΆΠ΅Ρ ΠΈΠ· ΡΠ΅Π³ΠΎ ΠΎΠ½Π° ΡΠΎΡΡΠΎΠΈΠΈ:
--stage-all stage-init-box-and-repos + stage-download-base-packages + stage-install-base-rpms + stage-download-rpm-packages + stage-
install-rpms + stage-save-file-rpmpackage-info + stage-download-base-wheels + stage-init-python-env + stage-checkout-
sources + stage-build-wheels + stage-download-wheels + stage-compile-pip-tars + stage-install-wheels + stage-build-
python-projects + stage-build-go + stage-save-sofiles + stage-pack + stage-post-pack + stage-make-packages
--stage-rebuild stage-init-box-and-repos + stage-install-base-rpms + stage-install-rpms + stage-save-file-rpmpackage-info + stage-init-
python-env + stage-build-wheels + stage-compile-pip-tars + stage-install-wheels + stage-build-python-projects + stage-
build-go + stage-save-sofiles + stage-pack + stage-post-pack + stage-make-packages
Π’.Π΅. ΡΠ°ΠΌΠ°Ρ ΠΏΡΠΎΡΡΠ°Ρ ΠΎΠΏΡΠΈΡ ΡΡΠΎ Β«--stage-allΒ», Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠ΅ΠΊΡ Π΅ΡΠ΅ Π½Π΅ ΡΠ΅ΠΊΠ°ΡΡΠΈΠ»ΡΡ, ΡΠΎ Π»ΡΡΡΠ΅ ΡΠ½Π°ΡΠ°Π»Π° Π²ΡΠ·Π²Π°ΡΡ Β«--stage-checkoutΒ», ΠΏΠΎΡΠΎΠΌ Β«--stage-allΒ».
- ΠΠΎΠΆΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΎΠΏΡΠΈΠΈ, ΡΡΡΠ»Π°ΡΡΡ Π½Π° Π½ΠΎΠΌΠ΅ΡΠ° ΡΠ°Π³ΠΎΠ² ΠΈΠ»ΠΈ ΠΈΡ
ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»Ρ ΡΠ΅ΡΠ΅Π· Π·Π°ΠΏΡΡΡΡ:
- ΡΡΠΎ Π½Π΅ ΠΎΡΠ΅Π½Ρ Π½Π°Π΄Π΅ΠΆΠ½ΠΎ Π΄Π»Ρ ΡΠΊΡΠΈΠΏΡΠΎΠ², Π½ΠΎΠΌΠ΅ΡΠ° ΠΌΠΎΠ³ΡΡ ΡΠ°ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²ΡΠ²Π°ΡΡΡΡ ΠΏΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ TA, ΡΡΠΎΠ±Ρ Β«Π²ΠΎΡΠΊΠ½ΡΡΡ Π½ΠΎΠ²ΡΠ΅ ΡΠ°Π³ΠΈΒ»
- Π½ΠΎ ΠΎΡΠ΅Π½Ρ ΡΠ΄ΠΎΠ±Π½ΠΎ Π΄Π»Ρ ad-hoc-Π²ΡΠ·ΠΎΠ²ΠΎΠ², Π²ΠΎΡ ΠΏΡΡΠΌΠΎ Π·Π΄Π΅ΡΡ ΠΈ ΡΠ΅ΠΉΡΠ°Ρ.
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ»ΠΎΠΌΠ°Π»ΡΡ ΠΏΠΎΡΠ΅ΠΌΡ-ΡΠΎ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ ΡΠ±ΠΎΡΠΊΠΈ, Π²ΠΈΠ΄ΠΈΡΠ΅ Π½Π΅ΠΏΠΎΠ½ΡΡΠ½ΡΡ ΡΡΠ³Π°ΡΡ ΡΠΎ ΡΠ»ΠΎΠ²Π°ΠΌΠΈ Β«ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΒ», ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΡΠΎΠ±ΡΠ°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ-ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Π±ΡΡΡΡΠΎ, ΡΠΈΠΏΠ°
terrarium_assembler dmi-release.yml --steps=0-7
ΠΈΠ»ΠΈ, Π΅ΡΠ»ΠΈ Π²Ρ Π·Π½Π°Π΅ΡΠ΅, ΡΡΠΎ ΠΏΠ°ΠΊΠ΅ΡΡ ΡΠΆΠ΅ Π²ΡΠΊΠ°ΡΠ°Π½Ρ ΠΈ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ (ΡΠ΅ΠΎΡΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈ, ΠΎΠ½ΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π²ΡΠΊΠ°ΡΠΈΠ²Π°ΡΡ, Π½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠΉ-ΡΠΎ ΠΏΠ°ΠΊΠ΅Ρ Π² ΡΠΏΠ΅ΠΊ, Π½ΠΎ ΡΠ΅ΠΉΡΠ°Ρ ΡΡΠΎ Π½Π΅Π²Π°ΠΆΠ½ΠΎ, ΠΈ Π²Ρ Ρ ΠΎΡΠΈΡΠ΅ ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ ΡΠ°Π³ΠΈ ΡΠΊΠ°ΡΠΈΠ²Π°Π½ΠΈΡ)
terrarium_assembler dmi-release.yml --steps=0,3,7
ΠΡ ΠΈΠ»ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, Π½Π΅ ΡΡΠΎΠ³Π°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ, Π½ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΏΠ΅ΡΠ΅ΡΠΎΠ±ΡΠ°ΡΡ ΠΏΠΈΡΠΎΠ½ΠΎΠ²ΡΠΉ Π²ΠΈΡΡΡΠ°Π»Π΅Π½Π², ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ΅ΠΊΡΡ ΠΈ ΡΠ΄Π΅Π»Π°ΡΡ ΠΈΠ· Π½ΠΈΡ ΡΠ±ΠΎΡΠΊΡ ΠΈ ΠΏΠ°ΠΊΠ΅ΡΡ
terrarium_assembler dm-release.yml --steps=21-27,40-59
ΠΡΠ΅ Π΅ΡΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΎΡΠΊΠΈΠΏΠ°ΡΡ ΡΠ°Π³ΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΠ»ΠΎΠ²Π°ΡΠ½ΡΠΉ ΡΠΈΠ»ΡΡΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Ρ Π±Π΅Π· ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΠ°, ΠΈ Π½Π΅ Ρ ΠΎΡΠΈΡΠ΅, ΡΡΠΎΠ±Ρ Π³ΠΈΠ³Π°Π±Π°ΠΉΡΡ ΡΠΊΠ°ΡΠ°Π½Π½ΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² ΠΏΡΠΎΠΏΠ°Π»ΠΈ, Π½ΠΎ ΠΏΠ΅ΡΠ΅ΡΠΎΠ±ΡΠ°ΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅Ρ Π½Π°Π΄ΠΎ, ΠΈ ΡΠ΅ΠΊΠ°ΡΡΠΈΡΡ ΠΏΡΠΎΠ΅ΠΊΡΡ Π½Π΅ Ρ ΠΎΡΠΈΡΠ΅:
terrarium_assembler dmi-release.yml --steps=0-7 --skip-words=download,checkout
Π ΡΠ°ΠΌΠΎΠ΅ Π²Π°ΠΆΠ½ΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ, ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½Π°Π΄ΠΎ ΠΈΠ·Π±Π΅Π³Π°ΡΡ (ΠΏΠΎΠΊΠ° Ρ Π½Π΅ Π²Π΅ΡΠ½ΡΠ»ΡΡ ΠΈΠ· ΠΎΡΠΏΡΡΠΊΠ° β Β«auditΒ») β ΡΠ°ΠΌ Ρ ΠΈΡΡΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΡΠΊΠ°ΡΠ°ΡΡ ΡΠΎΡΠ½ΠΈ Π³ΠΈΠ³ΠΎΠ², Π·Π°ΠΉΠΌΡΡ Π²Π°Ρ ΠΊΠΎΠΌΠΏ Π½Π° ΡΡΡΠΊΠΈ, ΠΈ ΠΏΠΎΠΉΠ΄ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΡΡΠ³ΠΈΠΌ, Π½Π΅ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌ ΠΏΡΡΠ΅ΠΌ...
ΠΠΎΡ ΡΡΠΎ ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ, ΡΡΠΎ ΠΈ Β«--stage-allΒ»
terrarium_assembler dmi-release.yml --steps=0-59 --skip-words=audit
Π 2020 Π³ΠΎΠ΄Ρ ΠΈΡΠΏΠΎΠ»Π½ΠΈΠ»ΠΎΡΡ 30 Π»Π΅Ρ ΡΠ·ΡΠΊΡ Python, ΠΈ ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΎΠ½ ΡΡΠ°Π» ΡΠ°ΠΌΡΠΌ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΠΌ ΡΠ·ΡΠΊΠΎΠΌ Π² ΡΠ΅ΠΉΡΠΈΠ½Π³Π΅ TIOBE.
ΠΠ° ΡΡΠΎ Π²ΡΠ΅ΠΌΡ Python, ΡΠΎΠΆΠ΄Π΅Π½Π½ΡΠΉ ΠΊΠ°ΠΊ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΡΠΉ ΡΠ·ΡΠΊ Π΄Π»Ρ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ, Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΡΡΠΎΠ²Π½Ρ ΠΌΠ»Π°Π΄ΡΠΈΡ ΡΠΊΠΎΠ»ΡΠ½ΠΈΠΊΠΎΠ², ΡΡΠ°Π» ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»Π°ΠΌΠΈ Π²ΠΎ Π²ΡΠ΅Ρ ΠΎΠ±Π»Π°ΡΡΡΡ : ΠΊΠ°ΠΊ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ, ΡΠ°ΠΊ ΠΈ Π² ΡΠΈΡΠΎΠΊΠΎΠΌ ΡΠΏΠ΅ΠΊΡΡΠ΅ Π½Π°ΡΡΠ½ΡΡ ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ, Π±ΡΠ΄Ρ ΡΠΎ Π°ΡΡΡΠΎΠ½ΠΎΠΌΠΈΡ, Π±ΠΈΠΎΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΊΠ° ΠΈΠ»ΠΈ ΡΡΠ°ΡΠΈΡΡΠΈΠΊΠ°,Β β Π² Π±ΡΠΊΠ²Π°Π»ΡΠ½ΠΎΠΌ ΡΠΌΡΡΠ»Π΅ Π²Π΅Π·Π΄Π΅.
ΠΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ»Π³ΠΎ ΡΠ°ΡΡΡΠΆΠ΄Π°ΡΡ ΠΎ ΠΏΡΠΈΡΠΈΠ½Π°Ρ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΡΠΏΠ΅Ρ Π°: ΠΏΠΎΠ²Π»ΠΈΡΠ» Π»ΠΈ ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ, ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌΡΠΉ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΌΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ, Π½ΠΎ ΠΈ Π»ΡΠ±ΡΠΌ Π½Π΅Π³Π»ΡΠΏΡΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ, Β«Π΄Π·Π΅Π½ ΠΏΠΈΡΠΎΠ½Π°Β», ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π½Π° ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ Π½Π΅ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°, Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½Π°Ρ ΠΏΡΠΎΡΡΠΎΡΠ° ΠΈ ΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΡ, ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ Π΄Π»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠ΅ ΠΈΠ»ΠΈ ΡΡΠΎ-ΡΠΎ Π΅ΡΡ.
ΠΠ° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅, ΡΡΠΎ Π½Π΅Π²Π°ΠΆΠ½ΠΎ, Π° Π²Π°ΠΆΠ½ΠΎ ΡΠΎ, ΡΡΠΎ ΡΠ΅ΠΉΡΠ°Ρ PythonΒ β ΡΠ°ΠΌΡΠΉ ΡΠ΄ΠΎΠ±Π½ΡΠΉ ΡΠ·ΡΠΊ (ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, Π΄Π»Ρ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π²ΡΡΠΎΠΊΠΎΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ), ΠΈΠ±ΠΎ Π² Π½Π΅ΠΌ Π΅ΡΡΡ Β«Π±Π°ΡΠ°ΡΠ΅ΠΉΠΊΠΈΒ» ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΎΠ±Π»Π°ΡΡΠ΅ΠΉ Π²ΡΡΠΎΠΊΠΎΠ½Π°ΡΡΠ½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.
ΠΡΠ»ΠΈ ΡΠ°Π½ΡΡΠ΅ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ ΠΏΡΠΎΡΠΎΡΠΈΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½ΠΎΠ²ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² Π½ΡΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΠΏΡΠΈΠ±Π΅Π³Π°ΡΡ ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Β«ΠΏΠ°ΠΊΠ΅ΡΠΎΠ² Π΄Π»Ρ ΠΌΠ°ΡΠ΅ΠΌΠ°Ρиков» β ΡΠΈΡΡΠ΅ΠΌ ΡΠΈΠΏΠ° Mathematica, Mathcad, Mapple ΠΈΒ Ρ.ΠΏ. β Ρ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈΡ Π΄Π»Ρ ΡΠ΅Π°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΡΠ·ΡΠΊΠΈ ΠΏΡΠΎΠΌΡΡΠ»Π΅Π½Π½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ (C/C++/Java), ΡΠΎ ΡΠ΅ΠΉΡΠ°Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ Π½ΠΎΠ²ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΠΏΡΠΈΠ½ΡΡΠΎ Π²Π΅ΡΡΠΈ Π½Π° Python, ΠΏΡΠΈΡΠ΅ΠΌ Π·Π°ΠΌΠ΅Π½ΡΡ ΠΈΠ»ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΡΡ ΠΏΡΠΈΠ²ΡΡΠ½ΡΠ΅ Β«ΡΡΠ°ΡΡΠΈ Ρ ΠΏΡΠ΅Π²Π΄ΠΎΠΊΠΎΠ΄ΠΎΠΌΒ», Π°Π»Π³ΠΎΡΠΈΡΠΌΡ Π² ΠΊΠΎΡΠΎΡΡΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΈ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡ Π±Π΅Π· ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, Π½Π° Jupyter-Π½ΠΎΡΡΠ±ΡΠΊΠΈ, ΡΠ²Π»ΡΡΡΠΈΠ΅ΡΡ Π³ΠΈΠ±ΡΠΈΠ΄Π°ΠΌΠΈ ΡΠ΅ΡΠ΅Π΄ΡΡΡΠ΅Π³ΠΎΡΡ ΡΠ΅ΠΊΡΡΠ°, ΡΠΎΡΠΌΡΠ» ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅Π³ΠΎ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° Π½Π° Python, Π²ΡΠ΄Π°ΡΡΠ΅Π³ΠΎ Π²Π΅ΡΠΈΡΠΈΡΠΈΡΡΠ΅ΠΌΡΠ΅ Π³ΡΠ°ΡΠΈΠΊΠΈ ΠΈ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ, Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ paperswithcode.com, ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΡΠ°ΡΠ΅ΠΉ ΡΠΈΠΏΠ° Β«Transparency and reproducibility in artificial intelligenceΒ» ΠΊΠΎΠ½ΡΡΠ°ΡΠΈΡΡΡΡ ΡΠ΅ΠΊΡΡΠΈΠΉ ΠΊΡΠΈΠ·ΠΈΡ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ Π½Π°ΡΡΠ½ΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΈ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈΠ·ΡΠ²Π°ΡΡ, ΡΡΠΎΠ±Ρ Π²ΡΠ΅ Π½Π°ΡΡΠ½ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π±ΡΠ»ΠΈ Π² Π²ΡΡΠ΅ΠΈΠ·Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌ ΡΠΎΡΠΌΠ°ΡΠ΅.
ΠΡΠΈΡΠ΅ΠΌ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ Π½ΠΎΠ²ΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² Π½Π° Python ΠΌΠΎΠΆΠ½ΠΎ Π²Π΅ΡΡΠΈ ΠΎΡ ΠΏΠ΅ΡΠ²ΡΡ ΠΈΠ΄Π΅ΠΉ, ΡΠ΅ΡΠ΅Π· Π±ΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ, Π΄ΠΎ Π²ΡΠΊΠ°ΡΠΊΠΈ Π² ΡΠ΅Π°Π»ΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅, ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΠΎΠ»ΡΡΠ°Ρ ΠΎΠ±ΡΠ°ΡΠ½ΡΡ ΡΠ²ΡΠ·Ρ ΠΏΠΎ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ ΠΈ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎ ΡΠ»ΡΡΡΠ°Ρ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ Π±Π΅Π· Π΄ΠΎΠ»Π³ΠΈΡ ΡΠΈΠΊΠ»ΠΎΠ² ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΡΠ²Π°Π½ΠΈΡ Π½Π° Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ·ΡΠΊΠΈ ΠΈ ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠΈ. Π Π»ΠΈΡΡ Π² ΠΊΡΠ°ΠΉΠ½ΠΈΡ ΡΠ»ΡΡΠ°ΡΡ , Π΄Π»Ρ Π½Π΅Π±ΠΎΠ»ΡΡΠΈΡ ΠΈ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΡ ΠΊΡΡΠΊΠΎΠ² ΠΊΠΎΠ΄Π°, ΠΏΡΠΈΠ±Π΅Π³Π°Ρ ΠΊ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π² Π²ΠΈΠ΄Π΅ Π½Π°ΡΠΈΠ²Π½ΡΡ C-ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ.
Π‘ΡΠΎΠΈΡ ΠΎΡΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΡΠ°ΠΌ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Python ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠ΄ Π²ΡΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΠΎ ΡΡΠΎΠΉ ΠΏΡΠΈΡΠΈΠ½Π΅ Π½Π΅ ΡΡΠ°Π·Ρ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π²ΠΈΠ΄Π½Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ: Β«ΠΏΠΎΡΠ΅ΠΌΡ Π±Ρ ΠΊΠΎΠ΄Ρ Π½Π° Python Π½Π΅ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π½Π° ΡΡΠΌ ΡΠ³ΠΎΠ΄Π½ΠΎ, ΠΎΡ ΠΏΡΠΈΠ²ΡΡΠ½ΡΡ x86 Π΄ΠΎ ARMΠΎΠ², MIPSΠΎΠ² ΠΈ ΠΠ»ΡΠ±ΡΡΡΠΎΠ², ΠΎΡ Π΄ΡΠ΅Π²Π½ΠΈΡ Π²Π΅ΡΡΠΈΠΉ Windows Π΄ΠΎ ΡΠ΅ΡΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠΎΡΡΠΈΠΉΡΠΊΠΈΡ Π»ΠΈΠ½ΡΠΊΡΠΎΠ²?Β»
Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Ρ ΡΡΠΈΠΌ Π²ΡΠ΅ Π½Π΅ΠΏΡΠΎΡΡΠΎ:
- ΠΠ°Π·ΠΎΠ²ΡΠΉ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ Python, Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, Π΅ΡΡΡ Π²Π΅Π·Π΄Π΅.
- ΠΠΎ ΡΠ±ΠΎΡΠΊΠ° Π²ΡΠ΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΡΡΠ΅ΠΊΠΎΠ² Python-ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉΒ β ΡΠ΅ΡΡΠ΅Π·Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΠΏΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅ΡΠ΅, Π΄Π»Ρ ΡΡΠ°ΡΡΡ Π²Π΅ΡΡΠΈΠΉ Windows ΠΈ ΠΌΠ°Π»ΠΎΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΡΡ Π»ΠΈΠ½ΡΠΊΡ-Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²ΠΎΠ² (ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΈ ΡΠΎΡΡΠΈΠΉΡΠΊΠΈΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π»ΠΈΠ½ΡΠΊΡ-Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Ρ), ΠΏΠ°ΠΊΠ΅ΡΠ½Π°Ρ Π±Π°Π·Π° ΠΊΠΎΡΠΎΡΡΡ Π² Π΄Π΅ΡΡΡΠΊΠΈ ΡΠ°Π· ΠΌΠ΅Π½ΡΡΠ΅, ΡΠ΅ΠΌ Ρ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²ΠΎΠ² Ρ Π±ΠΎΠ»ΡΡΠΈΠΌ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΌΠ΅ΠΉΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² (Fedora-Debian-Ubunta), Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π±Π°Π·ΠΎΠ²ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠ΅ΡΡΠ΅Π·Π½ΠΎ ΡΡΡΠ°ΡΠ΅Π»ΠΈ, ΡΠ°ΠΊ ΡΡΠΎ ΡΠΎΠ±ΡΠ°ΡΡ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠΉ ΡΡΠ΅ΠΊ ΠΏΠΎΠ²Π΅ΡΡ Π½ΠΈΡ ΠΏΠΎΠΏΡΠΎΡΡΡ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.
- ΠΠΎΠΏΡΡΠΊΠ° ΡΠ΄Π΅Π»Π°ΡΡ Β«Π΅Π΄ΠΈΠ½ΡΠΉ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²-ΠΏΠ°ΠΊΠ΅ΡΒ» Ρ ΠΌΠΈΠ½ΠΈΠΌΡΠΌΠΎΠΌ Π²Π°ΡΠΈΠ°ΡΠΈΠΉ (windows/linux) Π½Π΅ ΡΠΈΠ»ΡΠ½ΠΎ ΠΌΠ΅Π½Π΅Π΅ ΠΏΡΠΎΡΡΠ°, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π² ΡΠ²ΡΠ·ΠΈ ΡΠΎ ΡΠ»Π°Π±ΠΎΠΉ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡΡ (
libc
,ld.so
) Π»ΠΈΠ½ΡΠΊΡΠΎΠ² ΠΈ ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Π² ΡΡΠ°ΡΡΡ ΡΠ΅ΡΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π»ΠΈΠ½ΡΠΊΡΠ°Ρ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠΈΠ·ΠΎΠ»ΡΡΠΈΠΈ ΠΈ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΠΈ (docker/flatpack/snapd), ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ ΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ΅ΡΠΈΡΡ. - ΠΡΠΎΠ±Π΅Π½Π½ΠΎ, ΠΊΠΎΠ³Π΄Π° ΡΠΎΠ±ΠΈΡΠ°Π΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΈΡΠΎΠ½-ΠΏΠ°ΠΊΠ΅ΡΠΎΠ²-ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ², ΡΠΎ ΡΠ²ΠΎΠΈΠΌΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ, ΠΈ Π½Π°Π΄ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎ ΡΠΌΠ΅ΡΡ ΡΠΎΠ±ΠΈΡΠ°ΡΡ Π½Π΅ΠΊΡΡ Β«ΠΌΠΎΠ½ΠΎΡΠ΅ΠΏΡΒ» Ρ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΡΡΠΈΠΈ ΠΈΠΌΠΈ (Β«ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ Π½Π° Π½ΠΎΠ²ΡΠΉ numpy-scipy-opencvβ¦Β»)
- ΠΡΠΈ ΡΡΠΎΠΌ, ΡΠ°ΡΡΠΎ Π½Π°Π΄ΠΎ Π΄ΠΎΠ±ΠΈΡΡΡΡ ΠΈ ΠΏΡΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠΎΠ²Π°ΡΡ (Π°ΡΠ΄ΠΈΡ) ΠΏΡΠΎΠ·ΡΠ°ΡΠ½ΠΎΡΡΡ ΡΠ±ΠΎΡΠΊΠΈ, ΡΡΠΎΠ±Ρ Π½Π΅ Π±ΡΠ»ΠΎ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠ³ΠΎ-ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π°, Π½Π΅ ΠΈΠΌΠ΅ΡΡΠ΅Π³ΠΎ ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΎΠ² β Π΄Π»Ρ ΡΠ΅Ρ , ΠΊΡΠΎ ΠΏΡΠΈΠ²ΡΠΊ Π½Π΅ Π·Π°Π΄ΡΠΌΡΠ²Π°ΡΡ ΡΡΠ°Π²ΠΈΡΡ PIP-ΠΏΠ°ΠΊΠ΅ΡΡ Ρ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ Π±ΠΈΠ½Π°ΡΠ½ΡΠΌΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ, ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π½Π΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ ΡΡΠΎΠ±Ρ ΠΏΠ΅ΡΠ΅ΡΠΎΠ±ΡΠ°ΡΡ Π²ΡΠ΅ ΡΡΠΎ Ρ Π½ΡΠ»Ρ, Π½ΡΠΆΠ½ΠΎ ΠΏΠΎ ΡΡΡΠΈ Β«ΡΠΎΠ±ΡΠ°ΡΡ Π»ΠΈΠ½ΡΠΊΡ-Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Β».
ΠΠ»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΈΡ Π·Π°Π΄Π°Ρ Π±ΡΠ» ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠ±ΠΎΡΠΊΠΎΠΉ Terrarium Assembler Ρ Π²Π΅ΡΡΠΈΡΠΌΠΈ ΠΏΠΎΠ΄ Linux ΠΈ Windows.
ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΠΈΠ΄Π΅Ρ:
- ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠΈΡΠΎΠ½Π°, Π²ΡΡ Π΅Π³ΠΎ ΠΌΠ°Π³ΠΈΡ, Π²ΠΊΠ»ΡΡΠ°Ρ Π½Π΅ΠΎΠ±ΡΡΡΠ½ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ Π½Π΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΡΡ
Π½Π° Π΄ΡΡΠ³ΠΈΡ
ΡΠ·ΡΠΊΠ°Ρ
Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ
- ΠΠ΅Π· ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ Cython/Numba/Pyston ΠΈ Π΄ΡΡΠ³ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ² ΠΈ ΡΡΠ°Π½ΡΠΏΠ°ΠΉΠ»Π΅ΡΠΎΠ², ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΉ Python.
- Π‘ΠΎΠ±ΡΠ°ΡΡ Π΄Π»Ρ ΠΊΠΎΠ΄Π° Π²ΡΠ΅ ΡΡΠ΅Π±ΡΠ΅ΠΌΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π½Π° Python ΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠΌ ΡΡΠΎΠ²Π½Π΅.
- Π‘ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ Python-ΠΊΠΎΠ΄ Π² Π±ΠΈΠ½Π°ΡΠ½ΡΠΉ, ΡΠ΅ΡΠ΅Π· ΡΡΠ°Π½ΡΠΏΠ°ΠΉΠ»ΠΈΠ½Π³ Π² C/C++, Π΄ΠΎΠ±ΠΈΠ²ΡΠΈΡΡ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ ΠΈ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ½ΠΎΡΡΠΈ.
ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Python β CPython, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ½Π½Π°Ρ, Π΄Π΅-ΡΠ°ΠΊΡΠΎ ΡΡΠ°Π»ΠΎΠ½Π½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ·ΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Python, ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ Π±Π°ΠΉΡ-ΠΊΠΎΠ΄Π°, Π½Π°ΠΏΠΈΡΠ°Π½ Π½Π° C. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° CPython ΠΈΠ΄Π΅Ρ ΡΠΆΠ΅ Π±ΠΎΠ»ΡΡΠ΅ ΡΡΠΈΠ΄ΡΠ°ΡΠΈ Π»Π΅Ρ: ΡΠΎΡΠ½ΠΈ ΡΡΡΡΡ ΠΊΠΎΠΌΠΌΠΈΡΠΎΠ², ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ ΡΡΡΠΎΠΊ ΠΊΠΎΠ΄Π°, ΠΏΠΎΠ»ΡΠΎΡΡ ΡΡΡΡΡΠΈ ΠΊΠΎΠ½ΡΡΠΈΠ±ΡΡΡΠΎΡΠΎΠ² ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΠ΄ΡΠ°, Π½Π΅ Π³ΠΎΠ²ΠΎΡΡ ΡΠΆΠ΅ ΠΎ ΡΠΎΡΠ½ΡΡ ΡΡΡΡΡ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ².
ΠΡΡΡ ΠΈ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, Π²ΠΊΠ»ΡΡΠ°ΡΡΠΈΠ΅ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Python-ΠΊΠΎΠ΄Π°
- Π² Π±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ Π±Π°ΠΉΡΠΊΠΎΠ΄ PyPy β ΡΡΠΊΠΎΡΠ΅Π½Π½Π°Ρ, Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Python,
- Π² JIT-ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ Pyston β ΡΡΠΊΠΎΡΠ΅Π½Π½Π°Ρ, (Π΄ΠΎ 30% ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ CPython) ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Python),
- Π² Π±Π°ΠΉΡ-ΠΊΠΎΠ΄ Java-ΠΌΠ°ΡΠΈΠ½Ρ β Jython.
ΠΠ΄Π½Π°ΠΊΠΎ Π²ΡΠ΅ ΡΡΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ, ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ, ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡ ΠΊ ΠΏΠΎΡΠ΅ΡΠ΅ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ Ρ ΠΎΠ³ΡΠΎΠΌΠ½ΡΠΌΠΈ ΡΡΠ΅ΠΊΠ°ΠΌΠΈ Π½Π°ΡΡΠ½ΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΈ ΠΏΡΠΈ ΡΡΠΎΠΌ Π½Π΅ ΡΠ΅ΡΠ°ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΎΠ΄Π½ΠΎΡΡΠΎΡΠΎΠ½Π½Π΅ΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ ΡΠΎ ΡΠ»ΠΎΠΆΠ½ΡΠΌ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ.
Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π³ΠΎΠ΄Ρ ΠΏΠΎΡΠ²ΠΈΠ»ΡΡ Π±ΡΡΡΡΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°ΡΡΠΈΠΉΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Nuitka (ΠΏΡΠΎΠΈΠ·Π½ΠΎΡΠΈΡΡΡ ΠΊΠ°ΠΊ Β«Π½ΡΡΡΠΊΠ°Β», ΡΠΌ. Π΄ΠΎΠΊΠ»Π°Π΄ Π°Π²ΡΠΎΡΠ° ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ° Ρ ΡΠ°Π·ΡΡΡΠ½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡΠΎΠΈΠ·Π½ΠΎΡΠ΅Π½ΠΈΡ), Π½Π°Π·Π²Π°Π½Π½ΡΠΉ Π½Π΅ΠΌΠ΅ΡΠΊΠΈΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠΌ Π² ΡΠ΅ΡΡΡ ΡΠ²ΠΎΠ΅ΠΉ ΡΡΡΡΠΊΠΎΠΉ ΠΆΠ΅Π½Ρ (Β«ΠΠ½ΡΡΡΠΊΠ°Β»), ΠΊΠΎΡΠΎΡΡΠΉ:
- Π ΡΠ΅Π»ΠΎΠΌ, ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌ Ρ CPython-ΡΡΠ΅ΠΊΠΎΠΌ: ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΡ, ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ CPython (Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Ρ Python Π² Linux-Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π°Ρ , Anaconda);
- Π’ΡΠ°Π½ΡΠ»ΠΈΡΡΠ΅Ρ Python-ΠΊΠΎΠ΄ Π² Π·Π°ΠΏΡΡΠ°Π½Π½ΡΠΉ Π°Π²ΡΠΎΠ³Π΅Π½Π΅ΡΠΈΡΡΠ΅ΠΌΡΠΉ Π‘/C++ ΠΊΠΎΠ΄, ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΡΠ΅ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌΠΈ Π‘/C++ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°ΠΌΠΈ (gcc, clang, msvc); Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅, Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠΌΡ ΠΎΠΏΡΡΡ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ C++ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ, ΡΠ°ΡΡΠΎ Π΄ΠΎΡΡΠΈΠ³Π°Π΅ΡΡΡ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ β Π±Π΅Π½ΡΠΌΠ°ΡΠΊΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Nuitka Π² ΡΡΠ°Π²Π½Π΅Π½ΠΈΠΈ ΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΌΠΈ CPython Π»ΡΡΡΠ΅ Π² ΡΠ°Π·Ρ, Π° ΠΌΠ΅ΡΡΠ°ΠΌΠΈ ΠΈ Π½Π° ΠΏΠΎΡΡΠ΄ΠΊΠΈ;
- ΠΡΠΈ ΡΡΠΎΠΌ ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ (ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π² ΠΊΠΎΠΌΠΌΠ΅ΡΡΠ΅ΡΠΊΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ), Π·Π°ΠΏΡΡΠ°Π½Π½ΡΠΉ Π±ΠΈΠ½Π°ΡΠ½ΡΠΉ ΠΊΠΎΠ΄, ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΡΠ΅Π·Π²ΡΡΠ°ΠΉΠ½ΠΎ ΡΠ»ΠΎΠΆΠ½ΠΎ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ: ΡΠ»ΠΎΠΆΠ½Π΅Π΅ Π΄Π°ΠΆΠ΅, ΡΠ΅ΠΌ ΠΏΡΠΈ Π΄Π΅ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ², Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π½Π° Π‘/C++;
- ΠΡΠΈ ΡΠ±ΠΎΡΠΊΠ΅ Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ (DLL, .so) ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΠ±ΠΈΡΠ°Π΅Ρ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ.
Π Π°Π·ΡΠΌΠ΅Π΅ΡΡΡ, Π½Π΅ Π²ΡΠ΅ ΡΠ°ΠΊ ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ:
- Π‘ΠΈΡΡΠ΅ΠΌΠ° Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ Π·Π°ΡΠ°ΡΡΡΡ
- ΠΏΡΠΎΠΏΡΡΠΊΠ°Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Python-ΠΌΠΎΠ΄ΡΠ»ΠΈ, Π±Π΅Π· ΠΊΠΎΡΠΎΡΡΡ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ;
- Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, Π³Π»ΡΠ±ΠΎΠΊΠΈΠΌ Π·Π°ΠΌΡΠΊΠ°Π½ΠΈΠ΅ΠΌ Β«ΠΏΡΠΈΠ½ΠΎΡΠΈΡΒ» ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΡΠΈ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΊΡΠΏΠ»ΡΠ°ΡΠ°ΡΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, Π½ΠΎ ΠΏΡΠΈ ΡΡΠΎΠΌ Π·Π°Π½ΠΈΠΌΠ°ΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠ° Π² ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅ΠΉ ΡΠ±ΠΎΡΠΊΠ΅.
ΠΡΠ΅ ΡΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΡΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Β«Π³ΠΎΠ»ΠΎΠ²ΠΎΠ»ΠΎΠΌΠ½ΡΡ Β» ΠΎΠΏΡΠΈΠΉ, ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡΠ°Π»ΡΠ½ΡΡ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΡΠΎΠ±ΠΈΡΠ°Π΅ΠΌΠΎΠΉ ΡΡΠΈΠ»ΠΈΡΡ. ΠΠΎΡΡΠΎΠΌΡ, Π΄Π»Ρ ΡΠ΄ΠΎΠ±ΡΡΠ²Π°, ΠΏΠΎΠ²Π΅ΡΡ Nuitka Π΄ΠΎΠ»ΠΆΠ½Π° ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ Π³ΠΈΠ±ΠΊΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ±ΠΎΡΠΊΠΈ.
ΠΡΠΎΠ±Π»Π΅ΠΌΠ° ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ±ΠΎΡΠΊΠΈ ΠΈ ΡΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ ΡΠΈΡΠ°Π΅ΠΌΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° Π΄Π»Ρ Π½Π΅Π΅ ΡΡΠ°ΡΠ°, ΠΊΠ°ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅.
ΠΠΎΠ³Π΄Π°-ΡΠΎ Π΅Π΅ ΡΠΈΠ»ΡΠ½ΠΎ Π½Π΅Π΄ΠΎΠΎΡΠ΅Π½ΠΈΠ²Π°Π»ΠΈ. ΠΠ·Π²Π΅ΡΡΠ½ΠΎ, ΡΡΠΎ Π°Π²ΡΠΎΡ ΡΠΎΡΠΌΠ°ΡΠ° make-ΡΠ°ΠΉΠ»ΠΎΠ² Π½Π΅ ΠΎΡΠΈΠ»ΠΈΠ» ΡΡ ΠΎΠ΄Ρ Π½Π°ΠΏΠΈΡΠ°ΡΡ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΏΠ°ΡΡΠ΅Ρ, ΡΡΠΈΡΡΠ²Π°ΡΡΠΈΠΉ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Ρ ΡΡΡΠΎΠΊ ΠΈ ΠΎΡΡΡΡΠΏΡ, ΠΈ Π·Π°Π»ΠΎΠΆΠΈΠ»ΡΡ Π½Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΡΠ°Π±ΡΠ»ΡΡΠΈΠΈ Π΄Π»Ρ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΠΏΡΠ°Π²ΠΈΠ», ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΠΎΠ±ΡΠ΅ΠΊΠ°Ρ Π½Π° Π΄Π΅ΡΡΡΠΈΠ»Π΅ΡΠΈΡ Π²ΠΏΠ΅ΡΠ΅Π΄ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² Π½Π° ΠΏΠΎΠΈΡΠΊ ΡΡΡΠ΄Π½ΠΎΠ½Π°Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΠΎΡΠΈΠ±ΠΎΠΊ.
ΠΡΠ»ΠΈ ΠΈ ΡΠΏΠΎΡ ΠΈ ΠΌΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΈΡΠ°Π΅ΠΌΡΡ XML-ΡΠ°ΠΉΠ»ΠΎΠ², ΠΈΠ·ΠΎΠ±ΡΠ΅ΡΠ°Π΅ΠΌΡΠ΅ DSL-ΡΠΎΡΠΌΠ°ΡΡ Ρ ΡΠ°ΠΌΠΎΠ΄Π΅Π»ΡΠ½ΡΠΌΠΈ ΠΏΠ°ΡΡΠ΅ΡΠ°ΠΌΠΈ. Π ΡΠ΅Π»ΠΎΠΌ, ΡΠ΅ΠΉΡΠ°Ρ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠ΅Π΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅ΡΡ JSON- ΠΈ YAML-ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ.
ΠΡΠΈ ΡΡΠΎΠΌ ΡΠΈΡΠ°Π΅ΠΌΠΎΡΡΡ Π±Π΅Π·ΡΡΠ»ΠΎΠ²Π½ΠΎ Π»ΡΡΡΠ΅ Ρ YAML, Π²Π΅Π΄Ρ, ΠΊΠ°ΠΊ ΠΈ Python, ΠΎΠ½ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΡ, Π²ΡΡΡΠΎΠ΅Π½Π½ΡΡ Π² Π²ΠΎΡΠΏΡΠΈΡΡΠΈΠ΅ ΡΠ΅Π»ΠΎΠ²Π΅ΠΊΠ° ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡΡ ΡΡΡΡΠΊΡΡΡΡ ΡΠ΅ΠΊΡΡΠ°, ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°ΡΡΡ Π½Π° ΠΎΡΡΡΡΠΏΠ°Ρ ΠΈ ΠΏΡΠΎΠΏΡΡΠΊΠ°Ρ β ΡΠΎ, ΡΡΠΎ ΡΠ΅Π»ΠΎΠ²Π΅ΡΠ΅ΡΡΠ²ΠΎ ΠΎΡΠ²ΠΎΠΈΠ»ΠΎ Ρ ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΠΈΠ·ΠΎΠ±ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΡΠ»ΠΎΠ²Π°.
ΠΠ΄Π½Π°ΠΊΠΎ ΡΠΎΡΠΌΠ°Ρ YAML Π½Π΅ ΠΈΠ΄Π΅Π°Π»Π΅Π½. Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π² Π½Π΅ΠΌ Π½Π΅Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΠ΅ΠΌΠΎΠΉ Π³ΠΈΠ±ΠΊΠΎΡΡΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΌΠΎΠΆΠ½ΠΎ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° ΡΡΡΠ»Π°ΡΡΡΡ Π½Π° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄ΡΡΠ³ΠΎΠ³ΠΎ. Π§ΡΠΎ-ΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΠΏΡΡΠ°Π»ΠΈΡΡ Π² ΡΠ²ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΠΈ Β«YAML anchorsΒ» (Β«Node AnchorsΒ»), Π½ΠΎ, ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΡΡΠΎ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΠΎΡΠ΅Π½Ρ ΠΌΠ°Π»ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΡΠ»ΡΡΠ°Π΅Π².
Π ΡΡΠΎ ΠΏΡΠΎΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ βΒ ΡΡΠΎΠ±Ρ ΠΏΠΎΠΌΠ΅Π½ΡΠ² ΠΎΠ΄Π½Ρ ΡΠΈΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Π²Π΅ΡΡΠΈΠΈ ΡΠ΅Π³ΠΎ-ΡΠΎ (ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, ΠΌΠΎΠ΄ΡΠ»Ρ, Π²Π΅ΡΡΠΈΠΈ Python), ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΏΠΎΠ»Π½ΡΡ ΠΈ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΡ ΠΏΠ΅ΡΠ΅ΡΡΡΠΎΠΉΠΊΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΡΠ±ΠΎΡΠΊΠΈ: Π²ΡΠΊΠ°ΡΠΊΡ Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ, Π²ΡΠΊΠ°ΡΠΊΡ Π²ΡΠ΅Ρ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ, ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠ±ΠΎΡΠΊΡ ΠΈ ΠΏΠ΅ΡΠ΅ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΡ.
Π Π°Π½Π΅Π΅, ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ Π² ΡΠ±ΠΎΡΠΎΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ ΡΠ΅ΡΠ°Π»ΠΈΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°, ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΊΠ°ΠΊ cxx ΠΈΠ»ΠΈ m4.
Π‘Π΅ΠΉΡΠ°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ Π½Π΅ ΡΠΈΠ»ΡΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»Π°ΡΡ: Π² ΡΠ°ΠΌΠΎΠΉ ΠΌΠΎΠ΄Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠΌΠΈ, Ansible, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ YAML ΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² Jinja.
ΠΡ ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠ»ΠΈ ΡΡ ΠΎΠΆΠΈΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄: ΠΏΠ΅ΡΠ΅Π΄ ΡΠ°Π·Π±ΠΎΡΠΎΠΌ YAML-ΡΠ°ΠΉΠ»Π° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎΠ΅ Jinja-ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Ρ ΠΏΠΎΠ΄ΡΡΠ°Π½ΠΎΠ²ΠΊΠΎΠΉ YAML-ΠΊΠ»ΡΡΠ΅ΠΉ Π²Π΅ΡΡ Π½Π΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π°Π±ΡΠΎΠ»ΡΡΠ½ΠΎ Π³ΠΈΠ±ΠΊΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠ±ΠΎΡΠΊΠΈ. Π’Π°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π΄ΡΡΠ³ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈ ΡΠΈΡΡΠ΅ΠΌΡ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ Π³ΠΈΠ±ΠΊΠΎΡΡΡ ΠΈ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎΡΡΡ, Π΄Π°Π±Ρ Π»ΡΠ±ΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅, Π±Π΅Π· Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΡΡΠ½ΠΎΠ³ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΡ Π΅Π³ΠΎ Π² ΠΊΠΎΠ΄Π΅.
Jinja-ΡΠ°Π±Π»ΠΎΠ½Ρ, Π΄Π°ΠΆΠ΅ Π±Π΅Π· YAML, Ρ Π½Π°Ρ ΡΠ°ΠΊΠΆΠ΅ Π°ΠΊΡΠΈΠ²Π½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ Π² Linux-ΡΠ±ΠΎΡΠΊΠ΅ (ΡΠΌ. Π΄Π°Π»Π΅Π΅) Π΄Π»Ρ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΡΠΊΡΠΈΠΏΡΠΎΠ² Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ
ΠΡΠΎΠ±Π»Π΅ΠΌΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ ΠΏΠΎΠ΄ Linux, Π³ΠΎΡΠ°Π·Π΄ΠΎ ΡΠ΅ΡΡΠ΅Π·Π½Π΅ΠΉ, ΡΠ΅ΠΌ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΠΎΠ΄ Windows. Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ, Π½Π°ΡΡΠΎΡΡΠΈΠΉ ΡΡΠΏΠ΅Ρ ΠΈ ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΠΎΡΡΡ Windows ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Π΅ΡΡΡ Π² Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΠΈ ΠΎΠ³ΡΠΎΠΌΠ½ΡΠΌΠΈ ΠΈΠ½Π²Π΅ΡΡΠΈΡΠΈΡΠΌΠΈ Π² ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΠΎΡΡΡ ΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ΄ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠ΅ Π²Π΅ΡΡΠΈΠΈ.
ΠΠ΄Π΅ΡΡ ΡΠ΅ΡΡ ΠΈΠ΄ΡΡ ΠΈ ΠΎ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ²: Π²ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡ (API/ABI/β¦) Windows ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΡΡΡΡΡ Β«Ρ Π·Π°ΠΏΠ°ΡΠΎΠΌΒ», Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΠΏΠΎΠ»ΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π»Ρ ΡΠ΅Π³ΠΎ-ΡΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π²Π΅ΡΡΠΈΡΡ , Π½Π΅ Π»ΠΎΠΌΠ°Ρ API/ABI ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°Ρ ΠΎΠ±ΡΠ°ΡΠ½ΡΡ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΡ.
ΠΠΎ Π±ΠΎΠ»ΡΡΠΎΠΌΡ ΡΡΠ΅ΡΡ, ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΈΡΠ°ΡΡ, ΡΡΠΎ ΠΊΠ°ΠΆΠ΄Π°Ρ ΡΠ»Π΅Π΄ΡΡΡΠ°Ρ Π²Π΅ΡΡΠΈΡ Windows ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π² ΡΠ΅Π±Π΅, ΠΊΠ°ΠΊ ΠΌΠ°ΡΡΠ΅ΡΠΊΠ°, Π²ΡΠ΅ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠ΅, ΡΡΠΎ, ΠΏΠΎ ΡΡΡΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π»ΡΠ±ΡΠ΅ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Ρ ΠΎΡΡ Π΄Π΅ΡΡΡΠΊΠΈ Π»Π΅Ρ Π½Π°Π·Π°Π΄ ΠΏΠΎΠ΄ 32-Π±ΠΈΡΠ½ΡΡ Windows 95, ΠΏΠΎΠ΄ ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ 64-Π±ΠΈΡΠ½ΠΎΠΉ Windows 10.
Π Linux, ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΊ ΡΡΠ°ΡΡΡΡ, ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π΄ΡΡΠ³ΠΎΠΉ. API/ABI Π²ΡΠ΅Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, Π²ΠΊΠ»ΡΡΠ°Ρ ΡΠ°ΠΌΡΠ΅ ΠΊΠ»ΡΡΠ΅Π²ΡΠ΅, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Β«libcΒ», ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΌΠ΅Π½ΡΡΡΡΡ, ΠΏΡΠΈΠΌΠ΅ΡΠ½ΠΎ ΡΠ°Π· Π² Π΄Π²Π° Π³ΠΎΠ΄Π° ΠΏΡΠΈΠ²ΠΎΠ΄Ρ ΠΊ ΠΌΠ°ΠΆΠΎΡΠ½ΡΠΌ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌ ΠΈ Π½Π΅ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ ΠΏΡΠΈ ΠΏΠΎΠΏΡΡΠΊΠ΅ Π·Π°ΠΏΡΡΡΠΈΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠΎ ΡΡΠ°ΡΠΎΠΉ Π²Π΅ΡΡΠΈΠ΅ΠΉ. ΠΠ½ΠΎΠ³ΠΈΠΌ Ρ ΠΎΡΠΎΡΠΎ Π·Π½Π°ΠΊΠΎΠΌΡ ΠΎΡΠΈΠ±ΠΊΠΈ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠΈΠΏΠ°:
Error: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.28' not found
ΠΡΠ»ΠΈ ΡΡΠ°Π²Π½ΠΈΠ²Π°ΡΡ Windows-ΠΏΠΎΠ΄Ρ ΠΎΠ΄, ΠΊΠΎΠ³Π΄Π°, ΠΏΠΎ ΡΡΡΠΈ, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π΅ΡΠ΅Ρ Ρ ΡΠΎΠ±ΠΎΠΉ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, Π° ΡΠΈΡΡΠ΅ΠΌΠ° Π½Π΅ΡΠ΅Ρ Ρ ΡΠΎΠ±ΠΎΠΉ Π²ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΈ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² Π²ΡΠ΅Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ Π²Π΅ΡΡΠΈΠΉ, Ρ Linux-ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠΌ, Π³Π΄Π΅ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ Π²ΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±ΡΡΡ ΡΠ΅Π»ΠΎΡΡΠ½ΠΎ: ΡΠΎΠ»ΡΠΊΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ Π½Π°Π±ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π½ΡΠΆΠ½ΡΡ Π²Π΅ΡΡΠΈΠΉ β ΡΠΎ ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎ Π½Π΅Π»ΡΠ·Ρ Π²ΡΠ±ΡΠ°ΡΡ ΠΏΠΎΠ±Π΅Π΄ΠΈΡΠ΅Π»Ρ.
-
Linux-ΠΏΠΎΠ΄Ρ ΠΎΠ΄:
- ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°: ΠΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΌΠ° Π΄ΠΈΡΠΊΠ° ΠΏΠΎΠ΄ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠΈΠ·Π°ΡΠΈΡ ΠΎΠ±ΡΠ΅ΠΌΠ° ΠΏΠ°ΠΌΡΡΠΈ ΠΏΠΎΠ΄ Π·Π°Π³ΡΡΠΆΠ΅Π½Π½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ (Π²ΡΠ΅Π³Π΄Π° Π·Π°Π³ΡΡΠΆΠ΅Π½Π° ΠΎΠ΄Π½Π° Π²Π΅ΡΡΠΈΡ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ). ΠΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΠΏΠ΅ΡΠ΅ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ Linux-ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΈΠΈ, Π΄Π°ΠΆΠ΅ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ ΠΏΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΌΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΠΌΠΈ, ΡΠ΅Π»ΠΎΡΡΠ½ΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΠΌΠ΅ΠΉΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ, Π·Π°Π½ΠΈΠΌΠ°ΡΡ Π½Π° ΠΏΠΎΡΡΠ΄ΠΊΠΈ ΠΌΠ΅Π½ΡΡΠ΅ ΠΌΠ΅ΡΡΠ° ΠΈ Π΅Π΄ΡΡ ΠΌΠ΅Π½ΡΡΠ΅ ΠΏΠ°ΠΌΡΡΠΈ, ΡΠ΅ΠΌ Windows-ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΈΠΈ ΡΠΎ ΡΡ ΠΎΠΆΠΈΠΌ Π½Π°Π±ΠΎΡΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.
- ΠΠΈΠ½ΡΡΡ: ΠΡΠΆΠ½ΠΎ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎ ΠΏΠ΅ΡΠ΅ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄ Π½ΠΎΠ²ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ² (ΡΠ΄ΡΠ°, Π±Π°Π·ΠΎΠ²ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ Β«libcΒ»). ΠΡΠΈ ΡΡΠΎΠΌ ΡΠ΅ΡΠ°ΡΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Β«dependency hellΒ». ΠΠ»ΠΈ ΡΠ°ΡΠΈΡΡ Π²ΡΠ΅ Ρ ΡΠΎΠ±ΠΎΠΉ, Π½ΠΎ ΡΡΠΎ Π½Π΅ΠΏΡΠΎΡΡΠΎ (Π΄Π°Π»Π΅Π΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ, ΠΊΠ°ΠΊ ΡΡΠΎ ΠΏΡΠΈΠ½ΡΡΠΎ Π΄Π΅Π»Π°ΡΡ).
-
Windows-ΠΏΠΎΠ΄Ρ ΠΎΠ΄:
- ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π°: ΠΠ΄Π½Π°ΠΆΠ΄Ρ ΡΠΎΠ±ΡΠ°Π½Π½ΠΎΠ΅ ΠΈ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ, Π±ΡΠ΄Π΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π²ΡΠ΅Π³Π΄Π°.
- ΠΠΈΠ½ΡΡΡ: ΠΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΡΠ°ΡΠΈΡΡ ΠΊΡΡΡ Π²Π΅ΡΡΠΈΠΉ ΠΎΠ΄Π½ΠΈΡ ΠΈ ΡΠ΅Ρ ΠΆΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ, ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Β«DLL HellΒ». Π ΡΠΎΠΌΡ ΠΆΠ΅ ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ Π΄ΠΈΡΠΊΠ° ΠΈ ΠΏΠ°ΠΌΡΡΠΈ Π±ΡΠ΄Π΅Ρ Π±ΠΎΠ»ΡΡΠΎΠ΅.
Β«Dependency HellΒ» vs Β«DLL HellΒ» β ΡΡΠΎ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠ°Ρ Π΄ΠΈΠ»Π΅ΠΌΠΌΠ° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΈ Π²ΡΠΊΠ°ΡΠΊΠΈ, ΠΈ Π½Π°Π΄ΠΎ ΠΏΡΠΈΠ·Π½Π°ΡΡ, ΡΡΠΎ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π³ΠΎΠ΄Ρ Π² Π±ΠΎΠ»ΡΡΠ΅ΠΉ ΡΠ°ΡΡΠΈ ΠΏΡΠΎΠΌΡΡΠ»Π΅Π½Π½ΠΎΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, Π³Π΄Π΅ Π½Π΅ Π½Π°Π΄ΠΎ ΡΡΠΈΡΠ°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π±Π°ΠΉΡ ΠΏΠ°ΠΌΡΡΠΈ ΠΈ Ρ
ΡΠ°Π½ΠΈΠ»ΠΈΡΠ° (Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ Ρ.ΠΏ.), ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΡΠ°Π»Π° ΡΠ΅ΡΠ°ΡΡΡΡ Π² ΠΏΠΎΠ»ΡΠ·Ρ ΡΠΎΠΉ ΠΈΠ΄Π΅ΠΈ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΠ²Π΅ΡΠΆΠ΄Π°Π΅Ρ, ΡΡΠΎ Β«ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π½Π΅ΡΡΠΈ Π²ΡΠ΅ ΡΠ²ΠΎΠ΅ Ρ ΡΠΎΠ±ΠΎΠΉΒ», Π²Π½Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΈΡΡΠ΅ΠΌΡ. Π’Π°ΠΊΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ
ΠΎΠ΄Π° ΠΏΡΠΈΠ΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΡΡ ΠΈ Java-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠΎ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ JAR-/WAR-ΡΠ°ΠΉΠ»Π°ΠΌΠΈ, ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΠΈ (docker
, crio
, openvz
), Π΄Π°Π²ΡΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠ½ΠΎΠΉ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ΅, Π³Π΄Π΅, ΠΏΠΎ ΡΡΡΠΈ, Π΄Π°ΠΆΠ΅ Π΄Π»Ρ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΠΈ, ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌΠΎΠΉ ΠΌΠΈΠ½ΠΈ-ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ Π·Π° Π½Π΅Π΄Π΅Π»Ρ, Π² ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ΅ ΠΈΠ΄Π΅Ρ ΡΠ²ΠΎΡ Π²Π΅ΡΡΠΈΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΠ‘ ΠΈ Π²Π΅ΡΡ Π½ΡΠΆΠ½ΡΠΉ ΡΡΠ΅ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ.
Π Π΄Π°ΠΆΠ΅ Π² Π΄Π΅ΡΠΊΡΠΎΠΏΠ½ΡΡ
Linux-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡ
, Π΄Π°ΠΆΠ΅ Π² ΠΏΠΎΠΏΡΠ»ΡΡΠ½ΡΡ
Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π°Ρ
, Π³Π΄Π΅ ΡΡΡΡΡΠΈ ΠΌΠ΅ΠΉΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΠ΅Π»ΠΎΡΡΠ½ΡΡ ΡΠ±ΠΎΡΠΊΡ ΠΏΠΎΡΡΠΈ Π²ΡΠ΅Ρ
Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ
opensource-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΡΠΈΠΏΠ° AppImage
, Flatpack
ΠΈ Snap
, Π½Π΅ Π³ΠΎΠ²ΠΎΡΡ ΡΠΆΠ΅ ΠΎ Wine-bottles Π΄Π»Ρ Windows-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌΡΡ
ΠΏΠΎΠ΄ Linux.
Π’Π°ΠΊ ΡΡΠΎ Π΄Π»Ρ ΡΠ΅Π΄ΠΊΠΈΡ , Π²ΡΡΠΎΠΊΠΎΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈΡ -Π½Π°ΡΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠΌ, ΡΠ²Ρ, Β«Π½Π΅ Ρ ΠΊΠ΅ΠΌΒ» Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΡΠ°Π·Π΄Π΅Π»ΡΡΡ ΡΠ²ΠΎΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΌΠ°ΡΠΈΠ½Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΡΠ΅Π½ΠΈΡ ΠΈ ΡΠ°ΡΠΏΠΎΠ·Π½Π°Π²Π°Π½ΠΈΡ ΠΎΠ±ΡΠ°Π·ΠΎΠ², Π²ΠΏΠΎΠ»Π½Π΅ ΡΠ°Π·ΡΠΌΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Β«Π²ΡΠ΅ Ρ ΡΠΎΠ±ΠΎΠΉΒ», ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΊΠΎΠ³Π΄Π° ΡΡΠΎΠΈΡ Π·Π°Π΄Π°ΡΠ° Π²ΡΠΊΠ°ΡΡΠ²Π°ΡΡ ΠΈΡ Π½Π° ΡΠ΅Π»ΡΠΉ ΡΠΏΠ΅ΠΊΡΡ ΡΠ°ΡΡΠΎ ΠΎΡΠ΅Π½Ρ Π΄ΡΠ΅Π²Π½ΠΈΡ Β«ΡΠ΅ΡΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π»ΠΈΠ½ΡΠΊΡΠΎΠ²Β», Π² ΠΊΠΎΡΠΎΡΡΡ Π½Π΅Ρ ΠΈ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠΎΠ³ΠΎ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ.
Π‘Π°ΠΌΠΎΠ΅ Π³ΡΡΡΡΠ½ΠΎΠ΅ Π² ΡΠΎΠΌ, ΡΡΠΎ Π½Π° ΡΡΠΈΡ
ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
Π½Π΅Ρ ΠΈ ΡΠ΅Ρ
ΡΠ΅Ρ
Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ Β«ΠΏΠ°ΠΊΠ΅ΡΠ½ΠΎΠΉΒ» ΠΈΠ»ΠΈ Β«ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ½ΠΎΠΉΒ» Π΄ΠΎΡΡΠ°Π²ΠΊΠΈ β Π½ΠΈ docker/openvz,
Π½ΠΈ AppImage, Π½ΠΈ Snap, Π½ΠΈ Flatpack. ΠΠ΅Π΄Π°Π²Π½ΠΎ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ±ΡΡΠ²ΠΈΠ»ΠΈ, ΡΡΠΎ Π² ΡΠΊΠΎΡΠΎ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠ΅ΡΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°ΠΊΠΎΠ³ΠΎ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π° docker, Π½ΠΎ Π²Π΅Π΄Ρ Π΅ΡΠ΅ ΠΏΡΠΈΠ΄Π΅ΡΡΡ ΠΆΠ΄Π°ΡΡ Π»Π΅Ρ 10-15, ΠΏΠΎΠΊΠ° Π·Π°ΠΌΠ΅Π½ΡΡ ΡΡΠ°ΡΡΠ΅ ΡΠ°Π±ΠΎΡΠΈΠ΅ ΠΌΠ΅ΡΡΠ° Ρ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΌΠΈ Π²Π΅ΡΡΠΈΡΠΌΠΈ ΡΠ΅ΡΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ
ΡΠΈΡΡΠ΅ΠΌ ΠΈ ΠΎΠ½ Π±ΡΠ΄Π΅Ρ Π½Π° Π²ΡΠ΅Ρ
ΡΠ°Π±ΠΎΡΠΈΡ
ΠΌΠ΅ΡΡΠ°Ρ
. ΠΠΏΡΠΎΡΠ΅ΠΌ, docker
Π½Π΅ ΠΏΠ°Π½Π°ΡΠ΅Ρ, ΠΊΠΎΠ³Π΄Π°, Π½Π°ΠΎΠ±ΠΎΡΠΎΡ, ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π°ΠΊΡΠΈΠ²Π½ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ Ρ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΠ‘: ΡΠΈΡΠ°ΡΡ-Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ, ΠΏΠ΅ΡΠ΅Ρ
Π²Π°ΡΡΠ²Π°ΡΡ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠΊΡΠ°Π½ΠΎΠΌ ΠΈ ΠΏΡΠΈΠ½ΡΠ΅ΡΠΎΠΌ ΠΈ Ρ.Π΄.
Π ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, Π½Π°Π΄ΠΎ ΠΏΡΠΈΠ·Π½Π°ΡΡ, ΡΡΠΎ Π½ΠΈΡΠ΅Π³ΠΎ Π³ΠΎΡΠΎΠ²ΠΎΠ³ΠΎ Π½Π΅Ρ ΠΈ ΠΏΡΠΈΠ΄Π΅ΡΡΡ Π΄Π΅Π»Π°ΡΡ ΡΡΠΎ-ΡΠΎ ΡΠ²ΠΎΠ΅.
Π‘ΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ, Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² ΡΠ΅ΡΠ΅Π½ΠΈΠΉ ΠΏΠΎΠ΄ ΡΠ΅ΡΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π²Π΅ΡΡΠΈΠΈ ΡΠ°ΠΊ ΠΈ Π΄Π΅Π»Π°ΡΡ, ΠΌΠ°ΡΠΊΠΈΡΡΡ ΠΏΡΠΈΡΠ°ΡΠΊΠΈΠ²Π°Π½ΠΈΠ΅ Β«ΡΠ²ΠΎΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΡΒ» ΠΏΠΎΠ΄ ΠΎΠ±ΡΡΠ½ΡΠ΅ RPM-ΠΏΠ°ΠΊΠ΅ΡΡ, ΠΏΡΠΈΡΠ΅ΠΌ ΠΏΡΠΈΠ½Π΅ΡΠ΅Π½Π½ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΄Π°ΠΆΠ΅ Β«ΡΠ°Π·ΡΡΡΠ°ΡΡΒ» ΡΠ΅Π»Π΅Π²ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ.
ΠΠΎ ΠΎΠ±ΡΡΠ½ΠΎ, Π²ΡΡΡΠ΅ΡΠ°ΡΡΡΡ Π»ΠΈΠ½ΡΠΊΡΡ c RPM- ΠΈ DEB-ΠΏΠ°ΠΊΠ΅ΡΠ°ΠΌΠΈ ΠΈ Π½Π°Π΄ΠΎ Π±ΡΠ»ΠΎ ΠΏΡΠΎΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ, ΡΡΠΎΠ±Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
- ΡΡΠ°Π²ΠΈΠ»ΠΎΡΡ ΠΏΡΠΎΡΡΡΠΌ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ, Π±Π΅Π· Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΈΠ½ΡΠ΅ΡΠ½Π΅ΡΡ;
- Π·Π°ΠΏΡΡΠΊΠ°Π»ΠΎΡΡ ΠΈ Π½Π°ΡΡΡΠ°ΠΈΠ²Π°Π»ΠΎ Π²ΡΠ΅ ΡΡΠΎ Π½ΡΠΆΠ½ΠΎ ΡΠ°ΠΌΠΎ;
- ΡΠ°Π±ΠΎΡΠ°Π»ΠΎ ΠΏΠΎΠ΄ Π²ΡΠ΅ ΡΠ΅ΡΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π»ΠΈΠ½ΡΠΊΡΡ.
ΠΠ° Π²ΡΡ ΠΎΠ΄Π΅ Ρ Π½Π°Ρ Π±ΡΠ΄Π΅Ρ ΠΊΠ°ΡΠ°Π»ΠΎΠ³-Β«ΡΠ΅ΡΡΠ°ΡΠΈΡΠΌΒ» β ΡΡΠΎ-ΡΠΎ Π²ΡΠΎΠ΄Π΅ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°, Π½ΠΎ Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΡ Π²ΡΡ ΠΎΠ΄Π° Π·Π° Π΅Π³ΠΎ ΠΏΡΠ΅Π΄Π΅Π»Ρ: Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²ΡΠ·Π²Π°ΡΡ ΡΡΠΈΠ»ΠΈΡΡ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠ°ΠΉΠ»Π°ΠΌΠΈ ΠΈ ΠΎΠ±ΠΎΡΡΠ΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. Π Β«ΡΠ΅ΡΡΠ°ΡΠΈΡΠΌΠΎΠΌΒ» ΠΎΠ½ Ρ Π½Π°Ρ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ, ΠΈΠ±ΠΎ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠ΅ Π΅Π³ΠΎ Π½Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ β Β«Π·Π΅ΠΌΠ½ΠΎΠ²ΠΎΠ΄Π½ΡΠ΅Β», ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΈΠ»ΠΈ ΠΏΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠ°Ρ Python-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
ΠΠ»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ, ΠΊΠ°ΠΊΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΏΠΎΡΡΠ΅Π±ΡΡΡΡΡ Π²Π°ΡΠ΅ΠΌΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΠ°Π·ΡΠΌΠ½ΠΎ Π²Π·ΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½Π½ΠΎΠ³ΠΎ Linux-Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π° Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΠΏΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Β«Π²ΡΡΠ°Π²Π½ΡΡΡΒ» ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΡΠ±ΠΎΡΠΊΠΈ, ΡΠΊΠ°Π·ΡΠ²Π°Ρ ΡΡΠ΅Π±ΡΠ΅ΠΌΡΠ΅ ΠΏΠ°ΠΊΠ΅ΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΡΠΈΠΌ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²ΠΎΠΌ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ ΠΌΠ΅ΠΉΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΎΠ² ΡΡΠΎΠ³ΠΎ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π° Π΄Π»Ρ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ.
ΠΠ°ΠΊ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ, ΠΌΡ Π²ΡΠ±ΡΠ°Π»ΠΈ RPM-Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Ρ ΡΠ΅ΡΠΈΠΈ Fedora Core, Π½ΠΎ ΡΠ΅Ρ
Π½ΠΈΡΠ΅ΡΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ Π±Π°Π·ΠΎΠ²ΡΠΉ [Π»ΡΠ±ΠΎΠΉ RPM-based Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²](http://ru.wikipedia.org/wiki/Π‘ΠΏΠΈΡΠΎΠΊ_Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²ΠΎΠ²_Linux#ΠΡΠ½ΠΎΠ²Π°Π½Π½ΡΠ΅_Π½Π°_RPM β ΡΠΏΠΈΡΠΎΠΊ RPM-Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²ΠΎΠ²), Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π΅ΡΡΡ ΡΡΠΈΠ»ΠΈΡΠ° dnf repoquerΡ
, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ°Ρ Π²ΡΡΠΈΡΠ»ΡΡΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ².
ΠΡΠ° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° ΡΠ²ΡΠ·Π°Π½Π° Ρ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠΉ Π³ΠΈΠ±ΠΊΠΎΡΡΡΡ ΡΠΎΡΠΌΠ°ΡΠΎΠ² ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΠΎΠ΄ Linux.
ΠΡΠ»ΠΈ Β«Portable_ExecutableΒ» β ΡΠΎΡΠΌΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΠΎΠ΄ Windows Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»ΡΠ½ΡΠΉ (Π»ΡΠ±Π°Ρ Π²Π΅ΡΡΠΈΡ Windows ΠΏΠΎΠΉΠΌΠ΅Ρ ΠΈ ΡΠΌΠΎΠΆΠ΅Ρ ΠΈΡΠΏΠΎΠ»Π½ΠΈΡΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ windows-bin-ΡΠ°ΠΉΠ», ΠΈ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΡΠΆΠ΅ ΠΎΠ±ΡΡΠΆΠ΄Π°Π»ΠΈ Π²ΡΡΠ΅, Π²ΡΠ΅ ΡΠΊΠΎΡΠ΅Π΅ Π²ΡΠ΅Π³ΠΎ Π±ΡΠ΄Π΅Ρ Ρ
ΠΎΡΠΎΡΠΎ),
ΡΠΎ ELF β ΡΠΎΡΠΌΠ°Ρ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° ΠΏΠΎΠ΄ Linux Π±ΠΎΠ»Π΅Π΅ Ρ
ΠΈΡΡΡΠΉ, ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠΉ ΠΆΠ΅ΡΡΠΊΡΡ ΡΡΡΠ»ΠΊΡ Π½Π° Β«ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ-Π·Π°Π³ΡΡΠ·ΡΠΈΠΊΒ», ΠΊΠ°ΠΊ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΡΡΠΎ-ΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΎΠ΅ Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π° ΡΠΈΠΏΠ°
/lib64/ld-linux-x86-64.so.2
. Π’ΠΎΠ³Π΄Π°, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, Π΅ΡΠ»ΠΈ ΠΌΡ Ρ
ΠΎΡΠΈΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π½Π΅ΡΡΠΎ Π·Π°ΠΌΠΊΠ½ΡΡΠΎΠ΅ ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡΠ΅Π΅ Π² ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅, Π½Π°Π΄ΠΎ:
- Π²Π·ΡΡΡ ΠΈΠ· ΡΠ±ΠΎΡΠΎΡΠ½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ β ΡΡΠΎ Π±ΡΠ΄Π΅Ρ Π½Π°Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ, Π½Π°Π·ΠΎΠ²Π΅ΠΌ Π΅Π³ΠΎ
ld.so
; - Π²Π·ΡΡΡ Π²ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ-Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ;
- Π·Π°ΠΏΠ°ΡΡΠΈΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΡΡΠΈΠ»ΠΈΡΡ
patchelf
, Π²ΡΠ΅ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ ΡΠ°ΠΉΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Π±Π΅ΡΠ΅ΠΌ Ρ ΡΠΎΠ±ΠΎΠΉ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ Π±ΡΠ»ΠΈ Π·Π°Π²ΡΠ·Π°Π½Ρ Π½Π° Π½Π°Ρ Β«ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΒ»; - Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° Π½Π°ΡΠ΅Π³ΠΎ Π·Π°ΠΏΠ°ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ bin-ΡΠ°ΠΉΠ»Π° ΠΈΠ·Π½ΡΡΡΠΈ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Π½ΡΠΆΠ½ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π΅Π³ΠΎ, Π·Π°ΠΏΡΡΠΊΠ°Ρ Π½Π°Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Ρ Π΅ΠΌΡ Π·Π°ΠΏΠ°ΡΡΠ΅Π½Π½ΡΠΉ exe-ΡΠ°ΠΉΠ» Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°.
#!/bin/bash
x="$(readlink -f "$0")"
b="python3.8"
d="$(dirname "$x")/.."
ldso="$d/pbin/ld.so"
realexe="$d/pbin/$b"
ulimit -S -c unlimited
export GI_TYPELIB_PATH="$d/lib64/girepository-1.0"
export GDK_PIXBUF_MODULE_FILE="$d/lib64/gdk-pixbuf-2.0/2.10.0/loaders.cache"
export GDK_PIXBUF_MODULEDIR="$d/lib64/gdk-pixbuf-2.0/2.10.0/loaders"
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:$d/lib64"
LANG=C LC_ALL=C PYTHONPATH="$d/local/lib/python3.8/site-packages:$d/local/lib64/python3.8/site-packages:$PYTHONPATH" exec -a "$0" "$ldso" "$realexe" -s "$@"
ΠΠ΄Π½Π°ΠΊΠΎ, Π΅ΡΠ»ΠΈ ΠΈΠ΄Π΅Ρ Π²ΡΠ·ΠΎΠ² ΡΡΠΈΠ»ΠΈΡΡ ΠΈΠ·Π½ΡΡΡΠΈ Π΄ΡΡΠ³ΠΎΠΉ Π±ΠΈΠ½Π°ΡΠ½ΠΎΠΉ ΡΡΠΈΠ»ΠΈΡΡ, ΡΠΎ ΠΏΠ°ΡΡ Π½Π΅ Π½ΡΠΆΠ΅Π½, ΠΈ Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡΡ ΠΏΡΠΎΡΡΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ.
ΠΠ°ΠΊΠΈΠ΅ ΡΡΠΈΠ»ΠΈΡΡ ΠΎΡΠΎΠ±ΡΠ°ΡΡ ΠΈΠ· ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΠΊΠ°ΠΊΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ Π·Π°ΠΏΠ°ΡΡΠΈΡΡ (ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΠΌΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡΠΌΠΈ), Π° ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡΠΎΡΡΠΎ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠ΅ΠΊΡΠΈΠ΅ΠΉ ΡΠ°ΠΉΠ»Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΉ:
bin_regexps:
need_patch:
- /usr/bin/python3.\d
- /usr/bin/bash
- /usr/bin/pdftoppm
- /usr/lib/cups/filter/imagetopdf
- /usr/lib/cups/filter/imagetoraster
- /usr/lib/cups/filter/pdftopdf
- /usr/bin/gs
- /usr/bin/tesseract
- .*screenmark
- .*dmextract-printer
- .*dmextract-screen
- .*smoketest
just_copy:
- /usr/bin/gs
- /usr/local/bin/dmprinter #need rewrite
ΠΠ° Π²ΡΡ ΠΎΠ΄Π΅ ΠΌΡ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Β«ΠΊΠ°ΡΠ°Π»ΠΎΠ³-ΡΠ΅ΡΡΠ°ΡΠΈΡΠΌΒ» ΡΠΎ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌΠΈ ΠΏΠ°ΠΏΠΊΠ°ΠΌΠΈ:
lib64
β Π‘ΡΠ΄Π° ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ Π²ΡΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Π²ΡΡΠΈΡΠ»ΠΈΠ»ΠΈ ΠΏΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌ;pbin
β Π‘ΡΠ΄Π° ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ Π²ΡΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠ΅ ΡΠ°ΠΉΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΡ Π½Π°ΡΠ»ΠΈ Π² ΠΏΠ°ΠΊΠ΅ΡΠ°Ρ ; ΠΎΠ½ΠΈ ΠΏΠΎΠΏΠ°Π»ΠΈ ΠΏΠΎΠ΄ ΠΎΡΠ±ΠΎΡ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ Β«need_patchΒ», ΠΌΡ ΠΈΡ Π·Π°ΠΏΠ°ΡΡΠΈΠ»ΠΈ ΠΏΠΎΠ΄ Π½Π°Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡ-Π·Π°Π³ΡΡΠ·ΡΠΈΠΊ;bin
βusr/bin
β Π£ΡΠΈΠ»ΠΈΡΡ, ΠΏΠΎΠΏΠ°Π²ΡΠΈΠ΅ ΠΏΠΎΠ΄ Β«just_copyΒ», ΠΏΡΠΎΡΡΠΎ ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅;ebin
β Π‘ΠΊΡΠΈΠΏΡΡ Π²ΡΠ·ΠΎΠ²Π° Π½Π°ΡΠΈΡ ΡΡΠΈΠ»ΠΈΡ ΠΈΠ· ΡΠΈΡΡΠ΅ΠΌΡ-Π½ΠΎΡΠΈΡΠ΅Π»Ρ.
ΠΠΎΠ³ΡΡ Π±ΡΡΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ, ΡΠ°ΠΉΠ»Ρ Π΄Π°Π½Π½ΡΡ , ΡΠ΅ΡΡΠΎΠ², ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ. Π’Π΅Ρ Π½ΠΈΡΠ΅ΡΠΊΠΈ, ΡΠ°Π±Π»ΠΎΠ½ Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΡΠ΅ΡΡΠ°ΡΠΈΡΠΌΠ° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅, ΡΠΊΠ°Π·ΡΠ²Π°ΡΡΠ΅ΠΌ Π½Π° ΠΊΠ°ΡΠ°Π»ΠΎΠ³ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ²:
templates_dirs:
- linux-deploy-template
ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ°ΠΉΠ» Π² ΡΡΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅, Π΅ΡΠ»ΠΈ ΠΎΠ½ ΡΠ΅ΠΊΡΡΠΎΠ²ΡΠΉ, ΡΡΠΈΡΠ°Π΅ΡΡΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠΌ ΠΈ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ
Jinja-ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ², Π²ΠΊΠ»ΡΡΠ°Ρ ΡΠ°ΠΌΠΎ ΠΈΠΌΡ, ΡΠ°ΠΊ ΡΡΠΎ
ΡΠ°ΠΉΠ» Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ python{{ python_version_1 }}.{{ python_version_2 }}
ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅ΡΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² python3.10
.
Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π²Π½ΡΡΡΠΈ ΡΠΊΡΠΈΠΏΡΠΎΠ² Π·Π°ΠΏΡΡΠΊΠ°, Π»Π΅ΠΆΠ°ΡΠΈΡ Π² Β«ebinΒ», ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ°ΠΊΠΈΠ΅ Π±Π»ΠΎΠΊΠΈ:
{% if release %}
b="screenmark"
{% else %}
b="python{{ python_version_1 }}.{{ python_version_2 }}"
{% endif %}
β¦
{% if release %}
LANG=C LC_ALL=C PYTHONPATH="$d/local/lib/python{{ python_version_1 }}.{{ python_version_2 }}/site-packages:$d/local/lib64/python{{ python_version_1 }}.{{ python_version_2 }}/site-packages:$PYTHONPATH" exec -a "$0" "$ldso" "$realexe" "$@"
{% else %}
LANG=C LC_ALL=C PYTHONPATH="$d/local/lib/python{{ python_version_1 }}.{{ python_version_2 }}/site-packages:$d/local/lib64/python{{ python_version_1 }}.{{ python_version_2 }}/site-packages:$PYTHONPATH" exec -a "$0" "$ldso" "$realexe" -m screenmark "$@"
{% endif %}
Π’.Π΅. Π² ΡΠ»ΡΡΠ°Π΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π½ΠΎΠΉ ΠΎΠΏΡΠΈΠΈ Β«releaseΒ» β Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ», Π° Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ (ΡΠ΅ΠΆΠΈΠΌ Β«ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΠΈ ΡΡΡΠΎΠ³ΠΎ ΠΏΠΈΡΠΎΠ½Π°Β») β Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΉ Python-ΠΌΠΎΠ΄ΡΠ»Ρ.
Π§ΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ Π±ΠΈΠ½Π°ΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΠΎΠ½ΠΈ ΠΊΠΎΠΏΠΈΡΡΡΡΡΡ Π±Π΅Π· ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ.
Terrarium Adapter: ΠΠ°ΠΏΡΡΠΊ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΈΠ· ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ
ΠΡΠ½ΠΎΠ²ΠΎΠΉ ΠΏΠ»ΡΡ Π½Π°ΡΠ΅Π³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ ΠΆΠ΅ΡΡΠΊΠΎΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠΈΠ·Π°ΡΠΈΠ΅ΠΉ (docker/flatpack ΠΈ Ρ.ΠΏ.) β Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π½Π°ΠΏΡΡΠΌΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ ΡΠ°ΠΉΠ»Ρ/ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ Π²ΡΠ·ΡΠ²Π°ΡΡ Π΅Π΅ ΡΡΠΈΠ»ΠΈΡΡ, ΠΎΡΡΡΡΡΡΠ²ΡΡΡΠΈΠ΅ Π² Π½Π°ΡΠ΅ΠΌ Β«ΡΠ΅ΡΡΠ°ΡΠΈΡΠΌΠ΅Β».
ΠΠ΄Π½Π°ΠΊΠΎ, ΡΡΠΎ Π±ΡΠ»ΠΎ Π½Π΅ΠΏΡΠΎΡΡΠΎ ΡΠ΄Π΅Π»Π°ΡΡ. ΠΠ΅Π΄Ρ ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π½Π°Ρ ΠΎΠ΄ΠΈΠΌΡΡ Π²Π½ΡΡΡΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°, Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ Β«ΡΠ΅ΡΡΠ°ΡΠΈΡΠΌΠ°Β», Π·Π°ΠΏΡΡΡΠΈΡΡ Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ, Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΠΌΠΈ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ, Π½Π΅ΠΏΡΠΎΡΡΠΎ. ΠΠ° ΠΈ Π²ΠΎΠΎΠ±ΡΠ΅, Π½Π°Π΄ΠΎ ΡΠ½Π°ΡΠ°Π»Π° ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ: Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π»ΠΈ Π½Π°ΠΌ Β«Π²Π½Π΅ΡΠ½ΡΡΒ» ΡΡΠΈΠ»ΠΈΡΡ, ΠΈΠ»ΠΈ Β«Π²Π½ΡΡΡΠ΅Π½Π½ΡΡΒ».
ΠΡΠΈΡΠ΅ΠΌ ΡΠΊΠ°Π·Π°ΡΡ ΠΌΡ ΡΡΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ: Π·Π°ΠΏΡΡΠΊ ΡΡΠΈΠ»ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡΡ Π³Π΄Π΅-ΡΠΎ Π² Π³Π»ΡΠ±ΠΈΠ½Π°Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π½Π°ΠΌΠΈ Python-ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΡΠΎΡΠΊΠ°ΡΡ ΠΈ ΠΏΠ°ΡΡΠΈΡΡ ΠΊΠΎΡΠΎΡΡΠ΅, Π½Π°ΠΌ Π½Π΅ Ρ Π²Π°ΡΠΈΡ Π½ΠΈΠΊΠ°ΠΊΠΈΡ ΡΠΈΠ».
ΠΠ»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π΅ΡΡΡ Python-ΠΏΠ°ΠΊΠ΅Ρ terrarium_adapter β ΠΏΠ°ΠΊΠ΅Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π²Π½Π΅ΡΠ½ΠΈΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΠΈ ΠΎΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ Linux-ΡΠ΅ΡΡΠ°ΡΠΈΡΠΌΠ°.
ΠΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠΈΡΡ Π΅Π³ΠΎ Π²Π½ΡΡΡΠΈ Π½Π°ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° pythonβ¦
import terrarium_adapter
β¦ ΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ monkey-ΠΏΠ°ΡΡΠΈΠ½Π³Π° Π²ΡΠ΅ Π²ΡΠ·ΠΎΠ²Ρ Π²Π½Π΅ΡΠ½ΠΈΡ ΡΡΠΈΠ»ΠΈΡ ΡΠ΅ΡΠ΅Π· ΠΌΠΎΠ΄ΡΠ»Ρ Β«subprocessΒ» Π±ΡΠ΄ΡΡ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡΡ Ρ ΠΈΡΡΡΠΉ Π°Π½Π°Π»ΠΈΠ·, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ:
- Π² ΡΠ»ΡΡΠ°Π΅ Π½Π°Π»ΠΈΡΠΈΡ Ρ Π² Π½Π°ΡΠ΅ΠΌ ΡΠ΅ΡΡΠ°ΡΠΈΡΠΌΠ΅ ΡΡΠΈΠ»ΠΈΡ Ρ ΡΠ°ΠΊΠΈΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΡ ;
- Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Ρ ΠΈΡΡΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ Π²Π½Π΅ΡΠ½ΠΈΠ΅ ΡΡΠΈΠ»ΠΈΡΡ ΠΈΠ· ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ.
ΠΠΎΠΎΠ±ΡΠ΅, ΡΡΠΎ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΡΠΉ ΠΏΡΡΡ, Ρ.Π΅. ΠΌΡ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΏΡΡΡ Β«ΡΡΠΏΠ΅ΡΠ°ΠΏΠΏΠ°Β», ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π΅Π΄ΠΈΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π³Π΅Π½Π΅ΡΠΈΡΡΡ ΠΊΠ»ΠΈΠ΅Π½Ρ-ΡΠ΅ΡΠ²Π΅Ρ- ΠΈ Ρ.ΠΏ. β ΡΡΠΎ ΠΏΡΡΡ ΠΊ Π³Π»ΡΡ ΠΎΠΌΡ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΡ (Π³Π΄Π΅ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΡΡΡΠΎ Π²Π½ΠΎΡΠΈΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, Π»ΠΈΠ±ΠΎ Π½Π΅ ΡΠ»ΠΎΠΌΠ°Π² Π²ΡΠ΅, Π»ΠΈΠ±ΠΎ Π±Π΅Π· ΡΠ²Π΅ΡΡ Π΄ΠΎΠ»Π³ΠΈΡ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΉ Π²ΡΠ΅Π³ΠΎ), Ρ.Π΅. Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΡ ΠΈΠΌΠ΅ΡΡ ΡΠ°Π·Π½ΡΠ΅ ΠΆΠΈΠ·Π½Π΅Π½Π½ΡΠ΅ ΡΠΈΠΊΠ»Ρ (ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ, ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΠΈ) β ΡΠΎ Π»ΡΡΡΠ΅ ΡΡΠ°Π·Ρ ΠΈΡ ΡΠ°Π·Π΄Π΅Π»ΡΡΡ Π½Π° ΡΠ°Π·Π½ΡΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΡ, ΠΈΠ±ΠΎ Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° ΠΎΠ±ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ²-ΠΈΡΡ ΠΎΠ΄Π½ΠΈΠΊΠΎΠ² ΡΡΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΊΡΡΠ° ΡΠ΄ΠΎΠ±Π½ΠΎΠΉ Π³ΠΈΠ±ΠΊΠΎΡΡΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΈ ΡΡΠΎ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ, ΠΈ ΠΏΠ΅ΡΠ΅ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ.
ΠΠ΅ Π³ΠΎΠ²ΠΎΡΡ ΡΠΆ ΠΎ Π΄ΠΈΡΠ°ΠΉΡΠ΅ΠΉ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠΈ Β«Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ ΠΊΠΎΡΠ²Π΅Π½Π½ΠΎΡΡΠΈΒ», ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ΄Π΅Π»Π°Π΅Ρ ΠΈ ΡΠ°ΠΊ Π½Π΅ΠΏΡΠΎΡΡΠΎΠΉ ΡΠΏΠ΅ΠΊ-ΡΠ°ΠΉΠ» Π²ΠΎΠ²ΡΠ΅ Π½Π΅Π²ΠΌΠ΅Π½ΡΠ΅ΠΌΠΎ ΡΠ»ΠΎΠΆΠ½ΡΠΌ.
ΠΠΎ ΠΏΠΎΠΊΠ° ΠΎΡΡΠ°Π²Π»Π΅Π½Π° Π½Π΅ΠΊΠ°Ρ (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½Π°Ρ) Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ³Π΅Π½Π΅ΡΠΈΡΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠ΅Π³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π° ΡΠ΄Π΅Π»Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ°Π²ΡΡ ΠΏΠΎΡΡΠΈ ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ Π² ΠΎΠ΄Π½Ρ ΠΏΠ°ΠΏΠΊΡ β ΠΎΡΠ»ΠΈΡΠ°ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΈΠΌ β ΡΠ°ΠΉΠ»ΠΎΠΌ Β«isodistr.txtΒ» (Π³Π΄Π΅ ΠΏΡΠΎΠΏΠΈΡΠ°Π½ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ°), ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠΎΠΎΠ±ΡΠΈΡΡ Β«Π² ΠΊΠ°ΠΊΠΎΠΉ ΡΠΎΠ»ΠΈ ΡΡΠ°ΡΡΠ²ΡΠ΅Ρ ΡΡΠΎΡ ΠΏΠ°ΠΊΠ΅ΡΒ».
Π’.Π΅. Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΠ°ΠΊΠ΅Ρ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π² ΡΠ΅Π±Ρ Π²ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΠΈ Π΄Π»Ρ ΡΡΠ»ΠΎΠ²Π½ΠΎ Π½Π΅ΠΊΠΎΠΉ Π±Π°Π·Ρ Ρ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°ΠΌΠΈ ΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌΠΈ. ΠΡΠ΅ ΡΡΠ°Π·Ρ. Π Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΡΠ°Π·Π½ΡΡ ΡΠ΅ΠΆΠΈΠΌΠ°Ρ β Π²ΡΠ΅ ΡΠ΅ΡΠ²ΠΈΡΡ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ Π½ΠΎΠ΄Π΅, ΡΠ°ΡΡΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² (ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΠΊΡΠΈ), (ΡΠΎΠ»ΡΠΊΠΎ Π±Π°Π·Π°) ΠΈ Ρ.ΠΏ.
ΠΠ΄ΠΈΠ½ ΠΈΠ· Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² β ΡΡΠ°Π²ΠΈΡΡ ΡΡΠΎΡ ΠΏΠ°ΠΊΠ΅Ρ Π²Π΅Π·Π΄Π΅, Π½Π° Π²ΡΠ΅ Π½ΠΎΠ΄Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΡΡ Π² ΠΊΠ°ΠΊΠΎΠΉ ΡΠΎΠ»ΠΈ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ (Ρ
ΠΎΡΡ Π² /etc/xxx/config.yml
, Ρ
ΠΎΡΡ Π² /etc/xxx/config.yml
ΠΊΠ»Π°ΡΡΡ, Ρ
ΠΎΡΡ ΠΊΡΠ΄Π°).
ΠΡΠ΅ ΡΡΠΎ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°ΡΡ Ρ
ΠΎΡΡ AnsiblΠΎΠΌ-SoltStackΠΎΠΌ-Puppetβ, Π΄Π° Ρ
ΠΎΡΡ rsync c ssh, ΠΈΠ»ΠΈ ΡΡΠΏΡΠΌΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠΌΠΈ Π΄Π»Ρ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
ΠΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΠ΅ΠΌ-ΡΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ, ΡΡΠΎ
- ΠΊΠΎΠ³Π΄Π° ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠ΅ ΡΡΠ°Π·Ρ Π΄Π΅Π»Π°Π΅ΠΌ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΠ°ΠΊΠ΅ΡΠΎΠ², ΠΎΡΠ»ΠΈΡΠ°ΡΡΠΈΡ ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ ΠΈ ΡΠ°ΠΉΠ»ΠΎΠΌ Β«isodistr.txtΒ» (Π²Π΅ΡΡΠΈΠΈ, ΡΠ°ΠΉΠΌΡΡΠ°ΠΌΠΏΡ βΒ Π²ΡΠ΅ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠ΅)
- ΡΡΠΈ ΠΏΠ°ΠΊΠ΅ΡΡ ΡΡΠ°Π²ΡΡΡΡ Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΠ²ΡΡΡΠΈΠ΅ Π½ΠΎΠ΄Ρ (Ρ ΠΎΡΡ ΠΈΠ· ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ΅ΠΏΠ°, Ρ ΠΎΡΡ ΠΊΠ°ΠΊ-ΡΠΎ ΡΠ΅Π»Π΅ΠΊΡΠΈΡΡΡΡΡ Π²ΠΈΠ»Π΄ΠΊΠ°ΡΠ΄Π°ΠΌΠΈ)
ssh proxy.site.gov apt-get install -y "product-proxy*.deb"
ssh frontend.site.gov apt-get install -y "product-frontend*.deb"
ssh db.site.gov apt-get install -y "product-database*.deb"
Π’ΠΎΠ³Π΄Π° Π½Π°ΡΡΡΠΎΠ΅ΡΠ½ΡΠΌ ΡΠΊΡΠΈΠΏΡΠ°ΠΌ ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΈΠΈ-Π·Π°ΠΏΡΡΠΊΠ° Π½Π°Π΄ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ Π½Π° Π²ΡΠ΅Π³Π΄Π° ΠΈΠΌΠ΅ΡΡΠΈΠΉΡΡ isodistr.txt
, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ½ΡΡΡ, Π² ΠΊΠ°ΠΊΠΎΠΉ ΡΠΎΠ»ΠΈ Π²Π΅ΡΡ ΡΡΠΎΡ ΡΠΎΡΡ ΡΠΆΠ΅ ΠΎΠΊΠ°Π·Π°Π»ΡΡ Π½Π° ΡΡΠΎΠΉ Π½ΠΎΠ΄Π΅.
Π’Π°ΠΊΠ°Ρ ΡΡΡΠΊΠ° ΡΠ΅ΠΉΡΠ°Ρ Π΄Π΅Π»Π°Π΅ΡΡΡ Β«ΡΠ°ΠΌΡΠΌΠΈ Π»Π΅Π³ΠΊΠΈΠΌΠΈ ΠΊΠ°ΡΠ°Π½ΠΈΡΠΌΠΈ β Π΅ΡΠ»ΠΈ Π·Π°ΠΌΠ΅Π½ΠΈΡΡ ΡΡΡΠΎΠΊΠΎΠ²ΡΠΉ label Π² ΡΠΏΠ΅ΠΊΠ΅ Π½Π° ΡΠΏΠΈΡΠΎΠΊ ΡΠΈΠΏΠ°:
label:
- dmic
- dmic-balancer
- dmic-proxy
- dmic-storage