LINUX.ORG.RU
ФорумTalks

Идея новой подсистемы разделяемых библиотек. Критикуем.


0

0

О, лор!


В линухе всю подсистему разделяемых библиотек давно пора менять.

Одних напрягает то, что программа собранная статически держит свою копию кода в памяти. Других напрягают глюки, которые неизбежны при отличии версии библиотеки на 0.001 от версии, применяемой раработчиком. Это две крайности. А в линухе считается православным вариант с глюками.

При этом никто не думает о том, что возможен более другой вариант.

Например, каждая функция в памяти имеет:

- имя библиотеки, в состав которой она входит,
- версию билиотеки, в состав которой она входит,
- длина кода,
- и хеш кода

Запускаемая программа должна содержать все библиотеки, которые ей нужны. Однако, при загрузке программы грузится в память не весь код, а только реализации функций, которых нет в памяти. Быстро сориентироваться загрузчик может по информации об имени, версии, длине, и хешу. Может быть, даже одного хеша будет достаточно. При совпадении хешей можно вразнорядку проверять каждый 2/4/8/16/32... чтобы снизить вероятность коллизий до 0.000000000001%. А можно и все байты проверять - загрузить код и выкинуть, если каждый байт совпадает.

Таким образом, в память будет грузится только то, чего в памяти нет. 90% кода в разных подверсиях библиотек обычно остается неизменным. Значит, подгружаться будет, к примеру, 10% от размера статического бинарника. При этом дается гарантия, что код программы байт в байт соответсвует тому, который был у разработчика. Ну разве это не прекрасно?

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


Вопрос: есть ли какая-то принципиальная ошибка в описанной системе? Я пока не вижу.


Ответ на: комментарий от Berluskoni

> Что вы конкретно имеете в виду

Много чего.

Читать начиная отсюда: http://www.flexerasoftware.com/products/installshield/features.htm

продолжая здесь: http://ru.wikipedia.org/wiki/Inno_Setup

и здесь: http://ru.wikipedia.org/wiki/WiX

а потом заполировать MSDN.

такие дела.

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

ну на вскидку, если вы уже все это изучили) может ли «пакетный менеджер» от мс обновить все пакеты? все либы свои? а то помнится даже мегаобновление (sp3) шло с ослом 6

Berluskoni ★★
()
Ответ на: комментарий от Berluskoni

> может ли «пакетный менеджер» от мс обновить все пакеты? все либы свои?

свои - может. Windows Update постоянно качает какие-то обновления.

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

stevejobs ★★★★☆
()
Ответ на: комментарий от tailgunner

Install Shield.

насчет Inno ошибся, там всё своё.

Кстати, несмотря на это Inno всё равно справляется с заявленными фичами. При этом проги, установленные Inno ставятся через setup.exe и удаляются через панель управления, так что всё ОК.

stevejobs ★★★★☆
()
Ответ на: комментарий от Berluskoni

> т.е. если я скачал far*.msi, то Windows Update мне его обновит с зеркала far'а?

понятия не имею, что там творится у фара. Следуя бытовой логике - нет конечно. Программа обновляет себя сама (если умеет это делать).

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

>Программа обновляет себя сама (если умеет это делать).

Вот, а вы говорите что «пакетный менеджер» от мс, что-то может. Если программисту приходится заботится о написании «самообновления», то зачем тогда такой «пакетный менеджер»?

Berluskoni ★★
()
Ответ на: комментарий от stevejobs

> насчет Inno ошибся, там всё своё.

«А как дысал, как дысал» (с) В MSDN посылал...

проги, установленные Inno ставятся через setup.exe и удаляются через панель управления, так что всё ОК.

Тебя спросили, что такого может MSI. Ты привел ссылки на 2 надстройки над MSI и левый инсталлер, и теперь говоришь «ну через контрольную панель удаляются же!!11». Какой ламеризм.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Я привел ссылки на список фич «надстроек над MSI», потому что именно этими надстройками и создаются инсталляторы. Список фич - это ответ на вопрос.

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

> Я привел ссылки на список фич «надстроек над MSI»

...потому что списка фич собственно MSI ты не знаешь (наверняка пользуешься^Wтыкаешь кнопки d IS или чем-то похожtм).

Список фич - это ответ на вопрос.

Тебя спрашивали о MSI, ты не ответил.

tailgunner ★★★★★
()
Ответ на: комментарий от Berluskoni

> То что могут эти «надстройки» давно может любой пакетный менеджер в линухе.

Кстати, нет. Диалоги при установке - этого практически никто не умеет (да, я знаю о debconf, но это ужоснах).

Другое дело, что IS - это просто pre-install скрипты на огромной дозе стероидов.

tailgunner ★★★★★
()
Ответ на: комментарий от Berluskoni

>То что могут эти «надстройки» давно может любой пакетный менеджер в линухе.

в ближайшем будущем нужно будет сделать пакет для Убунту. Процесс: скачивание с ppa бинарников, пара кусков исходников с гитахаба и переписывание разных системных настроек типа /etc/profile.

важна возможность «наката» и «отката» изменений в системе, плюс выборочная установка и доустановка частей пакета по требованию. Очень круто была бы форсированное обновление компьютеров в домене/локалке с помощью этого пакета.

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

дай мне, пожалуйста, линк хоть на один нормальный гуевый дизайнер пакетов для Убунту, где можно будет по-быстрому нафигачить эту штуку.

stevejobs ★★★★☆
()
Ответ на: комментарий от tailgunner

> левый инсталлер, и теперь говоришь «ну через контрольную панель удаляются же!!11». Какой ламеризм.

Если этот левый инсталлер использует стандартное API для установки/удаления приложений, то чем он хуже того же apt? Главное все совместимо и система знает что и куда установилось.

simple_best_world_web_master
()
Ответ на: комментарий от simple_best_world_web_master

>Вот за такие самостоятельные действа я бы руки отрывал разрабочикам

За какие такие? За то, что положили новую версию в репу? или за что?

Berluskoni ★★
()
Ответ на: комментарий от tailgunner

> наверняка пользуешься^Wтыкаешь кнопки d IS или чем-то похожtм).

это расово-верный способ делать инсталляторы

Тебя спрашивали о MSI, ты не ответил.


список фич самого MSI не имеет никакого значения в отрыве от тулзы, которой он будет делаться (читай «Install Shield» или «WiX»)

stevejobs ★★★★☆
()
Ответ на: комментарий от simple_best_world_web_master

> Если этот левый инсталлер использует стандартное API для установки/удаления приложений

А он использует? Об этом оппонент промолчал. Ты берешься утверждать, что использует, или как?

Главное все совместимо

Да, а определение совместимости - «приложение можно удалить через контрольную панель».

tailgunner ★★★★★
()
Ответ на: комментарий от stevejobs

>> наверняка пользуешься^Wтыкаешь кнопки d IS или чем-то похожtм).

это расово-верный способ делать инсталляторы

список фич самого MSI не имеет никакого значения в отрыве от тулзы, которой он будет делаться (читай «Install Shield» или «WiX»)

Какие эталонно жалкие отмазки.

tailgunner ★★★★★
()
Ответ на: комментарий от Berluskoni

> За то, что положили новую версию в репу? или за что?

Сижу, никого не трогаю, примус починяю. И тут мне понадобилось запустить FAR. Нажимаю я на иконочку, а ТАМ КРОВЬ ГОВНО КИШКИ НОВОЕ ОБНОВЛЕНИЕ ПРИШЛО АВТОМАТИЧЕСКИ ВСЕ ПРОАПДЕЙТИЛОСЬ. После этого я откапываю диск от 1999 года с фаром и ставлю оттуда, запрещая в фаерволе все обновления (ситуация смоделирована, но я бы поступил именно так)

simple_best_world_web_master
()
Ответ на: комментарий от stevejobs

>дай мне, пожалуйста, линк хоть на один нормальный гуевый дизайнер пакетов для Убунту, где можно будет по-быстрому нафигачить эту штуку.

гуевую искать не буду, т.к. никогда не имел с этим дело. Мне консоль нравится больше, чем кнопки тыкать. А это howto, как сделать deb из сорцов.

http://ubuntuforums.org/showthread.php?t=51003

Berluskoni ★★
()
Ответ на: комментарий от tailgunner

> А он использует? Об этом оппонент промолчал. Ты берешься утверждать, что использует, или как?

Я берусь утверждать, что в менеджере приложений оно таки появляется, а следовательно минимальная интеграция в систему присутствует. Что же касается внутренней работы - понятия не имею как оно устроено, мне как пользователю этого и не нужно.

а определение совместимости - «приложение можно удалить через контрольную панель».

Что не так?

simple_best_world_web_master
()
Ответ на: комментарий от simple_best_world_web_master

>ситуация смоделирована, но я бы поступил именно так

а я бы запретил системе обновлять far и все. А если я про это забыл и но сам обновился, то откатился бы назад и опять таки запертил. и не искал бы диск 99 гв. И сидюка то у меня уже года 2-3 нету.

Berluskoni ★★
()
Ответ на: комментарий от simple_best_world_web_master

>> А он использует? Об этом оппонент промолчал. Ты берешься утверждать, что использует, или как?

Я берусь утверждать, что в менеджере приложений оно таки появляется, а следовательно минимальная интеграция в систему присутствует.

Еще один ушел в отмазки.

а определение совместимости - «приложение можно удалить через контрольную панель».

Что не так?

Не так то, что ты так и не дал гарантии, что приложение, использующее «стандартный API» (если таковой вообще существует) сможет, например, обновить приложение, поставленное через InnoSetup.

Песец. И эти люди рассуждают о динамической линковке.

tailgunner ★★★★★
()
Ответ на: комментарий от Berluskoni

> А это howto, как сделать deb из сорцов.

это плохое howto, закросспосченное более 9000 раз на всевозможных форумах, я видел уже тысячу раз.

в моей проге нет исходников на Си. Там проприетарный блоб, исходники на жаве, и список мест в файлах конфигурации которые надо поменять в зависимости от текущего состояния самих этих файлов конфигурации (т.е. патчи не покатят). И уж тем более там нет никакого configure (хотя ради лулзов можно нафигачить пустой файл =)

полученный в результате того howto пакет не умеет вообще ничего кроме копирования файлов из пакета в место назначения.

А даже если бы внезапно они там появились, Package Manager (или что там используется в убунту) всё равно не смог бы подхватить эти возможности, и пользователю пришлось бы конфигурять эти допвозможности из консоли, что недопустимо.

stevejobs ★★★★☆
()
Ответ на: комментарий от simple_best_world_web_master

>Что не так?

а то что вы как пользователь никогда не ставили на винду вижуал студию 2008, а потом не удаляли ее и все плюшки из установки\удаления. Хотя по нормальному, это должно выполнятся с помощю 1 команды, а не «нажал удалить, подождал, нажал удалить, подождал...». Еще и гуйки для удаления разные... в одной само, сходу удаляется, а в другой еще спрашивает чего-то... вобщем не стандартно ниразу!

Berluskoni ★★
()
Ответ на: комментарий от Berluskoni

Глупый пример какой. В винде другой подход к дистрибуции программ, и все это знают.

Это как если к тебе придет вендоюзер и скажет: а как скачать одним файлом одновление убунты 10.4 до убунты 10.10, типа как сервиспак для венды. Нету такого? Фууу.

Идиотизм? Идиотизм.

thesis ★★★★★
()
Ответ на: комментарий от tailgunner

> Да, а определение совместимости - «приложение можно удалить через контрольную панель».

он может правильно писать реестр, правильно писать файлы, правильно взаимодействовать со стандартными фичами вендов (типа пусков, квикланчей, авторанов...).

А то, что полученный пакет можно нормально изменить и удалить через панель управления - индикатор того, что всё работает ОК. Можно еще проверить, что ключи в реестре вписаны в нужное место, что библиотеки прописаны правильно, что в пуске и на рабочем столе появилась иконка, кучу параметров еще можно проверить.

stevejobs ★★★★☆
()
Ответ на: комментарий от Berluskoni

вот интересно, а msi вы уже сделали?

за меня это сделал производитель программы. На чем, как - не знаю. Но оно работает. Он даже для Linux это сделал, но установка идет с помощью autopackage, и это надо изменить.

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

>Он даже для Linux это сделал, но установка идет с помощью autopackage, и это надо изменить.

пусть производитель и изменит

Berluskoni ★★
()
Ответ на: комментарий от stevejobs

>> Да, а определение совместимости - «приложение можно удалить через контрольную панель».

он может правильно писать реестр, правильно писать файлы, правильно взаимодействовать со стандартными фичами вендов (типа пусков, квикланчей, авторанов...).

А может и не делать этого (мы уже знаем, что главное - это возможность удаления из контрольной панели).

А то, что полученный пакет можно нормально изменить и удалить через панель управления

...человеку. А я говорю о том. что с полученным пакетом должны уметь работать стандартные программы (сюрприз, да?). Если в венде вообще есть стандартные программы для работы с пакетами...

tailgunner ★★★★★
()
Ответ на: комментарий от Berluskoni

Ну этого нельзя решать в отрыве от самого подхода. Может быть, венда и придет когда-нибудь к системе репов, кто знает. Но пока что МС не решается даже втыкать поддержку обновления сторонних программ во WSUS.

thesis ★★★★★
()
Ответ на: комментарий от tailgunner

> Если в венде вообще есть стандартные программы для работы с пакетами...

есть, целая одна. Называется «установка и удаление». Она же занимается изменением состава пакета. Двумя постами раньше я уже говорил, что она работает. Вам надо что-то еще?

stevejobs ★★★★☆
()
Ответ на: комментарий от Berluskoni

> тогда привыкай к консоли, раз деньги платят.

нафиг не нужно. Я лучше наваяю графическую утилиту а-ля Install Shield и буду продавать ее %) Учитывая что у нее нет конкурентов (а нет ли?) - покупать будут.

stevejobs ★★★★☆
()
Ответ на: комментарий от Berluskoni

Ты прав, я никогда не удаляю установленный софт. Зачем? Правда когда у меня был винт на 400 метров, то я регулярно юзал F8 сначала в нортоне, потом в фаре. Быстро и просто. Универсально. Система не удалит какой-то msvccrt который посчитает своим, ничего не произойдет страшного.

simple_best_world_web_master
()
Ответ на: комментарий от Berluskoni

> а то что вы как пользователь никогда не ставили на винду вижуал студию 2008,

я ее постоянно ставлю (уже, кстате, вышла десятка), и еще ни разу не удалял. А зачем? =)

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

>нафиг не нужно. Я лучше наваяю графическую утилиту а-ля Install Shield и буду продавать ее %)

даже опера обновляется из репов, а если ваша программа такого уметь не будет, то, кто ее купит?

Berluskoni ★★
()
Ответ на: комментарий от stevejobs

>> Если в венде вообще есть стандартные программы для работы с пакетами...

есть, целая одна. [...] Вам надо что-то еще?

Да. Мне хотя бы dpkg, а уж за rpm я бы в ножки поклонился. Ну, простые вещи - список файлов пакета. зависимости, верификация пакетов, обновление...

tailgunner ★★★★★
()
Ответ на: комментарий от Berluskoni

> даже опера обновляется из репов, а если ваша программа такого уметь не будет, то, кто ее купит?

ты не понял. Гуй для создания деб-пакетов =) Деб-пакеты умеют обновляться из репов, чего там.

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

>ты не понял. Гуй для создания деб-пакетов =)

желаю удачи) может кому и понадобятся ваши наработки.

Berluskoni ★★
()
Ответ на: комментарий от tailgunner

> список файлов пакета.

да, это вопрос. Но есть нюансы.

1) инсталлятор оперирует не «файлами», а «изменениями». Копирование файла - всего лишь один из видов изменений. Более корректно просить не «список файлов пакета», а ченджсет, который выполняет инсталлятор в ходе каждой из операций.

2) список файлов программы может очень сильно варьироваться по ходу жизни программы. О том, какими файлами программа владеет, надо спрашивать не пакетный менеджер, а саму программу.

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

Но есть простая конвенция на расположение папок, файлов, ключей реестра, настроек, итп. Идете в program files - вот вам и файлы. Да не какой-то мистический список, а прямо папочка со всеми файлами программы.

зависимости,


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

верификация пакетов,


встроена.

обновление...


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

stevejobs ★★★★☆
()
Ответ на: комментарий от Deleted

А что, хорошая идея :}

только продавать его не надо, это было так, для красного словца.

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

Гуй для создания деб-пакетов

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

Ты можешь изменить мир, чувак!

thesis ★★★★★
()
Ответ на: комментарий от stevejobs

П.Е.С.Е.Ц.

Особенно умилило:

Нет никаких зависимостей, если есть - их нужно устранить.

То есть, например, твоей проге нужна Ява - она ее скачает, и установит для себя лично, потом еще одной проге понадобится Ява - будет вторая копия. И ты это считаешь правильным? %)

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

Мля, исскусственный интеллект в действии.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

То есть, например, твоей проге нужна Ява - она ее скачает, и установит для себя лично, потом еще одной проге понадобится Ява - будет вторая копия. И ты это считаешь правильным? %)

ну, вообше так и есть.Все таскают с собой JRE.

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

Мля, исскусственный интеллект в действии.

сначала спрашивает у сервера производителя программы, есть ли обновления. Потом говорит пользователю: на сервере есть обновления, хотим обновиться? Проверку делать при запуске программы.

stevejobs ★★★★☆
()
Ответ на: комментарий от tailgunner

То есть, например, твоей проге нужна Ява - она ее скачает, и установит для себя лично, потом еще одной проге понадобится Ява - будет вторая копия.

Вот, кстати, слабое место MSI'я - данная задача (проверка требуемых пакетов в системе) решается через костыль. Почему - не знаю.

thesis ★★★★★
()
Ответ на: комментарий от proud_anon

>А зря.

Это новое слово в программировании! не то что в линуксе :DDD

Berluskoni ★★
()
Ответ на: комментарий от stevejobs

>> Мля, исскусственный интеллект в действии.

сначала спрашивает у сервера производителя программы, есть ли обновления.

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

tailgunner ★★★★★
()
Ответ на: комментарий от thesis

> слабое место MSI'я - данная задача (проверка требуемых пакетов в системе) решается через костыль.

O_O у него что, нет списка установленных пакетов?

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

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

так ведь в каждой программе своя уникальная логика лицензирования? у кого-то апдейты платные всегда, у кого-то по подуписке, у кого-то апдейстов нет вообще (но есть релизы), у кого-то по договоренности... у кого-то апдейты вообще краденые (апдейты конфигураций для 1С =).

stevejobs ★★★★☆
()
Ответ на: комментарий от stevejobs

Makeself есть с Loki Installer. Только это исключительно для некоторых игр, чтобы с зоопарком дистрибутивов не заморачиваться - слишком узкая ниша. В общем - не прокатит.

Quasar ★★★★★
()
Ответ на: комментарий от stevejobs

stevejobs> ты не понял. Гуй для создания деб-пакетов =)

Графическая морда к checkinstall давно уже есть. Но нафига? Ни одна морда не предусмотрит все действия из консоли. А ежели ты мейнтейнер - ты просто обязан уметь работать с консолью и консольными утилитами.

Quasar ★★★★★
()
Ответ на: комментарий от stevejobs

stevejobs> ну, вообше так и есть.Все таскают с собой JRE.

ШТООООООО?????
Скачал жабопрограмму для рентгеноструктурных расчётов. Нету там никакой JRE - на сайте предлагалось скачать JRE, и поставить. Что я сделал не так?

Quasar ★★★★★
()
Ответ на: комментарий от stevejobs

stevejobs> сначала спрашивает у сервера производителя программы, есть ли обновления. Потом говорит пользователю: на сервере есть обновления, хотим обновиться? Проверку делать при запуске программы.

На каждый пакет своя система управления пакетами? Бред!

Quasar ★★★★★
()
Ответ на: комментарий от simple_best_world_web_master

> Сижу, никого не трогаю, примус починяю. И тут мне понадобилось запустить FAR. Нажимаю я на иконочку, а ТАМ КРОВЬ ГОВНО КИШКИ НОВОЕ ОБНОВЛЕНИЕ ПРИШЛО АВТОМАТИЧЕСКИ ВСЕ ПРОАПДЕЙТИЛОСЬ. После этого я откапываю диск от 1999 года с фаром и ставлю оттуда, запрещая в фаерволе все обновления (ситуация смоделирована, но я бы поступил именно так)

Какая глупость. К примеру в любом нормальном дистрибутиве линукса автоматическое обновление не происходит пока ты ему не скажешь так делать. А если тебе нужно обновить все, кроме определенного пакета, никто не мешает тебе заморозить эту версию. Такое ощущение, что ты вообще не в курсе как в цивилизованных ОС происходит управление пакетами и считаешь что в венде оно самое лучшее.

pevzi ★★★★★
()
Ответ на: комментарий от stevejobs

> я ее постоянно ставлю (уже, кстате, вышла десятка), и еще ни разу не удалял.

Не понял. У тебя установлена куча копий студии или ты её удалял переустановкой системы?

pevzi ★★★★★
()
Ответ на: комментарий от stevejobs

> список файлов программы может очень сильно варьироваться по ходу жизни программы. О том, какими файлами программа владеет, надо спрашивать не пакетный менеджер, а саму программу.

Программа не должна самовольничать. Она по определению не должна самостоятельно изменять файлы, принадлежащие системе. Вот отсюда и проблемы. Каждая программа делает что сама хочет - вот и начинается беспорядок с установками, обновлениями и удалениями.

pevzi ★★★★★
()
Ответ на: комментарий от stevejobs

> сначала спрашивает у сервера производителя программы, есть ли обновления. Потом говорит пользователю: на сервере есть обновления, хотим обновиться? Проверку делать при запуске программы

То есть автор каждой программы должен реализовывать в своем продукте кусок пакетного менеджера? Отличный подход, бро.

pevzi ★★★★★
()
Ответ на: комментарий от pevzi

> Такое ощущение, что ты вообще не в курсе как в цивилизованных ОС происходит управление пакетами и считаешь что в венде оно самое лучшее.

Самое лучшее управление пакетами - ручное. Работает - не трогай.

simple_best_world_web_master
()
Ответ на: комментарий от pevzi

> Тебя связали, приложили нож к горлу и заставляют обновлять систему?

Если бы не возможность статической линковки, которую тут все люто ненавидят - да, фактически это и делают. Благо можно слить статический бинарник и положить большой орган на все дыры/зависимости и прочие проблемы обновлений.

simple_best_world_web_master
()
Ответ на: комментарий от simple_best_world_web_master

>Благо можно слить статический бинарник и положить большой орган...

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

annulen ★★★★★
()
Ответ на: комментарий от stevejobs

>ну, вообше так и есть.Все таскают с собой JRE.

только если в вашей венде. К счастью, версии JRE ну очень хорошо совместимы между собой

annulen ★★★★★
()
Ответ на: комментарий от stevejobs

>сначала спрашивает у сервера производителя программы, есть ли обновления. Потом говорит пользователю: на сервере есть обновления, хотим обновиться? Проверку делать при запуске программы.

вообще-то, это во многих линуксовых программах есть. В обход пакетного менеджера конечно не обновляемся

annulen ★★★★★
()
Ответ на: комментарий от thesis

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

В 99% случаев они не поставятся - потребуются зависимости, перехерачится половина системы. Если дебы от Ubuntu 9.10 не подходят к Ubuntu 9.04, о какой установке домохозяйкой можно говорить?

xintrea
() автор топика
Ответ на: комментарий от tailgunner

> То есть, например, твоей проге нужна Ява - она ее скачает, и установит для себя лично, потом еще одной проге понадобится Ява - будет вторая копия. И ты это считаешь правильным?

Именно так. Одной проге нужна одна версия явы, другой - другая.

В топике речь идет как раз о том, как при неизбежном наличии копий (а для качественного софта без этого не обойтись) уменьшить нагрузку на систему.

xintrea
() автор топика
Ответ на: комментарий от xintrea

>> То есть, например, твоей проге нужна Ява - она ее скачает, и установит для себя лично, потом еще одной проге понадобится Ява - будет вторая копия. И ты это считаешь правильным?

Именно так. Одной проге нужна одна версия явы, другой - другая.

Если ты не понял, объясняю - речь шла об одной и той же версии Явы.

речь идет как раз о том, как при неизбежном наличии копий (а для качественного софта без этого не обойтись) уменьшить нагрузку на систему.

Если бы ты был немного грамотнее, ты бы развил идею дальше: каждая прога тащит с собой ОС и запускается в отдельной VM, а копии памяти схлопываются чем-то вроде KSM.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

> Если бы ты был немного грамотнее, ты бы развил идею дальше: каждая прога тащит с собой ОС и запускается в отдельной VM, а копии памяти схлопываются чем-то вроде KSM.

Ну ос собой таскать - это излишество. А вот запускать прогу в отдельной VM - так и делают в сингулярити. Как бы на передовой прогресса, в отличие от линуха.

xintrea
() автор топика
Ответ на: комментарий от tailgunner

> А вот запускать прогу в отдельной VM - так и делают в сингулярити.

Какой ты всё-таки дремучий.


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

xintrea
() автор топика
Ответ на: комментарий от xintrea

>запускать прогу в отдельной VM - так и делают в сингулярити

/me представил типичный bash-скрипт, наполненные grep'ом, sed'ом и awk'ом как минимум на четверть и ужаснулся от того, как такое будет работать, если «каждый процесс запускать в отдельной виртуальной машине».

Мальчег, худей срочно!

linuxfan
()
Ответ на: комментарий от xintrea

> А цивилизованный tailgunner не знает

Вежливый tailgunner за ненадобностью забыл больше, чем ты знаешь.

что VM бывают разные

Давай цитату из статьи по Singularity, в которой говорится об использовании отдельной VM (любой природы - аппаратной или программной) для каждого приложения.

tailgunner ★★★★★
()
Ответ на: комментарий от linuxfan

> представил типичный bash-скрипт, наполненные grep'ом, sed'ом и awk'ом как минимум на четверть и ужаснулся от того, как такое будет работать, если «каждый процесс запускать в отдельной виртуальной машине».

Это ты tailgunner расскажи. Он предложил вместо избирательной загрузки использовать виртуалку.

xintrea
() автор топика
Ответ на: комментарий от tailgunner

> Давай цитату из статьи по Singularity, в которой говорится об использовании отдельной VM (любой природы - аппаратной или программной) для каждого приложения.

Выполнение управляемого кода в C#-среде является запуском программы в С# виртуальной машине. Можешь считать это программной VM.

xintrea
() автор топика
Ответ на: комментарий от xintrea

>> Давай цитату из статьи по Singularity, в которой говорится об использовании отдельной VM (любой природы - аппаратной или программной) для каждого приложения.

Выполнение управляемого кода в C#-среде является запуском программы в С# виртуальной машине.

Меня не интересуют твои личные аналогии. Давай цитату и ссылку.

Можешь считать это программной VM.

Я считаю это единой VM для всех приложений.

tailgunner ★★★★★
()
Ответ на: комментарий от xintrea

>Выполнение управляемого кода в C#-среде является запуском программы в С# виртуальной машине. Можешь считать это программной VM.

Меня завораживает твоя волшебная толстота. Ну просто не могу не заметить, что надо быть упертым кликомышкоюзером, чтобы не понимать разницы между интерпретатором (ок, .NET — компилятор байткода) байткода, который ты имел в виду, и виртуальной машиной, эмулирующей железо, о которой подумали остальные.

linuxfan
()
Ответ на: комментарий от stevejobs

> Кстати, несмотря на это Inno всё равно справляется с заявленными фичами. При этом проги, установленные Inno ставятся через setup.exe и удаляются через панель управления, так что всё ОК.

Зависит от скриптописателя. Запросто может не удалить конфиг, лог и прочий мусор. А может и вовсе куски своего же говна оставить.

andreyu ★★★★★
()
Ответ на: комментарий от thesis

>Это как если к тебе придет вендоюзер и скажет: а как скачать одним файлом одновление убунты 10.4 до убунты 10.10

Ты главное про гемморой с обновлением программ под вендой не вспоминай. Next-Next-Next просто задолбаешся щелкать.

FiXer ★★☆☆☆
()
Ответ на: комментарий от tailgunner

Я не совсем об этом. Просто если ты хочешь, чтобы твой установочный пакет требовал наличие в системе, например, дотнета2сп1, то это делается уже не средствами MSI. Логика, проверяющая и требующая зависимости, выносится в exeшник, который удовлетворяет зависимости и потом запускает msiйник.

Возможно, на это есть какие-то причины, я не интересовался.

thesis ★★★★★
()
Ответ на: комментарий от FiXer

Мы уже вспомнили этот «геморрой».

Next-Next-Next

Эт зависит от сложности пакета и прихоти его создателя. Поставь на люникс Zimbra, например, или VMWare Server. Поставь на венду гуглохром. Сравни сложность процесса.

Далее, у msiexec.exe ВНЕЗАПНО тоже есть опции командной строки, чувак.

thesis ★★★★★
()
Ответ на: комментарий от annulen

>> Одной проге нужна одна версия явы, другой - другая.

что же у вас за ява такая?


Да что у него вообще за софт такой, который постоянно перестает работать при обновлении библиотек?

pevzi ★★★★★
()
Ответ на: комментарий от linuxfan

> надо быть упертым кликомышкоюзером, чтобы не понимать разницы между интерпретатором (ок, .NET — компилятор байткода) байткода, который ты имел в виду, и виртуальной машиной, эмулирующей железо, о которой подумали остальные.

Машинный код является байткодом. Скомпилированный ява-код тоже байткод. Скомпилированный .NET-код тоже байткод. Все эти байткоды выполнятся на исполнительном устройстве. Машинный - на микропроцессоре, Ява и Нет - внутри своей среды, в которой тоже есть свой «микропроцессор» - регистровая или стековая машина.

Напомню, что есть даже устойчивое словосочетание - «виртуальная машина Java». Оно появилось не на пустом месте.

xintrea
() автор топика
Ответ на: комментарий от thesis

>Далее, у msiexec.exe ВНЕЗАПНО тоже есть опции командной строки, чувак.

Хорошо... как в венде АВТОМАТИЧЕСКИ обновить нужные мне программы средствами венды? Шоб оно автоматически вывело список всех доступных обновлений, я мог выбрать нужное... и ушел пить чай, а после бы получил полностью раочую систему без Next-Agreed-Next-Next-Finish.

FiXer ★★☆☆☆
()
Ответ на: комментарий от FiXer

>я мог выбрать нужное... и ушел пить чай, а после бы получил полностью раочую систему без Next-Agreed-Next-Next-Finish.

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

annulen ★★★★★
()
Ответ на: комментарий от FiXer

И шо делать с прогами, которые не юзают msiexec :(

И вообще если у тебя парк машин на венде, как их вообще можна обновлять всех одним скопом (не гуглил но подореваю гемморой до наступления девственности)?

FiXer ★★☆☆☆
()
Ответ на: комментарий от annulen

>неа, ты должен купить лицензии на апгрейд каждой программы. или обновления должны прямо с пиратской бухты каачаться?

Щито? А если у меня в основном freeware и opensource?

FiXer ★★☆☆☆
()
Ответ на: комментарий от pevzi

>Да что у него вообще за софт такой, который постоянно перестает работать при обновлении библиотек?

ABI-то как раз все ломают периодически

annulen ★★★★★
()
Ответ на: комментарий от annulen

> неа, ты должен купить лицензии на апгрейд каждой программы. или обновления должны прямо с пиратской бухты каачаться?

Да как бы под вендой дофига свободного и бесплатного софта (:

pevzi ★★★★★
()
Ответ на: комментарий от FiXer

> И вообще если у тебя парк машин на венде, как их вообще можна обновлять всех одним скопом (не гуглил но подореваю гемморой до наступления девственности)?

Обновляться не нужно, нужно сидеть с дырками и работать со старым софтом, это круче.

pevzi ★★★★★
()
Ответ на: комментарий от FiXer

>Ну и как под вендой обновить софт от мс?

купить диск с новым софтом и запустить setup.exe

annulen ★★★★★
()
Ответ на: комментарий от pevzi

>Обновляться не нужно, нужно сидеть с дырками и работать со старым софтом

исправления дырок обычно не связаны с поломкой ABI

annulen ★★★★★
()
Ответ на: комментарий от FiXer

хотя вру, в последних виндах апдейтер винды умеет докачивать патчи для установленных мсовских продуктов

annulen ★★★★★
()
Ответ на: комментарий от FiXer

Какой там процент десктопов под слакой, напомни, я забыл.

А, и какой процент сетей уровня предприятия работают под слакой, пожалуйста, если не затруднит.

thesis ★★★★★
()
Ответ на: комментарий от thesis

>Какой там процент десктопов под слакой, напомни, я забыл.

Ты неправильно распарсил.

купить диск с новым софтом и запустить setup.exe


Я кончил и закурил...

FiXer ★★☆☆☆
()
Ответ на: комментарий от xintrea

>Напомню, что есть даже устойчивое словосочетание - «виртуальная машина Java». Оно появилось не на пустом месте.

Напомню тебе, что есть понятия JVM и .NET CLR, которые обозначают эти виртуальные машины. А если говорится «виртуальная машина» без всего, это уже вмварью попахивает. По крайней мере, «C# виртуальная машина» — это что-то непонятное, а вот сказал бы .NET CLR, все бы поняли.

linuxfan
()
Ответ на: комментарий от FiXer

купить диск с новым софтом и запустить setup.exe

Это откуда и к чему? Такая новая форма слива? Спасибо, это любопытно.

thesis ★★★★★
()
Ответ на: комментарий от FiXer

> как в венде АВТОМАТИЧЕСКИ обновить нужные мне программы средствами венды? Шоб оно автоматически вывело список всех доступных обновлений, я мог выбрать нужное... и ушел пить чай, а после бы получил полностью рабочую систему

Если вдруг в винде появится АВТОМАТИЧЕСКОЕ обновление программными средствами винды, это будет начало конца микрософта. Ибо после автоматического обновления получить полностью рабочую систему невозможно. Ибо вместе с обновлениями на любой системе - хоть винда, хоть линух, пользователь автоматически получает наслабый такой набор новых галлюнов.

xintrea
() автор топика
Ответ на: комментарий от FiXer

> как в венде АВТОМАТИЧЕСКИ обновить нужные мне программы средствами венды? Шоб оно автоматически вывело список всех доступных обновлений, я мог выбрать нужное... и ушел пить чай, а после бы получил полностью рабочую систему

Если вдруг в винде появится АВТОМАТИЧЕСКОЕ обновление программными средствами винды, это будет начало конца микрософта. Ибо после автоматического обновления получить полностью рабочую систему невозможно. Ибо вместе с обновлениями на любой системе - хоть винда, хоть линух, пользователь автоматически получает наслабый такой набор новых галлюнов.

xintrea
() автор топика
Ответ на: комментарий от xintrea

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

Мда, в каком мире ты живешь?

pevzi ★★★★★
()
Ответ на: комментарий от xintrea

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

А можно вопрос?
Какой у тебя дистрибутив?

proud_anon ★★★★★
()
Ответ на: комментарий от xintrea

>Debian 5.0.4 Stable

А... Debian Stable. Тогда понятно, почему галлюны при обновлении. Ты, надо полагать, для обновления вынужден либо ставить все сам, либо переходить на testing или sid, потому и огребаешь.

Попробуй какой-нибудь дистрибутив вроде Ubuntu. Галюны будешь огребать не чаще раза в полгода при переходе с одной версии дистрибутива на другую. И то галюнов ограниченное количество. Или любой другой дистрибутив, который предоставлвяет и свежий софт, и не особенно много багов.

Хотя, конечно, это большая проблема, что в линуксе приходится если уж обновлять, то сразу всю систему (или пользоваться бэкпортами, или собирать самому), но и ситуация «я набрал aptitude safe-upgrade, и все равзвалилось» тоже возникает совсем не часто.

proud_anon ★★★★★
()
Ответ на: комментарий от proud_anon

> Попробуй какой-нибудь дистрибутив вроде Ubuntu.

Немогу, Debian Stable - корпоративный стандарт в моей конторе. А мне дома приходится часто работать (плюс, у нас свое железо). Если вдруг что-то, отлаженное на Ubuntu будет глючить и выпендриваться в Lenny, я буду крайним. А такие случаи бывали и не раз - и поддержка сети имеет особенности, и USB стек перелопачивают из ядра в ядро, и X-сервер по-разному окна может обрабатывать, сюрпризов много. Поэтому отказались от разработки «кому в чем нравится», приняли стандарт, и теперь лишних вопросов не возникает.


Хотя, конечно, это большая проблема, что в линуксе приходится если уж обновлять, то сразу всю систему (или пользоваться бэкпортами, или собирать самому)


Вот. А какие методы (пусть даже самые фантастические) ты можешь предложить для решения этой проблемы?

xintrea
() автор топика
Ответ на: комментарий от xintrea

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

похоже ты бредишь

давай-ка конкретный пример галюна (например, последний, чтобы легче вспомнить) при апгрейде Debian 5 Stable (именно при upgrade, а не dist-upgrade)

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от annulen

> и чем же NSIS лучше InnoSetup?

тем, что он есть пакетом дебиана

можно полностью делать инсталляшку под винду (включая компиляцию и пакетирование) под линуксом

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

>можно полностью делать инсталляшку под винду (включая компиляцию и пакетирование) под линуксом

InnoSetup отлично работает в вайне, и пользоваться им проще (если не использовать CPack из CMake, который дает очень мало свободы)

А вообще есть нативный InstallJammer, которым можно и для никсов инсталляторы делать.

annulen ★★★★★
()
Ответ на: комментарий от xintrea

>А какие методы (пусть даже самые фантастические) ты можешь предложить для решения этой проблемы?

Боюсь, что на данный момент единственное, что лично я могу придумать - это инсталлятор, который будет собирать софт прямо на машине. Имеющий хорошую эвристику и умеющий обращатья к какой-нибудь БД, установленной на машине.

proud_anon ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

> давай-ка конкретный пример галюна (например, последний, чтобы легче вспомнить) при апгрейде Debian 5 Stable (именно при upgrade, а не dist-upgrade)

Ты не понял. Когда дело касается оборудования и выбирается стандарт на систему, то это означает, что конечный продукт будет работать на выбранной системе. Поэтому я и написал не просто «Debian 5 Stable», а «Debian 5.0.4 Stable». Это значит что для конечного продукта в качестве образа операционки будет использоваться Debian 5.0.4. Не 5.0.4 с апдейтами, а именно 5.0.4. Поэтому ни о каких upgrade речи не идет.

А по поводу обновений, это же классика жанра.

Когда сидел на Ubuntu, после обновления иксы не поднялись. Шаманил долго, оказалось какой-то процесс отвечащий за шрифты перестал запускаться при старте системы. Grub стал глючить и не давать системе запуститься, выдавая странные ошибки 16, 28, раз в две недели. Перестал работать инфракрасник через LIRC, пришлось пересобирать модуль, причем той же версии что и был в бинарном пакете. Заработал. Перестали инититься нестандартные USB-устройства. Как лечили - отдельная песня. Стал тормозить OpenGL. На анимациях видно, что на эране все происходит с 0.25-0.3 сек задержкой. Да и картинка стала не совсем «сглаженой», а более «рябой». Побороть задержку помогла пересборка драйверов nvidia, а картинка как была рябой, так и осталась. Видимо где-то в глубинах какие-то настройки по-дефолту сменились. X-сервер стал почему-то отправлять иногда два сигнала в момент сворачивания окна - о том, что окно свернуто и окно развернуто. В результате, иногда программы «запирались» - то есть, нельзя свернуть (сразу разворачивается) или развернуть (сразу сворачивается). Появилась блокировка размеров порта вывода OpenGL, то есть, нельзя было сделать окно размером больше чем разрешение монитора. Уже не помню как решили. Да, и звук тоже стал выпендриваться. Если раньше была возможность сделать незаметной латентность путем уменьшения размеров буфера, то после обновления при малом размере буфера стали слышны щелчки. Сетка стала по-другому себя вести, если раньше при выключении ADSL модема сразу исчезал if интерфейс, то после обновления он продолжал висеть только данные не передаются, незнаю что там намутили. Ну и куча прочих мелких пакостей, которые щас уже не вспомню. А! Конечно, wxWidgets. Новые обновления - новые глюки в интерфейсе. Например, появляется модальное окно с полем ввода, набираешь текст, а он печатается в предыдущем активном текстовом поле родительского окна. При копировании текста из лог-полей (в которых выключено редактирование), текст после выделения исчезает. Чтоб снова увидеть - надо вверх-вниз покрутить. Может быть, хомякам, которые только браузер и проигрыватель пользуют, этих глюков не видно. Но когда ты полноценно пользуешься системой, такие постоянные галлюны достают. Потому что вместо того чтоб работать и делать что-то новое, ковыряешь и выправляешь новые глюки.

xintrea
() автор топика
Ответ на: комментарий от annulen

> я еще понимаю, если бы сказали про InstallJammer, который не только для оффтопика

А зачем под тем же Linux'ом нужны какие то инсталяторы?

andreyu ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

> > и чем же NSIS лучше InnoSetup?

тем, что он есть пакетом дебиана

можно полностью делать инсталляшку под винду (включая компиляцию и пакетирование) под линуксом



Круто, в Gentoo тоже есть. Я и не знал. Теперь от билд-машины под виндой можно полностью отказаться.

andreyu ★★★★★
()
Ответ на: комментарий от xintrea

То, что в Убунте бывают мощные глюки — я верю, наслышан о них (сам убунту не юзаю).

А вот с практической точки зрения интересно, могут ли быть глюки при переходе например с дебиан 5.0.4 до 5.0.5 (через apt-get upgrade).

Мой опыть юзания дебиана (примерно с 2000 года) выявил только один глюк, причем он был связан именно с dist-upgrade. То есть раньше initrd не создавался, потом начал создаваться — и dist-upgrade прошел нормально, НО после, наверно через год, при обычном upgrade че-то случилось. Это проявилось только на одной машинке.

Так что если словишь глюки при переходе например с дебиан 5.0.4 до 5.0.5 (через apt-get upgrade) — напиши, интересно будет почитать.

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от andreyu

я же не собираюсь доверять распространение своего продукта красноглазикам. Пользователь обновит дистрибутив, а мой продукт будет работать. Пользователь поменяет дистрибутив на другой, а мой продукт будет работать. Пользователю не нужно иметь права рута, так как инсталлятор может поставить его хоть в $HOME, хоть в /tmp

annulen ★★★★★
()
Ответ на: комментарий от andreyu

>Это и есть один из плюсов NSIS.\

я не собираюсь тратить время на изучение какого-то стремного язычка, больше не для чего не пригодного

annulen ★★★★★
()
Ответ на: комментарий от annulen

> я же не собираюсь доверять распространение своего продукта красноглазикам.

Я, как пользователь, не собираюсь доверять вам. Фанатизм в любом его проявлении вреден для здоровья.

Пользователь обновит дистрибутив, а мой продукт будет работать. Пользователь поменяет дистрибутив на другой, а мой продукт будет работать. Пользователю не нужно иметь права рута, так как инсталлятор может поставить его хоть в $HOME, хоть в /tmp


О да, это заслуга инсталлятора, а не продукта.

andreyu ★★★★★
()
Ответ на: комментарий от annulen

> >Это и есть один из плюсов NSIS.

я не собираюсь тратить время на изучение какого-то стремного язычка, больше не для чего не пригодного


Я не настаиваю. Со временем жизнь все расставит на свои места.

andreyu ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.