приветствую
реализована сборка exim с моими патчами под Solaris 10 (точнее Solaris
10u8):
http://mta.org.ua/exim-4.69-conf/pkgsrc-solaris/exim-4.72/
механизм сборки основан на подобных механизмах для сборки exim из pkgsrc
для NetBSD и DragonFly BSD.
подготовка к сборке exim на Solaris чуть более сложная, чем на других
системах, поэтому опишу ее немного подробнее.
устанавливаем (если они еще не установлены) gcc, gmake, wget, m4, tar и
т. д. с дистрибутивного DVD:
pkgadd -d /cdrom/sol_10_1009_x86/Solaris_10/Product SUNWgcc
pkgadd -d /cdrom/sol_10_1009_x86/Solaris_10/Product SUNWgmake
pkgadd -d /cdrom/sol_10_1009_x86/Solaris_10/Product SUNWwgetu
pkgadd -d /cdrom/sol_10_1009_x86/Solaris_10/Product SUNWgm4
pkgadd -d /cdrom/sol_10_1009_x86/Solaris_10/Product SUNWgtar
export PATH=$PATH:/usr/sfw/bin
настраиваем установку пакетов с blastwave.org:
cd /tmp
/usr/sfw/bin/wget http://download.blastwave.org/csw/pkgutil_`/sbin/uname -p`.pkg
pkgadd -d pkgutil_`/sbin/uname -p`.pkg/opt/csw/bin/pkgutil --catalog
устанавливаем rsync:
/opt/csw/bin/pkgutil --install rsync
export PATH=$PATH:/opt/csw/bin
к этому времени обязательно должны быть решены возможные проблемы с
locale, сопровождаемые выводом следующих сообщений при выполнении
консольных команд:
couldn't set locale correctly
проблемы решаются путем указания корректных значений переменных locale в
файле /etc/default/init с последующей перезагрузкой.
разворачиваем pkgsrc:
cd /usr
wget ftp://ftp.netbsd.org/pub/pkgsrc/current/pkgsrc.tar.gz
-O/tmp/pkgsrc.tar.gz
gtar -xzf /tmp/pkgsrc.tar.gz -C /usr
echo CC=gcc >> /etc/mk.conf
cd /usr/pkgsrc/bootstrap
./bootstrap
export PATH=$PATH:/usr/pkg/bin:/usr/pkg/sbin
перед сборкой openssl из pkgsrc необходимо исправить ошибку gcc 3.x на
Solaris/x86:
http://mail-index.netbsd.org/pkgsrc-users/2008/12/15/msg008884.html
wget http://www.openssl.org/%7Eappro/values.c -O/tmp/values.c
ksh -f /tmp/values.c
устанавливаем переменную окружения SYSV3 для нормальной работы echo -n:
export SYSV3=YES
разворачиваем конфигуратор:
mkdir -p /usr/pkg/etc/exim/m4
cd /usr/pkg/etc/exim/m4
wget http://mta.org.ua/exim-4.69-conf/m4/Makefile
gmake sync && gmake sync pre-install
при необходимости собираем libspf2 (если она соберется по зависимостям
при сборке exim'а, то в этом случае не будут наложены мои патчи):
cd /usr/pkg/etc/exim/pkgsrc-solaris/libspf2-1.2.9
gmake install
собираем exim:
cd /usr/pkg/etc/exim/pkgsrc-solaris/exim-4.72
cp Makefile.local.sample Makefile.local
vi Makefile.local
gmake patch_port
gmake install
добавляем пути поиска библиотек из состава pkgsrc для использования их
из dlfunc (мне нужна была libGeoIP.so.1 из состава GeoIP для определения
страны по IP адресу хоста):
crle -c /var/ld/ld.config -l /lib:/usr/lib:/usr/local/lib:/usr/pkg/lib
из-за отсутствия mailwrapper вручную создаем символические ссылки на exim:
mv /usr/sbin/sendmail /usr/sbin/sendmail.orig
ln -s `which exim` /usr/sbin/sendmail
mv /usr/sbin/newaliases /usr/sbin/sendmail.orig
ln -s `which exim` /usr/sbin/newaliases
mv /usr/bin/mailq /usr/bin/mailq.orig
ln -s `which exim` /usr/bin/mailq
mv /usr/lib/sendmail /usr/lib/sendmail.orig
ln -s `which exim` /usr/lib/sendmail
что касается непосредственно процесса сборки exim, то он мало чем
отличается от сборки exim из pkgsrc на других системах.
при необходимости собрать exim с поддержкой libspf2 нужно в переменной
PKG_OPTIONS файла Makefile.local указать значение exim-spf.
при необходимости собрать exim с поддержкой embedded perl необходимо в
переменной PKG_OPTIONS файла Makefile.local указать значение exim-perl.
при этом надо обратить внимание, что в этой же переменной нужно оставить
значение exim-expand-dlfunc, т. к. dlfunc сейчас широко применяется в
конфигураторе и собирать exim без поддержки dlfunc я не рекомендую.
т. к. по умолчанию в переменной confMAILERTABLE_LMTP включено
использование lmtp транспорта в mailertable, то в значении переменной
PKG_OPTIONS нужно указать и exim-transport-lmtp. если необходимости в
роутинге почты по LTMP нет, то можно в conf/site указать NO в качестве
значения confMAILERTABLE_LMTP и не указывать exim-transport-lmtp в
значении PKG_OPTIONS в Makefile.local.
далее нужно выполнить gmake build, далее gmake install
собранные бинарные пакеты exim и libspf2 для Solaris 10 выложены в
рипозитарий:
http://mta.org.ua/updates/SunOS/5.10/i386/
в процессе отладки сборки exim из pkgsrc под Solaris очень помогли
советы Андрея Октябрьского.
--
Best wishes Victor Ustugov mailto:victor на corvax.kiev.ua
public GnuPG/PGP key: http://victor.corvax.kiev.ua/corvax.asc
ICQ UIN: 77186900, 371808614 nic-handle: CRV-UANIC