metaclass: (Default)
[personal profile] metaclass
"Брось утку в воду и надейся что она поплывет". Действует исключительно на утках, которые инстинктивно знают как плавать, а так же на начинающих линупсоидах, умеющих пользоваться гуглом и man(и то с трудом-с).

Либы поставил в /usr/lib, ldconfig, оказывается, перебивает линки на последнюю текущую версию. Забавная идея, но требует веры в то, что в новых версиях либ бинарный API только расширяется.
Теперь требует libc.so.6 (GLIBC_2.4). Что-то руками ставить оное мне совершенно не хочется, как бы не поломать нахрен полсистемы.

PS: таки чтобы отвязать приложение от новой glibc, нужно пересобрать QT с опцией QT_NO_INOTIFY, и убрать еще там откуда-то опцию stack-protector. Жаль, сейчас нету времени толком разбираться с пересборкой QT и прочей ересью. configure утверждает, что при пересборке make поместит бинарники не туда, куда их поставил инсталлер qtsqk, так что в дебри пока не полезу.

Date: 2009-05-09 07:58 am (UTC)
From: [identity profile] g-rub.livejournal.com
Т.е. оно хочет даунгрейда? У меня вроде в lenny 2.7 версия (по крайней мере версия пакета)

Date: 2009-05-09 08:18 am (UTC)
From: [identity profile] metaclass.livejournal.com
Не, это я билдил в ленни, а запускаю на этче ради интереса.

Date: 2009-05-09 08:51 am (UTC)
From: [identity profile] jek-hor.livejournal.com
Ну так сам себе злобный антропоморфный дендромутант. А за установку файлов не из пакетов в что-то отличное от /usr/local & /var/local надо бить канделябром.

Date: 2009-05-09 09:05 am (UTC)
From: [identity profile] metaclass.livejournal.com
Я уже понял, что в линуксе программы не пишут и не распространяют, а только берут готовые из репозиториев, "где все есть".

Вопрос именно в том, чтобы поставить программу достаточно независимо от системы и чтобы она заработала. На данный момент мне как бы не совсем интересно влезать в тонкости пакетов и их менеджеров, мне интересно, имеет вообще смысл заниматься этим делом или нет - если для того, чтобы поддерживать 1% пользователей на линуксах, придется тратить больше 50% времени на изучение различных дистрибутивов, их менеджеров пакетов и тонкостей организации файловой системы - это совершенно нерентабельно.

Date: 2009-05-09 09:08 am (UTC)
From: [identity profile] permea-kra.livejournal.com
Линковать всё что можно статически. Благо компилер умеет.

Date: 2009-05-09 09:18 am (UTC)
From: [identity profile] jek-hor.livejournal.com
GPL не даст. Линковка статически = заражение GPL-ом.

Date: 2009-05-09 09:21 am (UTC)
From: [identity profile] permea-kra.livejournal.com
А нежелание GPL - проблемы вендора.

Впрочем... Как там у xulrunner с лицензиями под XPCOM? В смысле, может оформить функциональность как плагин к чему-нибудь?

Date: 2009-05-09 09:32 am (UTC)
From: [identity profile] metaclass.livejournal.com
Там, говорят, сначала сам QT статически перебилдить придется.

Date: 2009-05-09 11:34 am (UTC)
From: [identity profile] permea-kra.livejournal.com
Кстати, а почему qt ?

Date: 2009-05-09 03:08 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Прога с использованием QtCreator написана. Т.к. это оказалось на данный момент самым гуманным кроссплатформенным средством разработки.

Date: 2009-05-09 09:10 am (UTC)
From: [identity profile] g-rub.livejournal.com
Если грубо и грязно -- то пишется makefile, в котором делается цель make install, раскладывающая либы куда надо.

Что касается пакетных менеджеров -- тратится пара вечеров на то, чтобы изучить, как делаются deb и RPM (подсказка -- они смогут использовать уже прописанный make install), и один раз пишутся спекфайлы, из которых все пакеты будут собираться.

Но это все вне контекста конкретной задачи, а просто "общая теория на пальцах".

Date: 2009-05-09 09:16 am (UTC)
From: [identity profile] jek-hor.livejournal.com
Ну тогда --- тянуть все нужные библиотеки с собой (как в винде :)), объясняя системе через переменные LD_*, где их искать. Google Earth так и делает, например:

jek@jeknote:~/google-earth$ ls *.so | wc -l
41

jek@jeknote:~/google-earth$ cat googleearth
...
LD_LIBRARY_PATH=.:${GOOGLEEARTH_DATA_PATH}:${LD_LIBRARY_PATH}
export LD_LIBRARY_PATH

Date: 2009-05-09 09:34 am (UTC)
From: [identity profile] metaclass.livejournal.com
Вот и гугл и qt-creator следуют такой же идее - "от системы и окружения зависеть не хотим".
Надо будет попробовать с LD_LIBRARY_PATH, хотя пока не получилось, что-то там еще с зависимостями не так.
Взять что ли в скрипт ldd для отладки добавить

Date: 2009-05-10 07:51 am (UTC)
From: [identity profile] d4s.livejournal.com
гыгы ;-)
апофиоз идеи - распространять свое собственное полноценное окружение со всеми необходимыми либами и настройками, а для запуска использовать chroot ;-)
для необходимых каталогов - пробрасывать их внутрь контейнера через "mount --bind"
делал так для спецефического софта, жестко привязанного к определенному дистрибутиву

Date: 2009-05-09 09:04 am (UTC)
From: [identity profile] theiced.livejournal.com
Ну сейчас вам бебианисты аписнят что этча нет, ибо уже есть ленни. Мне не далее как вчера на вопрос как в етче сделать вот это и вот это (ибо есть сервак с этчем, историческое наследие, скоро будет заменено на что нить с чем можно работать, обновлять его не то что бы страшно - а есть полная уверенность что при этч -> ленни всё поломается нахуй) мне туча совсем разных бебианистов именно так и говорила. Что то вроде:

- Обновись до ленни
- Ну не могу - всё поломается
- Не не не - ничего не поломается
- Гарантии дадите, денежные?
- Не - гарантий не дадим но ничего не поломается
- А не обновляясь никак?
- Не - тока обновится

Фанатики...

Date: 2009-05-09 09:12 am (UTC)
From: [identity profile] g-rub.livejournal.com
Айсед, ну открой же уже наконец истину, с чем ты теперь работаешь на новой работе, что столь совершенно, и по сравнению с чем дебиан сосет не разгибаясь.

Date: 2009-05-09 09:13 am (UTC)
From: [identity profile] g-rub.livejournal.com
И кстати, что именно нужно было сделать в этче?
И кстати, для кого пишутся release notes, в которых как раз таки и рассказывается, что может поломаться, а что нет, и на что обращать внимание при апгрейде?

Date: 2009-05-09 07:58 am (UTC)
From: [identity profile] ykaliuta.livejournal.com
если это не так, soname должен меняться.

Date: 2009-05-09 08:03 am (UTC)
From: [identity profile] rssh.livejournal.com
Ой - это как-то неправильно. Полсистемы поломаешь. Если у вас линукс более ранний, чеи ьбыло скомпилированно то, что хочешь поставить - то ой.
Если более поздний - есть пакаджи libcompact

Date: 2009-05-09 08:20 am (UTC)
From: [identity profile] metaclass.livejournal.com
О блин, жопа нечеловеческая. Под виндами у меня собранное на WinXP запускается на 98, если не использовать новые функции из winapi.
Предполагаю, что все таки какой-то сектантский метод запуска должен быть.

Date: 2009-05-09 08:45 am (UTC)
From: [identity profile] rssh.livejournal.com
В VirtualBox или Хen разве-что :(
//В Линуксе все наоборот: есть секстанские способы компиляции что бы оно на старых системах работало.

Date: 2009-05-09 08:56 am (UTC)
From: [identity profile] jek-hor.livejournal.com
Есть --- собрать всё найух статически :) Многие вендоры-проприетарщики делают либо так, либо тянут за собой пол-системы и сгружают всё в /opt/

Date: 2009-05-09 08:58 am (UTC)
From: [identity profile] jek-hor.livejournal.com
Но статическая сборка = проблемы с лицензиями.

Date: 2009-05-09 10:40 am (UTC)
From: [identity profile] dottedmag.livejournal.com
Под линуксом аналогично. Но кто-то-таки взял и поиспользовал новые функции. См. ниже про диагностику.

Date: 2009-05-09 10:38 am (UTC)
From: [identity profile] dottedmag.livejournal.com
Если покажешь сюда `objdump -x $prog | grep GLIBC_' - станет понятно, за что там GLIBC_2.4 зацепился

Date: 2009-05-09 04:35 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Это, как оказывается, не сама прога, это Qt 4.5.5 тянет за собой новый glibc:
inotify_add_watch@@GLIBC_2.4
inotify_init@@GLIBC_2.4
inotify_rm_watch@@GLIBC_2.4
__stack_chk_fail@@GLIBC_2.4

Date: 2009-05-09 06:49 pm (UTC)
From: [identity profile] kiryl.livejournal.com
Думаю, что тебе inotify нах не сдался. А __stack_chk_fail, должен уйти после пересбоки qt.

Таково быть не должно.

Date: 2009-05-09 10:46 am (UTC)
From: (Anonymous)
Вы где-то используете функцию, которая есть в gnu libc начиная с версии 2.4, но отсутствует в более ранних версиях. Посмотреть что, и каких версий тянется, можно, сказав readelf -s на бинарник.

Date: 2009-05-09 10:50 am (UTC)
From: [identity profile] zamotivator.livejournal.com
Эта тема была перетёрта тысячу раз.
В общем так: пакетный миенеджер - самый серьёзный для меня аргумент ОСТАВАТЬСЯ на линуксе. Первое же время я с ним бодался, да. Не зря бодался. Да и в сборке пакета ни-че-го архисложного нету. http://www.debian.org/doc/maint-guide/index.ru.html

Date: 2009-05-09 01:44 pm (UTC)
From: [identity profile] kiryl.livejournal.com
Правильный вариант -- сделать пакеты под все дистрибутивы встречающиеся у закащиков.

Date: 2009-05-09 03:11 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Это понятно, что для реального деплоймента придется делать пакеты. Вопрос в том, если моя прога тянет за собой новый glibc - не поломает ли она что нибудь у клиента, т.к. реализация совместного хранения либ разных версий, судя по тому что я понял, таки не подразумевает правильное разруливание зависимостей.

Date: 2009-05-09 03:45 pm (UTC)
From: [identity profile] inhate.livejournal.com
Не надо тянуть за сабой саму последнюю версию всего.

Расказы о "тысячах собираемых пакетов" - вранье, по сути требуется сборка под 2 версии libc - ту, которая в текущем RHEL и ту, которая в предыдущем.

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

А вообще - поставляте Xen-образ и все - клиенту совсем не надо знать, что за linux внутри.

Date: 2009-05-09 04:23 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Последнюю версию glibc за собой тянет сам Qt вроде.

Date: 2009-05-09 05:45 pm (UTC)
From: [identity profile] inhate.livejournal.com
Вот кстати еще одна проблема пост-вендовая - хвататься за самые распоследние версии библиотек. Оно вам _точно_ надо?
Т.е. есть ли рациональное обоснование использованию Qt 4.5 vs. 4.2 какого-нибудь?

Date: 2009-05-09 06:11 pm (UTC)
From: [identity profile] metaclass.livejournal.com
Берется, качается qtsqk с сайта троллей, с главной страницы. Ставится. Получаем 4.5.5 qt c зависимостями от glibc_2.4.
Очевидно, что если у меня цель "проверить пригодность этого для продакшена" - надо брать то, что лежит на самом виду, а не начинать заранее разбираться "а не поискать ли нам версию на 3 цифры раньше на всякий случай".

Кстати, из таких вот мелочей и складывается ситуация, что под линукс мы имеем то что имеем - срань господню в плане выбора end-user софта. Я посмотрел бы, в каждой жопе были бы вендоры софта для разработки, если бы у них билд и деплоймент так зависел от произвольных действий гиков над базовыми либами. "А на прошлогодней винде наш софт не работает, потому что мы его скомпилировали на системе с новыми хидерами для kernel32.dll"

Date: 2009-05-09 06:39 pm (UTC)
From: [identity profile] kiryl.livejournal.com
Посмотри objdump'ом, что именно хочет qt из glibc. Я подозреваю, что простая пересборка qt с более старой glibc поможет.

Date: 2009-05-10 08:02 am (UTC)
From: [identity profile] inhate.livejournal.com
Ребе, привыуните к простой мысли: софт на сайте производителя предназначется для создателей дистрибутивов и разработчиков этого софта. Если вы решили поиграться в _ЭТИ_ игры - так надо об этом исказать. Дальше уже можно и форкнуть Qt, и LD_PRELOAD и т.п. - только это уже ни разу не прикладное программирование....
В целом вы гребете портив течения - вместо того, чтобы сделать программу нормальным, совместимым образом - вы пытаетесь сделать свой собственный дистрибутив в дистрибутиве.

Date: 2009-05-10 11:17 am (UTC)
From: [identity profile] metaclass.livejournal.com
Софт на сайте производителя предназначен исключительно для тех целей для которых я его использовал - скачать и начать разрабатывать софт с его использованием.
То, что полученный софт при этом не работает на старых дистрибутивах - очевидная недоработка троллей и следствие линуксового зоопарка.
Я то уже знаю, как с этим делом бороться, чтобы оно получилось совместимым, но займусь этим попозже, на сейчас для оценки перспектив мне достаточно. "Могло быть и хуже", ага :)

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 26th, 2025 10:01 pm
Powered by Dreamwidth Studios