169 похожих чатов

52 ответов

38 просмотров

А cpm умеет в детерминированную установку? Опять напоролся на установку более свежей версии транзитивной зависимости, чем мне нужно. И вообще, какие-то пакетники для perl поддерживают что-то вроде lock-файлов?

Slava
carton?

Он умеет? Мне казалось, что он использует cpanm, который не умеет детерминированно ставить.

Andrey Smirnov / 𝓪𝓵𝓵𝓽𝓮𝓻 /
Он умеет? Мне казалось, что он использует cpanm, к...

Может я не правильно понял этот термин. Думал, что хочется поставить что-то типа: package >=7.10 < 9.5

Slava
Может я не правильно понял этот термин. Думал, что...

Имеется в виду, хочется поставить: requires 'Dep', '== X.Y'; requires 'Foo', '== K.L'; requires 'Bar', '== A.B'; Но какая-то из этих сволочей обновляет Dep до ненужной версии.

Slava
Dep вниз переместить. ;) Это я так, предположил.

В cpanm порядок не влияет (точнее, он недетерминистичный - там внутри видимо где-то perl hash используется)

Andrey Smirnov / 𝓪𝓵𝓵𝓽𝓮𝓻 /
В cpanm порядок не влияет (точнее, он недетерминис...

Да, у carton влиять может. Попробуйте. Я так в некоторых местах его использовал, где надо было некоторые пакеты с определенными только версиями ставить.

Andrey Smirnov / 𝓪𝓵𝓵𝓽𝓮𝓻 /
Имеется в виду, хочется поставить: requires 'Dep',...

Хм, а если какая-то из этих сволочей сломается от старой Dep?

Andrey Smirnov / 𝓪𝓵𝓵𝓽𝓮𝓻 /
Имеется в виду, хочется поставить: requires 'Dep',...

Может через Carmel как раз всё можно сделать. Он всё через роллаут в local положит нужное. Ну и в тарболл всё сможет собрать, все модули.

Slava
Да, у carton влиять может. Попробуйте. Я так в нек...

Да, проверил ещё раз. Каждый раз ставит модули в разном порядке, пару раз может повезти, а потом: Can't merge requirements for Dep: 'K.L' and '== X.Y' at .../Menlo/Dependency.pm line 53. А потом: ! Installing the dependencies failed: Installed version (X.Y) of Dep is not in range 'K.L' ! Bailing out the installation for XYZ-H.J. Причём в конце, типа успех: 143 distributions installed Complete! Modules were installed into .. Причём модуль XYZ, на который ругалось, вроде поставилось. В общем, гремлины какие-то занимаются установкой...

Pavel Melnik
Хм, а если какая-то из этих сволочей сломается от ...

Я в это полез, т.к. у меня кое что в моём легаси сломалось от более новой Dep. Хорошо, что юнит-тест был.

Andrey Smirnov / 𝓪𝓵𝓵𝓽𝓮𝓻 /
Да, проверил ещё раз. Каждый раз ставит модули в р...

А ещё, carton не тестит при установке модулей и это не отключается... Что-то сомневаюсь я, что оно работает...

Sergei-Zhmylove Автор вопроса
Andrey Smirnov / 𝓪𝓵𝓵𝓽𝓮𝓻 /
А cpm умеет в детерминированную установку? Опять н...

Ну как сказать, он пишет кучу варнингов, но да, обновляет до не тех версий, которые ты хочешь

Andrey Smirnov / 𝓪𝓵𝓵𝓽𝓮𝓻 /
А ещё, carton не тестит при установке модулей и эт...

Он и не должен. Предполагается что ты этот набор модулей уже проверил

Andrey Smirnov / 𝓪𝓵𝓵𝓽𝓮𝓻 /
С помощью какого инструмента?

Cpanm, cpm, руками. Собрал окружение, проверил, прописал версии в картонфайл

Denis F
Cpanm, cpm, руками. Собрал окружение, проверил, ...

В каком смысле собрал окружение? Вот, скажем, берём чистый докер-образ. Ставим туда нужный perl, cpanm, либы (openssl), carton/carmel. И как проверить, что указанный набор perl-модулей, вообще, собирается с теми инклюдами, которые есть в системе?

Andrey Smirnov / 𝓪𝓵𝓵𝓽𝓮𝓻 /
В каком смысле собрал окружение? Вот, скажем, бе...

Ну собираешь картоном окружение, запускаешь юнит тесты. Прошли- значит всё хорошо, не прошли - всё плохо :)

Slava
Тогда Carmel :)

carmel тоже странная штука оказалась. Это какой-то гибрид plenv + carton, т.е. он одновременно умеет управлять окружениями, как plenv/virtualenv/rbenv, так и зависимостями. Причём последние ставит не в ./local, а куда-то к себе в .carmel Но мой набор зависимостей он не смог собрать, причём непонятно, где фигня (и, что самое интересное, не даёт даже сделать carmel tree - мол, сначала поставь, а потом покажу)

Denis F
Ну собираешь картоном окружение, запускаешь юнит т...

Юнит тесты чего? carton не даёт прогонять юнит-тесты пакетов.

Andrey Smirnov / 𝓪𝓵𝓵𝓽𝓮𝓻 /
carmel тоже странная штука оказалась. Это какой-т...

carmel ставит всё в ~/.carmel, а после carmel rollout выкатывает всё по нужным версиям из ~/.carmel в yourpoject/local

Sergei Zhmylove
Ну как сказать, он пишет кучу варнингов, но да, об...

Да, и я, кажется, понял почему. Все эти тулы - cpm, carton, carmel - под капотом используют те же классы, что и cpanm (Menlo). И все они для установки, по сути, пользуются внешним инструментом. Хотя, по идее, логично было бы зарезолвить и скачать верхний уровень зависимостей, посмотреть зависимости этих зависимостей, зарезолвить их (с учётом ограничений верхнего уровня) и скачать... И так далее, пока всё не будет скачано. И только потом (если конфликтов в предыдущих шагах не найдётся) приступать к сборке/тестированию/установке, но в чёткой последовательности...

Sergei-Zhmylove Автор вопроса
Andrey Smirnov / 𝓪𝓵𝓵𝓽𝓮𝓻 /
Да, и я, кажется, понял почему. Все эти тулы - cpm...

Ты что-нибудь слышал про dynamic dependencies в перле? А про многопоточность?)

Sergei Zhmylove
Ты что-нибудь слышал про dynamic dependencies в пе...

Нет, не слышал. Про что речь? Про recommends? Многопоточность: какое она имеет значение в данном случае?

Sergei-Zhmylove Автор вопроса
Sergei-Zhmylove Автор вопроса
Andrey Smirnov / 𝓪𝓵𝓵𝓽𝓮𝓻 /
Нет, не слышал. Про что речь? Про recommends? Мно...

Сейчас порву тебе шаблоны. Посмотри как cpan по-разному показывает зависимости у этих модулей :) https://metacpan.org/pod/korgwm https://metacpan.org/pod/X11::XCB

Sergei-Zhmylove Автор вопроса
Sergei Zhmylove
Да

Ну вот мне-то более желательна была бы как раз более воспроизводимая сборка (но без Nix/Guix)..

Sergei-Zhmylove Автор вопроса
Andrey Smirnov / 𝓪𝓵𝓵𝓽𝓮𝓻 /
Ну вот мне-то более желательна была бы как раз бол...

Я ж говорю, хочу кое что проверить и отпишусь потом

Sergei Zhmylove
Сейчас порву тебе шаблоны. Посмотри как cpan по-ра...

А где смотреть? Я сделал Dependency graph -> Table - и вроде всё показывает также . Только вот непонятно, как показ версий там включить?

Sergei Zhmylove
Я ж говорю, хочу кое что проверить и отпишусь пото...

Если что, install --workers 1 я пробовал, но оно странно работает. Параллелизм, собственно, сборки, судя по всему, выключает, но этапы resolve-fetch-configure всё равно делает группами по 5 штук и в каком-то случайном порядке, даже если зависимостей в cpanfile мало.

Sergei-Zhmylove Автор вопроса
Andrey Smirnov / 𝓪𝓵𝓵𝓽𝓮𝓻 /
А где смотреть? Я сделал Dependency graph -> Table...

Смотри конкретно в: and possibly others dynamic_config enabled

Sergei Zhmylove
Смотри конкретно в: and possibly others dynamic_c...

https://metacpan.org/pod/Dist::Zilla::Plugin::Meta::Dynamic::Config "Normally this would not be required, but if you are providing your own Makefile.PL or Build.PL and asking questions, sensing the environment, etc. to generate a list of prereqs then dynamic_config should be set to a true value to satisfy the Meta specification." Т.е. если такой флаг стоит, то "там может быть всё что угодно" в зависимостях. Понятно, что у пакетов могут быть попросту неуказанные зависимости (и у нормального пакетного менеджера должны быть механизмы для дополнения/переопределения списка зависимостей у зависимостей). Но при массовой установке по спискам пакетов никто никакой ручной конфигурацией не занимается, и все версии, указанные в recommends/suggests тоже должны участвовать в разрешении вопроса, какие версии ставить для того замыкания пакетов, которое в итоге ставится в текущем запуске.

Sergei-Zhmylove Автор вопроса
Andrey Smirnov / 𝓪𝓵𝓵𝓽𝓮𝓻 /
https://metacpan.org/pod/Dist::Zilla::Plugin::Meta...

Не брат, ты похоже не до конца понял, при установке пакета оно может захотеть ещё зависимостей если найдёт у тебя в системе признаки для этой нужды

Sergei Zhmylove
Не брат, ты похоже не до конца понял, при установк...

Это понятно. Но делать так без добавления хотя бы в recommends/suggests - плохо для кармы майнтейнера

Andrey Smirnov / 𝓪𝓵𝓵𝓽𝓮𝓻 /
https://metacpan.org/pod/Dist::Zilla::Plugin::Meta...

> ставить для того замыкания пакетов шта

Vadim Goncharov
> ставить для того замыкания пакетов шта

Если посмотришь на зависимости, например пакетов, приведённых чуть выше, легко увидишь циклы. Т.е. зависимости - это не дерево и даже не DAG, а граф, где наборs пакетов образуют замыкание.

Andrey Smirnov / 𝓪𝓵𝓵𝓽𝓮𝓻 /
Если посмотришь на зависимости, например пакетов, ...

Вообще есть нормальный термин для этого, циклы в графах, а вот замыкания вообще не из этой сферы.

6aKa
Вообще есть нормальный термин для этого, циклы в г...

Это давным давно устоялось в соответствующих пакетных менеджерах (guix, nix)

Andrey Smirnov / 𝓪𝓵𝓵𝓽𝓮𝓻 /
Это давным давно устоялось в соответствующих пакет...

Граф это математическое понятие, так же как и цикл в графе с соответствующим мат аппаратом. В области есть устоявшееся граф зависимостей. А замыкание в графе это наркомания и придумка.

6aKa
Граф это математическое понятие, так же как и цикл...

Ну, так научите материализовывать perl-пакеты, составляющие эти графы, безопасным образом. %)

Andrey Smirnov / 𝓪𝓵𝓵𝓽𝓮𝓻 /
Ну, так научите материализовывать perl-пакеты, сос...

Есть много вариантов не иметь проблем с зависимостями. Но самый простой - это всегда обновлять все пакеты до последних версий.

6aKa
Есть много вариантов не иметь проблем с зависимост...

я вот думаю что разумнее обновлять до минимально требуемых :)

6aKa
Есть много вариантов не иметь проблем с зависимост...

Сомневаюсь, что это прямо самый простой. Т.к. для этого, как минимум, у вас должны быть ресурсы на вычитку этих обновлений. Интересно, кто-то с серьёзными продами таким занимается?

Anton Petrusevich
я вот думаю что разумнее обновлять до минимально т...

И вот в таком и подобных подходах вопрос: как определить эту минимально требуемую версию?

Anton Petrusevich
я вот думаю что разумнее обновлять до минимально т...

Можно и так, главное регулярные обновления и операционки, и базы и зависимостей. Иначе получаем сервер снежинку, уникальную и неповторимую, ну и такой де софт, который разваливается от малейшего вмешательства.

Andrey Smirnov / 𝓪𝓵𝓵𝓽𝓮𝓻 /
Сомневаюсь, что это прямо самый простой. Т.к. для ...

Мы вычитываем только критичное, mojolicious как минимум, остальное или тесты или отвалиться в проде и будет хотфикс. В банках знаю там вычитывают все зависимости, но у них и время доставки фичи в прод от месяца и больше может быть.

Похожие вопросы

Обсуждают сегодня

а через ESC-код ?
Alexey Kulakov
29
30500 за редактор? )
Владимир
47
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
13
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
program test; {$mode delphi} procedure proc(v: int32); overload; begin end; procedure proc(v: int64); overload; begin end; var x: uint64; begin proc(x); end. Уж не знаю...
notme
6
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Ребят в СИ можно реализовать ООП?
Николай
33
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Карта сайта