Oleksandr
мьі внедряли ЕРП на крупном промьішленном предприятии
Oleksandr
в 1000 рабочих мест
Aleksey
и что они год стояли ?
Oleksandr
бгг, в параллели
Oleksandr
фриз - ето кодфриз и только фикс ошибок
Aleksey
а тоесть фриз это не фриз а что то другое
Aleksey
ага
Oleksandr
никаких нових фич
Oleksandr
мьі физически не осязали сразу везде изменения - пришлось лупить етапами
Aleksey
я по наивности подумал что фриз это как в японских фильмах stop time
Oleksandr
найн. руки отрьівайтен сразу
Oleksandr
я почему про сферу спросил
Oleksandr
неужели в телекоме дали добро на кликхаус вместо оракла?
Aleksey
не вместо. вместе
Aleksey
но да я знаю оператора у которого кх.
Oleksandr
или вейперьі проникли на места CIO или кто-то психует сильно
Aleksey
не под биллинг конечно
Oleksandr
ну вот
Vladimir
А что? Кто-то запрещал?
У всяких телекомов часто подход, что если оно шевелится, то оно недостаточно стабильно.
yuyu
В смысле что если еле ворочается, то быстро не упадёт? :-)
Sergei
В смысле что если еле ворочается, то быстро не упадёт? :-)
в смысле если в репозиторий есть относительно свежие коммиты - значит разработка еще идет и релиз не наступил
Aleksey
пока комиты не кончатся это всё mvp
Anonymous
Почему накатывание виртуаленва из postinstallа RPM может фэйлиться? Никак не могу отдебажить. Получаю не нулевой код возврата =(
Dzmitry
может чего из bash пользуешь специфичного а там sh? оно и падает, смотреть что конкретнее фейлит нужно, так же согит учесть что там может не быть кучи из твоего окружения, либо измененные
Anonymous
%post #!/bin/bash -xe echo "start postinstall" # Clean old env dir #echo "CLEAN OLD ENV" #rm -rf %{ENV_DIR} ID=`id` echo "CREATE NEW ENV under ($ID)" python3 -m virtualenv %{ENV_DIR} -p python3 if test $? then echo "Env creation failed" else echo "Env creation is ok" fi Так выглядит кусок кода с начала, а вот такой результат при установке [root@localhost alp]# rpm -iU /tmp/visyond-1.6.39.1281-1.x86_64.rpm start postinstall CREATE NEW ENV under (uid=0(root) gid=0(root) группы=0(root) контекст=unconfined_u:unconfined_r:rpm_script_t:s0-s0:c0.c1023) Already using interpreter /bin/python3 Using base prefix '/usr' Overwriting /var/lib/visyond/env/lib64/python3.4/site.py with new content New python executable in /var/lib/visyond/env/bin/python3 Also creating executable in /var/lib/visyond/env/bin/python Installing setuptools, pip, wheel...done. Overwriting /var/lib/visyond/env/bin/activate with new content Overwriting /var/lib/visyond/env/bin/activate.csh with new content Overwriting /var/lib/visyond/env/bin/activate_this.py with new content Overwriting /var/lib/visyond/env/bin/activate.fish with new content Env creation failed
Anonymous
Похоже там и правда баш не запускается, а юзается просто sh, но тем не менее, никаких инструкций там нет, котрые в sh не работают
Anonymous
Да что за ебала то сраная??? Вынул я этот POSTIN из RPMки. Запустил руками и всё нормально создалось. А при rpm -iU bla.rpm не разворачивается виртуаленв
G72K
Да что за ебала то сраная??? Вынул я этот POSTIN из RPMки. Запустил руками и всё нормально создалось. А при rpm -iU bla.rpm не разворачивается виртуаленв
незнаю почему так, но боги РПМа точно вам намекают, что паковать всё что запускается надо в %build
Anonymous
Ээээм, подробнее можно? Я ж ничего не пакую в данном случае. А просто запускаю виртуаленв
G72K
вот запускайте его в %build и пакуйте :) RPM как раз для этого
Anonymous
Эээм, билдится же на билд сервере, а не в процессе установки!
Anonymous
Мне надо что бы питончик приехал актуальный для системы, где распаоквка пакета, а не для той, где билдится.
Anonymous
Там и линковка бинарников может быть иной и куча других нюансов.
Vladimir
Из попросили сделать таки пакеты с кодом хотя бы
Aleksey
Есть мысль типа на проде не должно быть компиляторов
Vladimir
Через полгода те сделали.
Aleksey
Довольно популярная мысль
Vladimir
В пакете был postinst который делал cd && svn up
Vladimir
И ничего больше
Anonymous
=)
Aleksey
Поэтому пакеты это уже готовый вариант
Aleksey
Не идеально да
Anonymous
Есть мысль типа на проде не должно быть компиляторов
Так компиляторов и нет. Есть интерпретатор питона
Vladimir
Вот тут также, тока виртэнв
Anonymous
Тогда что там за линковка ;)
Внутри виртуаленва бинарники питона и пипа же.
Aleksey
@tnt4brain говорит он делает пакеты виртуалеева
Aleksey
Я тоже склоняюсь к этой идеи
Vladimir
Не бинарник питона, а симлинк на системный
Aleksey
Да симлинк
Vladimir
Пип да, но Пип это чисто питонячий скрипт
Anonymous
Не бинарник питона, а симлинк на системный
Ну так темболее. Исходный бинарник в билд системе лежит в одном месте. а в той где инсталлится пакет, уже в дргом
Aleksey
А pip -e не помогает?
Anonymous
А вот ls думает иначе, кстати lrwxrwxrwx. 1 nginx nginx 7 ноя 23 17:17 python -> python3 -rwxr-xr-x. 1 nginx nginx 11312 ноя 23 17:17 python3 lrwxrwxrwx. 1 nginx nginx 7 ноя 23 17:17 python3.4 -> python3
Anonymous
python3 ниразу не симлинк
Aleksey
А не шаманил ли ты это? Ибо ключ делай копирование у pip есть
Anonymous
Это было создано командой python3 -m virtualenv %{ENV_DIR} -p python3
Vladimir
А не шаманил ли ты это? Ибо ключ делай копирование у pip есть
Там вероятно скрипт который выставляет переменные окружения и запускает системный питон. Хотя мне тоже всегда казалось что нормальный Пип делает симлинк
Sergey
Немного ясности 😊 Если требуется паковать в RPM virtualenv, то 1) необходимо всё собирать по taregt-путям, т.к. пути "запекаются" в virtualenv 2) все и всяческие создания virtualenv, установки библиотек и прочая делаются до упаковки 3) ключ "дай мне полный автономный virtualenv" называется —always-copy 4) при установке ряда питонячьих пакетов происходит (внезапно!) сборка сишных библиотек, и это далеко не на всяком хосте сработает 5) сборка rpm в классическом виде обращается к strip'у, и это приходится отключать - иногда библиотеки не выдерживают такого обращения и скисают (пример - psycopg2)
Anonymous
Сейчас задача виртуаленв создать на таргет системе после установки rpm пакета, и затем накатить все депендед модули пипом.
Sergey
strip же врое только по системным путям. если паковать в какой-нибудь /opt/myenv стрипа быть не должно (но это не точно :) )
Совершенно верно - не точно. Таки strip бежит по всей "файловой системе" в buildroot.
Anonymous
зачем вам тогда rpm вообще? :)
Что бы притащить из гита нужную версию кода и не зависеть ни от интернетов ни от любых других изменений. Пакеты для пипа тоже кладутся внутрь RPM и патом пип их ставит из определённого каталога
Anonymous
Эдакая заморозка состояния всего на момент сборки, но без вкладывания бинарностей внутрь пакета
G72K
Эдакая заморозка состояния всего на момент сборки, но без вкладывания бинарностей внутрь пакета
замороживайте и весь питон и вообще всё. нужный питон втягивайте по Requires: в рпмке
Anonymous
вобщем, всё что делаете в %postinst делайте в %build
Так было раньше и было переделано потому что не всё нормально работало после установки. Кстати, сборка RPM производится на дебиане. А установка уже на редхат-бэйзед дистрах. И это так же вносит свои нюансы, именно поэтому и хочется виртуаленв не запаковывать внутрь RPM, а накатывать его уже в момент установки.
Anonymous
Из гита нужная версия кода кладётся в RPM ДО упаковки со всей зависимой дрянью 😉
Да, так и происходит. Но виртуаленв не пакуется, пакуются только whl файлы.
Anonymous
То есть эти танцы с бубном для того, чтобы не поднимать Дженкинс-слейв на центосе?
Ээээээээээээээээм, у всех клиентов поднимать дженкинс слэйв????