Днес ще разказвам за неволите си около един сървър със Suhosin patch и как Debian Sqeeze се справя с него. Сега да започнем малко по отдалече. Когато си инсталирате php през пакетната система на Debian (stable за другите не мога да кажа как е още) задължително ви се инсталира и suhosin mod към него. Имах проблеми с едни плу-кадърно написана php система и взех кардиналното решение вместо да правя дебъг на системата и да връщам репорт на разработчика да разкарам кръпката за сигурност и така да си спестя главоболията. Общо взето смело мога да кажа че това е било едно от най глупавите ми решения взимани някога. Най напред премахвам модула на php5-suhosin рестартирам web server-a и опа греда – patch-a все още е зареден. След много кратко проучване откривам, че пакета е компилирах и с пача директно в кода което ще рече че няма изключване или премахване освен ако не се прекомпилира кода наново без пача. Решавам че ще го дръпna и прекомпилирам до deb пакет. Речено сторено правя си apt-get source php5 дърпа ми се настоящия сорс код, разпакетирва се и прочие. Тука идеалната ми идея да сваля сорса на пакета да премахна пача и да го компилирам отново до дебиански пакет плюс една две малки оптимизации по компилацията. Речено сторено – премахнах ненужния пач от debian/patches/suhosin.patch премахнах го да не играе и в debian/patches/series. До тук всичко ясно и без проблеми. След това пускам да се компилира пакета с debuild и както очаквах ми изгърмя компилацията заради липсващи хедъри. Естествено че ще има такива липси – все пак съм с debian netinstall. Поправям набързо глупостта си пускам наново компилацията, в един момент отново премира само, че със странна грешка в Zend/zend_stream.h или .c не помня точно (ако ми се занимава може по късно да проверя точно кой файл и на кой ред гърмеше). След известно недоумяване какво се случва и защо аджеба гърми в Zend ядрото – където не би трябвало да гърми по никаква причина и едно малко по дълго проучване откривам че тоя проблем е относително рядък и няма много сигнали за него. Подозирам че някоя от кръпките в сорса не е наред но сега нямам нерви за да го проверявам. Хммммм странно супер странно. Почти реших да си компилирам чисто php но реших да пробвам огледалата на dotdeb да видим там какво ще се случи. Там компилацията умря заради някакви странни зависимости но подмина проблемите в основната част. Което от своя страна е разбираемо нямаше ги те 30-40 кръпки който бяха в стабилния пакет. След няколко дълги и неуспешни опита ми писна и сви свалих ванила пакета и го компилирах с почти debian-ски опции с идеята да пренапише настоящата ми инсталация и като се инсталират нови пакети от хранилката да може да има поведение на пакет инсталиран от хранилището (вероятно поредното не обособно разумно решение). Както очаквах без всички кръпки инсталацията мина гладко. Това е изхода на config.nice файлът ми:


#! /bin/sh
#
# Created by configure

CFLAGS='-g -O2 -fPIC -Wall -fsigned-char -fno-strict-aliasing   -gstabs' \
CXXFLAGS='-g -O2' \
'./configure' \
'--with-apxs2=/usr/bin/apxs2' \
'--prefix=/usr/local/php5' \
'--disable-cgi' \
'--with-config-file-path=/etc/php5/apache2' \
'--with-config-file-scan-dir=/etc/php5/apache2/conf.d' \
'--build=x86_64-linux-gnu' \
'--host=x86_64-linux-gnu' \
'--sysconfdir=/etc' \
'--localstatedir=/var' \
'--mandir=/usr/share/man' \
'--disable-debug' \
'--with-regex=php' \
'--disable-rpath' \
'--disable-static' \
'--with-pic' \
'--with-layout=GNU' \
'--with-pear=/usr/share/php' \
'--enable-calendar' \
'--enable-fileinfo' \
'--enable-hash' \
'--enable-json' \
'--enable-sysvsem' \
'--enable-sysvshm' \
'--enable-sysvmsg' \
'--enable-bcmath' \
'--with-bz2' \
'--enable-ctype' \
'--without-gdbm' \
'--with-iconv' \
'--enable-exif' \
'--enable-ftp' \
'--enable-dbase' \
'--with-gettext' \
'--enable-mbstring' \
'--with-onig=/usr' \
'--with-pcre-regex' \
'--with-mysql=shared,mysqlnd' \
'--with-mysql-sock=/var/run/mysqld/mysqld.sock' \
'--with-mysqli=shared,mysqlnd' \
'--enable-pdo=shared' \
'--with-pdo-mysql=shared,mysqlnd' \
'--with-pdo-odbc=shared,unixODBC,/usr' \
'--with-pdo-pgsql=shared,/usr/bin/pg_config' \
'--with-pdo-sqlite=shared,/usr' \
'--with-pdo-dblib=shared,/usr' \
'--enable-phar' \
'--enable-shmop' \
'--enable-sockets' \
'--enable-dom' \
'--enable-wddx' \
'--enable-tokenizer' \
'--with-zlib' \
'--with-kerberos=/usr' \
'--with-openssl=/usr' \
'--enable-soap' \
'--enable-zip' \
'--with-mhash=yes' \
'--with-exec-dir=/usr/lib/php5/libexec' \
'--with-system-tzdata' \
'--without-mm' \
'--with-readline=/usr' \
'--without-sybase-ct' \
'--without-sqlite' \
'--without-sqlite3' \
'--without-mssql' \
'--enable-pcntl' \
'--enable-inline-optimization' \
"$@"

Това е конфигурация близка до тази на компилацията на dotdeb. Като основаното и най важно е prefix опцията където ще се разполагат файловете с библиотеките на php. Него както и другите пъти ги коригирайте според вашата система така че да не се усети компилацията с промяна на пътищата.

Enhanced by Zemanta