В винде это работает. И апдейты на граф зависимостей корректно накатываются. Выглядит, надо сказать, чуток страшновато и verbose, но работает и не глючит. Появилось начиная с XP SP1 (или 2?). А разработчики линукса живут в идеальном мире и довольствуются тем, чем их накормили мейнтейнеры, и при шаг вправо-шаг влево предлагают перетряхивать всю систему и следить за зависимостями целиком, руками. Чего ради?
Тогда может сложиться забавная ситуация, когда библиотека A требует В-1.0, библиотека Б требует В-1.3, и в софтине Г где используется одновременно библиотеки A и B, будут одновременно использован одна библиотека двух версий В-1.0 и В-1.3, что может быть очень интересно если структуры одной библиотеки попадут в функции второй библиотеки. Я сейчас имею похожую ситуацию (jar-hell) на работе на Java.
Вообще не знаю как в общем случае разруливается такое. Я сейчас вижу два основных способа: 1) На каком либо иных уровне (программа, OS) подбирается подходящая работающая комбинация библиотек. Например, под виндой любят слинковать всё статически или подложить к exe все нужные dll. 2) Программа декларирует что она может работать с библитекой любой верии выше x.y.z, при сборке используется из разных вариантов самая старшая версий. Если у библиотеки несовместимо меняется интерфейс, то считается что это вообще другая новая библиотека. Например был foobar-3.7.2, стал foobar2-1.0.
Я вполне признаю существование Diamond problem :) Виндовый SxS это детектит, пытается подбирать из существующих версий комбинации, которые задекларированы как работающие, если не нашлось - говорит "application configuration is incorrect"
1) собственно, отсюда растут ноги про xcopy deployment, да.
2) реализовано в виндовом SxS (там вообще можно задать набор диапазонов совместимых версий и набор диапазонов несовместимых, у каждой либы, а в конфиге приложения эти феньки оверрайдить)
Тогда одна из софтин должна быть слинкована статически либо её надо подсунуть правильную so. Низкоуровный доступ к таким вещам в линуксах есть, так что если надо, задача решаемая. Только если её нужно решать, что-то ты сделал не так -(.
>> так что если надо, задача решаемая Это понятно, непонятно, почему ее нельзя решить автоматически (в данном случае это возможно)
>> Только если её нужно решать, что-то ты сделал не так -(. Почему? Я ж ничего сверхъестественного не делаю.
К примеру, я хочу поставить на Дебиан python 2.7 ("current production release"), Apache 2 и mod_wsgi. Зачем для этого править в куче мест пути руками и пересобирать пол-системы?
>К примеру, я хочу поставить на Дебиан python 2.7 А можно сделать внутри os свою отдельную вселенную со всеми бинарниками и библиотеками, так что бы 2.7 был не системным, а только для своего сайта?
>непонятно, почему ее нельзя решить автоматически Дабы не плодить противоестественного интеллекта?
>Дебиан Имхо, с этого надо было начинать. А точнее, с замены на генту, где в осном дереве вполне себе есть разбивка по слотам, и например, аутомейков у меня стоит 4 штуки, xulrunner'ov две штуки...
>> Дабы не плодить противоестественного интеллекта? Если нет даймондов, то никакие эвристики не нужны, и результат детерминирован. Имхо, это не большее усложнение, чем наличие настраиваемого PATH, и того стоит.
>> вполне себе есть разбивка по слотам, и например, аутомейков у меня стоит 4 штуки, xulrunner'ov две штуки...
О, это звучит правильно. А сколько времени уйдет на ее конфигурацию в первый раз?
>Если нет даймондов, то никакие эвристики не нужны, и результат детерминирован. Имхо, это не большее усложнение, чем наличие настраиваемого PATH, и того стоит.
Учитывая монструозные деревья зависимостей в линуксах отсутствие даймондов - вещь неочевидная.
>А сколько времени уйдет на ее конфигурацию в первый раз? А хз. Я её ставлю с нуля за вечер + час утром.
не слушай вредных советов. Дебиан у тебя хоть как-то сопротивляется попыткам его завалить путём so hell. В генту ты в аналогичной ситуации получил бы негрузящуюся систему.
no subject
Date: 2010-10-31 04:28 pm (UTC)no subject
Date: 2010-10-31 04:30 pm (UTC)Софтина А требует библиотеки В версии 1.0, а софтина Б - 1.3.
Установить одновременно В-1.0 и В-1.3 нельзя.
Приплыли.
no subject
Date: 2010-10-31 04:33 pm (UTC)no subject
Date: 2010-10-31 05:27 pm (UTC)no subject
Date: 2010-10-31 05:29 pm (UTC)Но если разработчики библиотеки выпускают апдейты для всех ее stable-релизов, то почему бы и нет?
no subject
Date: 2010-10-31 05:27 pm (UTC)Я сейчас имею похожую ситуацию (jar-hell) на работе на Java.
Вообще не знаю как в общем случае разруливается такое.
Я сейчас вижу два основных способа:
1) На каком либо иных уровне (программа, OS) подбирается подходящая работающая комбинация библиотек. Например, под виндой любят слинковать всё статически или подложить к exe все нужные dll.
2) Программа декларирует что она может работать с библитекой любой верии выше x.y.z, при сборке используется из разных вариантов самая старшая версий. Если у библиотеки несовместимо меняется интерфейс, то считается что это вообще другая новая библиотека. Например был foobar-3.7.2, стал foobar2-1.0.
no subject
Date: 2010-10-31 05:33 pm (UTC)1) собственно, отсюда растут ноги про xcopy deployment, да.
2) реализовано в виндовом SxS (там вообще можно задать набор диапазонов совместимых версий и набор диапазонов несовместимых, у каждой либы, а в конфиге приложения эти феньки оверрайдить)
no subject
Date: 2010-10-31 05:33 pm (UTC)no subject
Date: 2010-10-31 06:03 pm (UTC)no subject
Date: 2010-10-31 06:14 pm (UTC)Это понятно, непонятно, почему ее нельзя решить автоматически (в данном случае это возможно)
>> Только если её нужно решать, что-то ты сделал не так -(.
Почему? Я ж ничего сверхъестественного не делаю.
К примеру, я хочу поставить на Дебиан python 2.7 ("current production release"), Apache 2 и mod_wsgi. Зачем для этого править в куче мест пути руками и пересобирать пол-системы?
no subject
Date: 2010-10-31 07:08 pm (UTC)А можно сделать внутри os свою отдельную вселенную со всеми бинарниками и библиотеками, так что бы 2.7 был не системным, а только для своего сайта?
no subject
Date: 2010-10-31 07:09 pm (UTC)no subject
Date: 2010-10-31 07:18 pm (UTC)no subject
Date: 2010-10-31 07:08 pm (UTC)Дабы не плодить противоестественного интеллекта?
>Дебиан
Имхо, с этого надо было начинать. А точнее, с замены на генту, где в осном дереве вполне себе есть разбивка по слотам, и например, аутомейков у меня стоит 4 штуки, xulrunner'ov две штуки...
no subject
Date: 2010-10-31 07:18 pm (UTC)Если нет даймондов, то никакие эвристики не нужны, и результат детерминирован. Имхо, это не большее усложнение, чем наличие настраиваемого PATH, и того стоит.
>> вполне себе есть разбивка по слотам, и например, аутомейков у меня стоит 4 штуки, xulrunner'ov две штуки...
О, это звучит правильно. А сколько времени уйдет на ее конфигурацию в первый раз?
no subject
Date: 2010-10-31 08:01 pm (UTC)Учитывая монструозные деревья зависимостей в линуксах отсутствие даймондов - вещь неочевидная.
>А сколько времени уйдет на ее конфигурацию в первый раз?
А хз. Я её ставлю с нуля за вечер + час утром.
no subject
Date: 2010-11-01 05:59 am (UTC)