Ads 468x60px

понедельник, 16 апреля 2012 г.

Debian squezee компиляция exim4 с поддержкой postgresql.

Возникла необходимость настроить exim в debian, с поддержкой postgres, самый простой способ это заменить устанавливаемый по умолчанию пакет exim4-daemon-light на exim4-daemon-heavy. Но простые методы не для нас, да и наличие не используемых опций, в которых могут быть обнаружены ошибки, подвигло на сборку пакета.
1. Подготавливаем систему.
- обновляем информацию о пакетной базе:
$ sudo aptitude update
- устанавливаем пакеты необходимые для сборки exim(Внимание! аналогичная команда возможно и с aptitude, но у меня не доставился один пакет):
$ sudo apt-get build-dep exim4
- создаем директорию для исходников:
$ mkdir source; cd source
- загружаем исходные коды:
$ apt-get source exim4
2. Создаем свою конфигурацию.
- распаковываем конфигурационные файлы сборки пакетов:
$ cd exim4-4.72; fakeroot debian/rules unpack-configs
- создаем свой файл конфигурации:
$ cp EDITME.exim4-light EDITME.exim4-custom
- включаем опции сборки:
* LOOKUP_PGSQL
$ sed -i 's|^# LOOKUP_PGSQL=yes|LOOKUP_PGSQL=yes|' EDITME.exim4-custom; cat EDITME.exim4-custom | grep LOOKUP_PGSQL
* LOOKUP_LIBS
$ sed -i 's|^# LOOKUP_LIBS=.*$|LOOKUP_LIBS= -lldap -llber -lpq|' EDITME.exim4-custom; cat EDITME.exim4-custom | grep  LOOKUP_LIBS=
* LOOKUP_INCLUDE
$ sed -i 's|^# LOOKUP_INCLUDE.*$|LOOKUP_INCLUDE=-I`pg_config --includedir`|' EDITME.exim4-custom ; cat EDITME.exim4-custom | grep LOOKUP_INCLUDE=
Если есть необходимость включаем драйвер для аутентификации средствами dovecot
$ sed -i 's|^# AUTH_DOVECOT=yes|AUTH_DOVECOT=yes|' EDITME.exim4-custom; cat EDITME.exim4-custom | grep AUTH_DOVECOT
а также средство для проверки тела письма (в частности используется для создания правил проверки допустимых расширений)
$ sed -i 's|^# WITH_CONTENT_SCAN=yes|WITH_CONTENT_SCAN=yes|' EDITME.exim4-custom; cat EDITME.exim4-custom | grep WITH_CONTENT_SCAN=
- заново упаковываем конфигурационные файлы:
$ fakeroot debian/rules pack-configs
3. Изменяем правила сборки.
- указываем основной пакет для сборки, исходя из имени нашего конфигурационного файла:
$ sed -i 's|extradaemonpackages=.*|extradaemonpackages=exim4-daemon-custom|' debian/rules;cat debian/rules | grep extradaemonpackages=
- не обязательно, отключаем компиляцию дополнительных пакетов:
$ sed -i 's|buildbasepackages=.*|buildbasepackages=no|' debian/rules;cat debian/rules | grep buildbasepackages=
4. Сборка пакета.
$ dpkg-buildpackage -uc -b
5. Удаление установленной версии.
$ dpkg --get-selections | grep exim4-daemon | grep -v "deinstall" | awk '{print $1}' | xargs sudo aptitude remove -yf
пояснение: получить список пакетов | выбрать список содержащих exim4-daemon | не выбирать удаленные | из вывода взять первое слово = название пакета | результат передать как аргумент команды sudo aptitude remove -yf
6. Установка собранной версии.
$ sudo dpkg -i ../exim4-daemon-custom_4.72-6+squeeze2_i386.deb
7. Проверка результата.
$ sudo exim4 -bV | grep --color pgsql

Комментариев нет: