mysqlНе так давно я выложил статью про установку MySQL 5.6 для Debian из уже собранного пакета. Сейчас это одна из самых читаемых статей сайта. В принципе этот способ подходит абсолютному большинству, но всегда есть и исключения — будь то академическое любопытство или необходимость особой сборки. Поэтому сегодня я опишу процесс создания своего DEB пакета из исходников. Полученный пакет можно будет установить по   этой инструкции.

Как обычно, мы будем использовать Debian x64 в минимальной установке с наличием SSH.

1. Скачаем исходные коды с сайта MySQL. Для этого перейдем на сайт http://dev.mysql.com/downloads/mysql/#downloads. В выпадающем списке «Select Platform» укажем Source Code. Далее выберем архив «Generic Linux (Architecture Independent), Compressed TAR Archive» и нажмем кнопку Download. Откроется окно с предложением авторизоваться, но мы просто кликнем на неприметную ссылку «No thanks, just start my download.» и скопируем путь до архива.

2. Распакуем архив и перейдем в директорию с исходниками.

3. Сразу поставим минимальное окружение, которое понадобится в любом случае вне зависимости от опций сборки.

4. Теперь нам надо определиться с вариантами компиляции, ради которых по большей части и нужна ручная сборка.

Рассмотрим возможные ключи для сборки.

CMAKE_INSTALL_PREFIX — Базовый каталог установки. по умолчанию /usr/local/mysql

Пример:

COMPILATION_COMMENT — Комментарии к сборке.

Пример:

DEFAULT_CHARSET — Очень актуальный ключ, указывающий кодировку по умолчанию. Так как latin1, используемый по умолчанию, мне совсем не нужен, а хочется UTF8 или CP1251.

Возможные значения: binary armscii8 ascii big5 cp1250 cp1251 cp1256 cp1257 cp850 cp852 cp866 cp932 dec8 eucjpms euckr gb2312 gbk geostd8 greek hebrew hp8 keybcs2 koi8r koi8u latin1 latin2 latin5 latin7 macce macroman sjis swe7 tis620 ucs2 ujis utf8 utf8mb4 utf16 utf16le utf32

Пример:

 

DEFAULT_COLLATION — Способ по умолчанию, с помощью которого следует упорядочивать и сравнивать данные в БД.

Для одного и того же CHARACTER SET существует как правило несколько COLLATION. cp1251_general_ci — сравнение не чувствительное к регистру, cp1251_bin — чувствительное к регистру.

Для UTF8 — utf8_general_ci и utf8_bin соответственно.

Пример:

 

ENABLE_DTRACE — Включить поддержку DTRACE.

Пример:

 

MEMCACHED_HOME — Путь до memcached.

Пример:

 

MYSQL_DATADIR — Путь директории с данными.

Пример:

 

MYSQL_TCP_PORT — Номер порта MySQL. По умолчанию 3306.

Пример:

 

MYSQL_UNIX_ADDR — Путь до sock файла. По умолчанию  /tmp/mysql.sock

Пример:

 

WITH_DEBUG — Поддержка режима отладки. По умолчанию выключена.

Пример:

 

WITH_EMBEDDED_SERVER — Ключ позволяет скомпилировать Embedded Server.

Пример:

 

WITH_xxx_STORAGE_ENGINE — Очень полезный ключ, позволяет включать поддержку типов бд, дабы не подключать их потом через плагины, улучшает производительность.

Возможные значения: ARCHIVE, BLACKHOLE, EXAMPLE, FEDERATED, INNOBASE (InnoDB), NDBCLUSTER (NDB), PARTITION (partitioning support), and PERFSCHEMA (Performance Schema).

Примеры:

 

WITHOUT_xxx_STORAGE_ENGINE — Ключ, обратный предыдущему.

Примеры:

 

WITH_NDB_BINLOG — Поддержка бинлогов. По умолчанию включена.

Пример:

 

WITH_SSL — Поддержка SSL.

Варианты:

no: Без поддержки SSL. По умолчанию.

yes: С поддержкой SSL. Если есть системная библиотека, будет исопльзоваться она. Если нет — встроенная.

bundled: Использовать встроенную библиотеку.

system: Использовать системную библиотеку.

Пример:

 

WITH_ZLIB — Поддержка zlib. Выбор между встроенной и внешней.

Варианты:

bundled: Использовать встроенную библиотеку.

system: Использовать системную библиотеку. По умолчанию.

Пример:

5. Подготовим конфиг сборки с нашими ключами.

Обратите внимание на ключ -DINSTALL_LAYOUT=DEB. Он позволит собрать DEB пакет.

6. Скомпилируем конфигурацию.

7. Соберем пакет.

После окончания процесса сборки, cpack вернет путь до пакета, который мы сможем использовать на наших серверах.

На этом все, спасибо за внимание.