Previous Entry Share Next Entry
photo24

И еще...

замечание от меня: в винде это, конечно, тоже запросто устраивается для отдельно взятой проги, но есть хотя бы SxS, который дает возможность пофиксить как при разработке, так и после установки. А из юниксов это нормально реализовано лишь в NixOS (и то, вопрос обновлений безопасности, не задевающих остальное поведение - никак не решается, в отличие от)

Оригинал взят у dennis_chikin в И еще...
Когда, наконец, не только во фре, а вообще в мире "опенсорса" закончится бардак с привязкой к минор-версиям библиотек (в том числе и с ограничением сверху !), а майор-версии просто будут уже тупо класть рядом, и обращаться к ним, а не требовать снести ВООБЩЕ все, что установлено, при выходе каждого патча чего попало с изменениями в одной строчке и мейкфайлом, требующим таки новую минор-версию библиотеки, а далее - рекурсивно ?

Блин:
"удалите вашу 1.33.100500.15, и установите 1.33.100500.16 !"
"удалить 1.33.100500.15 невозможно, так как она используется в 2.4864.555-555-555.04 и еще 100500 наименований !"
"Установить 2.4864.555-555-555.05 невозможно, поскольку требуется 1.33.100500.15, а у вас установлено 1.33.100500.16 !"


  • 1
vaddimka November 7th, 2013
мы юзаем никс в продакшне
немного напрягает что все динамически собирать приходится и есть геморрои с dlopen (небольшие), но работает нормально
отдельно удобно что через демона можно разработчику юзая Lolfile (лол) настроить себе окружение с нужными версиями всего вплоть до gcc и не держать кучу виртуалок с разными окружениями

но принципе через LD_LIBRARY_PATH можно добиться такого же (в плане поставки готового аппа), разве что если софт запускает процессы - может случиться конфликт

wizzard0 November 7th, 2013
ммм, учитывая unix-way, я подозреваю, что довольно много софта *запускают процессы* ;)

wizzard0 November 7th, 2013
> мы юзаем никс в продакшне

вообще очень интересно, спасибо!

potan November 8th, 2013
А он умеет автоматически выбирать самые свежие версии из доступных? Меня пугают системы, заставляющие явно указывать точные версии библиотек.

vaddimka November 8th, 2013
выбирать при установке пакета, или вообще автоматом подгружать новые зависимости?

там есть несколько вариантов работы
первый - это весь nix подключается через NFS с какого-нибудь nix-сервера, там соответственно нужно заранее знать полный путь к запускаемому приложению (хеш-имя-версия), или юзать тулзы для его нахождения
второй - это nix-channel/nix-env, на манер apt-get'а, когда с никсового сервера все копируется (или собирается, если не совпадают бинарные кэши) на локальную машину, nix-env позволяет не указывать точную версию, поставится версия которая считается самой свежей

один раз собранное приложение имеет вкомпиленные намертво зависимости с жестко зашитыми полными путями до них

potan November 8th, 2013
При сборке. Он вроде умеет как gentoo пакеты из исходников компилировать.
Ну и проверять, что у библиотеки, от которой пакет зависит, появилась новая версия и его можно пересобрать.

vaddimka November 8th, 2013
умеет из исходников, да, но деталей я не знаю
у меня цикл примерно такой
-- сказать девопсам какой пакет какой версии нужен (от gcc до там специальной версии cuda tools)
-- девопсы собирают пакет, именовывают его
-- я прописываю депенденси на этот пакет в проекте
-- создаю демоном окружение, проверяю сборку
-- коммичу все. ставлю тег
телемаркет, билд-сервер его собирает и он готов к деплою
ситуация когда мне нужно чтобы релиз вышел с самой новой версией чего-то, про которую я ничего не знаю, не бывает

Edited at 2013-11-08 11:19 am (UTC)

worm_ii November 8th, 2013
Системы, автоматически выбирающие самые свежие версии — не комильфо в никсах. Unix Way предписывает смело менять интерфейсы, соглашения и т.п., если они окажутся морально устаревшими, а поэтому обновляйтесь до самых последних версий, а если таковых ещё нет — пинайте разработчиков или напишите сами, исходники ж есть.

Хотя другой путь тоже проходили (dll hell). Нет в жизни счастья. Проблема лежит за пределами IT и чисто IT-методами не решается.

dennis_chikin November 11th, 2013
Unix Way предписывает смело менять интерфейсы, соглашения и т.п., если они окажутся морально устаревшими, а поэтому обновляйтесь до самых последних версий

Это - чудесно. Пожалуй, к себе утащу.

Угум. Обновляем мы смело сервер в продакшене, а он после этого не запускается, и вместо данных - каша. По тому что соглашения и интерфейсы были сочтены морально устаревшими...
Ну, собственно, у меня почти это и произошло... Хорошо, решил для начала на домашней системе попробовать. Первый раз после пересборки мира при попытке его установить, make обнаружил, что у СС, оказывается, есть версия, и по этому поводу снес все ветку с сорцами. Ядро собралось раза с 20, и после установки отрубило сеть вообще...
ЦЫруса у меня на машинах (с чего, собственно, вся эпопея и началась) - будет только через мой труп.

Заодно всплыло, что все патчи, как были надцатилетней давности, так в систему и не вошли, хотя были "закрыты" под предлогом того, что "а в 7-й ветке будет ваще другой код"... Угу, сейчас - 9.2 актуально, и заморожен перед выпуском релиз 10. Код - тот же, только половину разломали.

Да, машина была под 8, все пропатчено, настроено, обработано напильником. Сечас - 3-я пересборка мира и дцатая ядра, в надежде, что хоть сеть заработает.


Когда, наконец, ...

denis_poltavets November 7th, 2013
Отвечаю - никогда. Опенсорс это ж чистый аналог живой ткани, находящейся под жестким излучением ума программистов. В таких условиях мутация кода не может прекратиться никогда. Нечем экранировать код, по определению.

Re: Когда, наконец, ...

wizzard0 November 7th, 2013
Ну здрасте. Я бы еще понял этот комментарий, если бы у нас не было систем контроля версий для исходников. Но они ведь есть!

А бинари разных лет от разных людей все равно с завидным упорством продолжают хаотично валить в кучу.

продолжают хаотично валить

denis_poltavets November 7th, 2013
Ну так а чего ж им не валить? Сами посудите, каков главный алгоритм деятельности жертв миллиардолетних мутаций, слияний крупных клеточных конгломератов, бесконечных межвидовых и междуцарственных войн и так далее, и тому подобное? Ясное дело - только валить хаотично. Я вообще реально поражаюсь, что оно как-то работает, хоть опенсорс, а хоть клоузсорс.

Re: продолжают хаотично валить

wizzard0 November 7th, 2013
Git/Hg/да даже SVN работает. SxS работает. NixOS работает. Почему все остальные пример не берут?

Re: продолжают хаотично валить

nivanych November 8th, 2013
Кое-как Gentoo работает путём тщательного подобра версий.
Хотя и уже больше года, как переполз на NixOS.
На серверах всё не соберусь попробовать...

justy_tylor November 7th, 2013
Нельзя ставить в систему никакие динамические библиотеки для своего приложения. Точка.

Шарится должны те API, которые шарят ресурсы. Ядро, драйвера и фреймворки типа DirectX, которые обязаны поддерживать API предыдущих версий (что, увы, не соблюдается даже в случае самонесовместимой срани дотнета).

arkanoid November 7th, 2013
и это тоже верно.

wizzard0 November 7th, 2013
О! Ты что-то понял! Обьясни.

109 November 7th, 2013
:)

arkanoid November 7th, 2013
про DirectX не в курсе, но идея в том, что имеет смысл использовать shared library если она действительно shared. Если сомневаешься и тебе нужно раздать бинарники, слинкуй статику.

wizzard0 November 7th, 2013
Я либо нифига не понял, либо посыл в корне неверен.

Что вообще означает "API шарит ресурсы"? DirectX в документации уже сколько лет пишет что ни прямой, ни обратной совместимости там нет и не будет.

С чем вообще могут быть совместимы или не совместимы драйвера?

Про самонесовместимость дотнета тоже очень интересно послушать.

Ну и так далее, короче, просьба переформулировать весь коммент, потому что пока что он выглядит крайне абсурдно.

justy_tylor November 7th, 2013
Для запуска Diablo не требуется ставить древний DirectX 3, под который она разрабатывалась. Это совместимость со старыми приложениями. Для дотнета это (было?) не так, мне приходилось доустанавливать старые версии при уже установленных свежих.

На самом деле, установка общего кода в систему требуется только для владения общими ресурсами. Память, потоки, процессы, различные аспекты IO, от файловой системы до окон десктопа.

Когда простая утилитка требует скачивания пятиметрового бинарника all inclusive это не страшно. Посмотрел. воспользовался, удалил. Когда она же требует десяток пакетов, включая полную инсталляцию уникальной версии интерпретатора govnoscript, то начинается гадюшник.

Не следует переносить проблемы времени билда на время деплоя.

vaddimka November 8th, 2013
у меня на текущей системе (windows 7) запускается то что я компилял еще в школе эдак в году 97-м
и 2D игрушки с аж DirectDraw и 3D с Direct3D
только одну библиотечку какую-то несчастную пришлось скачать и положить рядом к экзешнику, все завелось без плясок

worm_ii November 8th, 2013
Я согласен, но идеологи UNIX — нет. DRY и никаких all inclusive.

arkanoid November 7th, 2013
Оццуда мораль:

при смене минорной версии библиотеки, можно добавлять функции, но нельзя убирать или менять поведение существующих.

если приспичило -- меняй мажорную версию.

dennis_chikin November 7th, 2013
можно добавлять функции

Функции добавлять можно, да. В тестовых целях, например.
И использовать их в тестовых версиях того, что от них зависит.
Но при релизе менять мажорные.

И даже если и нет, то положить рядом еще одну минорную - не запрещает ни что, кроме религии.

В общем, как говорится, "make - это замечательная операционная система, но сборщик в ней- хреновый." ;)

nivanych November 8th, 2013
Заставьте их!!

ext_1684112 November 8th, 2013
Заставишь их, как же...

У Щеглова было эпичное обсуждение:

http://schegloff.livejournal.com/751205.html

Тоже, по сути, вопрос из серии "зачем они так делают?"

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

Как тут можно заставить, когда даже попытки обсуждения таких методов пресекаются?

nivanych November 8th, 2013
Удялять растительность на лице эпилятором?
Но это же призыв к насилию!
Поэтому и забанили ;-)

ext_1684112 November 8th, 2013
По личному опыту - не столь это и страшно. Зато потом две недели ходишь с чистой светлой кожей. С первокурсником путают.

worm_ii November 8th, 2013
Так делала Microsoft, обеспечивая высочайший уровень совместимости, и это в конечном итоге обеспечило Windows былинную победу.
Но нам западло. Мы — народ гордый, заставим всех жрать кактусы, но ни на какие компромиссы не пойдём!

cn_mangetsu November 7th, 2013
И ведь ещё тыкали пальцами в Win с её DLL hell. Хотя там было несколько хуже.

arkanoid November 7th, 2013
Да много что тыкали. Что bloatware, например.

max630 November 7th, 2013
Как я понял, человеку не нравятся зависимости в пакете. Которые и правда могут быть разные. Да если ещё и "во фре".

Так-то major версии "тупо клали рядом" примерно всегда. А с учётом всяких rpath - можно и с минорной версией выкрутиться.

ну про опенсорса-то это зря...

Serge Shikov November 8th, 2013
Чем вам eclipse foundation или apache не опенсорс? Однако же в мире java разработки есть и нормальное управление зависимостями, и в runtime в том числе (OSGi, например, или JavaEE контейнеры). Хотите самую новую версию? Ну нате вам. Хотите конкретно вот эту - тоже пожалуйста.

И что характерно - если встречаешь продукт, который отступает от нормальной практики, это как правило как раз что-нибудь от IBM или Oracle. То есть не опенсорс как раз.

Re: ну про опенсорса-то это зря...

wizzard0 November 8th, 2013
эээ, при чем тут мир джава-разработки к дистрибутивам операционных систем?

Re: ну про опенсорса-то это зря...

Serge Shikov November 11th, 2013
При том что опенсорс тут не при чем. Это обычное раздолбайство.

Это - просто таки чудесно !

livejournal November 11th, 2013
Пользователь dennis_chikin сослался на вашу запись в записи «Это - просто таки чудесно !» в контексте: [...] или напишите сами, исходники ж есть." (http://wizzard0.livejournal.com/364107.html?thread=3380555) [...]

  • 1
?

Log in

No account? Create an account