metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2009-05-09 10:00 am

Ухухухуху

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[identity profile] jek-hor.livejournal.com 2009-05-09 09:16 am (UTC)(link)
Ну тогда --- тянуть все нужные библиотеки с собой (как в винде :)), объясняя системе через переменные 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

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

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