Sybase и Gentoo

  Некоторые кодеры очень не любят (не умеют?) читать документацию. По этому пишут программы, основываясь на коде из всяких примеров в книжках. Тем самым создавая не только кривой софт, но и проблемы другим людям.
  На этот раз, в результате деятельности подобных товарищей, возник безумный микс из программы на 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

2 Responses to “Sybase и Gentoo”

  1. Danaki says:

    Однажды тебе не дадут определенную работу просто чтобы потом не читать о себе плохое в этом блоге.

  2. Viktors says:

    Ne dumal chto do sih por takoj soft eshe delajut. Spasibo, razveselil :)

Leave a Reply