Некоторые кодеры очень не любят (не умеют?) читать документацию. По этому пишут программы, основываясь на коде из всяких примеров в книжках. Тем самым создавая не только кривой софт, но и проблемы другим людям.
На этот раз, в результате деятельности подобных товарищей, возник безумный микс из программы на Clipper под DOS, костыля на Java, Sybase базы и PHP кода под Web на Gentoo. Все это гордо назвали интернет магазином и стали продавать. А я, значит, инсталируй все это барахло.
Самое страшное во всем этом оказался Sybase. Выбран он был вероятно из-за того, что в книжке по Java не оказалось примера для работы с mysql или posgresql. И уж конечно не из-за своей крутости и интерпрайзовости.
База Sybase совместима с MSSQL, сильно наворочена (можно сломать мозг – даже для backup отдельный сервер), бесплатна под Linux (с некоторыми ограничениями) и имеет некоторые нюансы при инсталяции.
Перво-наперво, надо забыть про свежий glibc – даже самый последний Sybase Adaptive Server Enterprise версии 15.0.2 падает в segfault на glibc серии 2.6. Старьё версии 2.3.6 как раз то что надо. По умолчанию в Gentoo выпуска 2006.0
Не забываем про shared memory. Что-нибудь типа
/sbin/sysctl -w kernel.shmmax=67108864
обязательно перед инсталяцией. А дальше как в любимом детище MS – next,next,next…
Второй вопрос это сборка PHP с поддержкой sybase. Домашней папкой последней PHP считает /home/sybase
, а сам sybase ставит себя по умолчанию в /opt/sybase
. По этому, перед вызовом emerge -a php
, нужно выставить правильный путь:
export EXTRA_ECONF=”–with-sybase-ct=/opt/sybase/OCS-15_0/”
Библиотеки Sybase имеют довольно странные зависимости, по этому перед сборкой PHP требуют доработки напильником. В папке /opt/sybase/OCS-15_0/lib
следует скопировать пару файлов, чтобы линкер не ругался про недостающие либы:
cd /opt/sybase/OCS-15_0/lib
cp libsybcomn.so libcomn.a
cp libsybcs.a libcs.a
cp libsybct.a libct.a
cp libsybintl.a libintl.a
И конечно проследить, что бы линкер нашел все это барахло. /etc/ld.so.conf
должен содержать что-то вроде
/usr/local/lib
/usr/i686-pc-linux-gnu/lib
/usr/lib/gcc/i686-pc-linux-gnu/3.4.6
/opt/sybase/OCS-15_0/lib
/usr/lib/libstdc++-v3/
После сборки ставим правильный sybase.interface_file
в php.ini и пытаемся получить удовольствие :)
Страница на английском с Wiki Дженты тут: http://gentoo-wiki.com/HOWTO_Sybase_ASE_12.5.2
Однажды тебе не дадут определенную работу просто чтобы потом не читать о себе плохое в этом блоге.
Ne dumal chto do sih por takoj soft eshe delajut. Spasibo, razveselil :)