Сборка ProxySQL для Debian 8.11.1 LTS Jessie

Настройка виртуальной машины

Для сборки ProxySQL понадобится настроить виртуальную машину, аналогичную используемой на том сервере, где собираемся его использовать. В рассматриваемом примере это система Debian 8.11.1 LTS с кодовым именем Jessie. Получить образ установочного диска можно по ссылке debian-8.11.1-amd64-netinst.iso.

Настройка репозиториев

Для настройки репозиториев поместим в файл /etc/apt/sources.list следующие строки:

deb http://archive.debian.org/debian/ jessie main contrib non-free
deb http://archive.debian.org/debian-security/ jessie/updates main contrib non-free
deb http://archive.debian.org/debian/ jessie-backports main contrib non-free

Отключаем установку предлагаемых зависимостей, создав файл /etc/apt/apt.conf.d/suggests со следующим содержимым:

APT::Install-Suggests "false";

Отключаем установку рекомендуемых зависимостей, создав файл /etc/apt/apt.conf.d/recommends со следующим содержимым:

APT::Install-Recommends "false";

Система apt сохраняет скачанные пакеты в каталоге /var/cache/apt/archives/, чтобы при необходимости не скачивать их снова. Файлы в этом каталоге по умолчанию не удаляются, что может привести к переполнению диска. Чтобы отключить размер файлов в этом каталоге 200 мегабайтами, создадим файл /etc/apt/apt.conf.d/cache со следующим содержимым:

APT::Cache-Limit "209715200";

Создадим файл /etc/apt/apt.conf.d/timeouts с настройками таймаутов обращения к репозиториям:

Acquire::http::Timeout "5";
Acquire::https::Timeout "5";
Acquire::ftp::Timeout "5";

При необходимости, если репозитории доступны через веб-прокси, можно создать файл /etc/apt/apt.conf.d/proxy, прописав в него прокси-серверы для протоколов HTTP, HTTPS и FTP:

Acquire::http::Proxy "http://10.0.25.3:8080";
Acquire::https::Proxy "http://10.0.25.3:8080";
Acquire::ftp::Proxy "http://10.0.25.3:8080";

Обновляем список пакетов, доступных через репозитории:

# apt-get update

Обновим систему с использованием самых свежих пакетов, доступных через репозитории:

# apt-get upgrade
# apt-get dist-upgrade

Настройка репозиториев Percona

Установим пакеты, необходимые для работы пакета настройки репозиториев:

# apt-get install curl

Заглядываем в файл /etc/debian_version или /etc/lsb-release, определяем кодовое имя релиза.

Открываем страницу repo.percona.com/percona/apt/ и находим там пакет percona-release_latest.jessie_all.deb, где jessie - кодовое имя релиза. Копируем ссылку на пакет и скачиваем в систему, где нужно установить ProxySQL:

$ curl http://repo.percona.com/percona/apt/percona-release_latest.jessie_all.deb > percona-release_latest.jessie_all.deb

Установим пакет в систему:

# dpkg -i percona-release_latest.jessie_all.deb

Подключаем репозитории с ProxySQL:

# percona-release enable proxysql

Обновляем список пакетов, доступных через репозитории:

# apt-get update

Сборка пакета

Установим пакеты, которые понадобятся дальнейших действий:

# apt-get install git pkg-config cmake libgnutls28-dev libcurl4-openssl-dev automake autoconf libtool uuid-dev
# apt-get install -t jessie-backports cmake

Получим исходный пакет, который на момент написания статьи соответствует версии 2.0.12:

$ apt-get source proxysql2

Клонируем из репозитория ветку с нужной нам версией 2.4.1:

$ git clone --single-branch -b v2.4.1 https://github.com/sysown/proxysql/ proxysql2-2.4.1

Скопируем каталог debian в каталог со скачанными исходными текстами и удалим служебный каталог .git:

$ cp -R proxysql2-2.0.12/debian proxysql2-2.4.1/
$ rm -fR proxysql2-2.4.1/.git

Перейдём в каталог с новыми исходными текстами и запустим утилиту для редактирования журнала изменений пакета:

$ cd proxysql2-2.4.1
$ dch -i

Вводим в качестве описания последних изменений такой текст:

proxysql2 (2.4.1~jessie) unstable; urgency=medium

  * Update to new upstream release ProxySQL 2.4.1

 -- Vladimir Stupin <vladimir@stupin.su>  Mon, 20 Jun 2022 12:22:32 +0500

Добавляем в файл debian/control зависимости от библиотек и утилит:

Build-Depends: debhelper (>= 9), debconf, pkg-config, g++, cmake, libgnutls28-dev, libcurl4-openssl-dev, automake, autoconf, libtool, uuid-dev

Удаляем из файла debian/control следующую строчку:

Version: @@VERSION@@

Добавляем в заплатку percona-utilities файлы, добавленные авторами исходного пакета:

$ quilt new percona-utilities
$ quilt add etc/proxysql-admin.cnf
$ quilt add tools/proxysql-admin
$ quilt add tools/proxysql-logrotate
$ quilt add tools/proxysql-status
$ quilt add tools/README.md
$ quilt add tools/tools/enable_scheduler
$ quilt add tools/tools/mysql_exec
$ quilt add tools/tools/proxysql_exec
$ quilt add tools/tools/run_galera_checker
$ quilt add tools/tests/generic-test.bats
$ quilt add tools/tests/proxysql-admin-testsuite.bats
$ quilt add tools/tests/proxysql-admin-testsuite.sh
$ quilt add tools/tests/test-common.bash
$ quilt add tools/doc/proxysql_galera_checker.md
$ quilt add tools/doc/release-notes/proxysql-admin_v1.3.0.md
$ quilt add tools/doc/release-notes/proxysql-admin_v1.3.2a.md
$ quilt add tools/doc/release-notes/proxysql-admin_v1.3.5.md
$ quilt add tools/doc/release-notes/proxysql-admin_v1.3.6.md
$ cp ../proxysql2-2.0.12/etc/proxysql-admin.cnf etc/
$ cp ../proxysql2-2.0.12/tools/proxysql-admin tools/
$ cp ../proxysql2-2.0.12/tools/proxysql-logrotate tools/
$ cp ../proxysql2-2.0.12/tools/proxysql-status tools/
$ cp ../proxysql2-2.0.12/tools/README.md tools/
$ cp -r ../proxysql2-2.0.12/tools/tools tools/
$ cp -r ../proxysql2-2.0.12/tools/tests tools/
$ cp -r ../proxysql2-2.0.12/tools/doc tools/
$ quilt refresh

В файл debian/rules.systemd добавим правило, удаляющее файлы, отмечающие выполненные этапы сборки пакета:

override_dh_clean:
        @echo "RULES.$@"
        dh_clean
        rm -f override_dh_auto_build override_dh_auto_configure

Скопируем содержимое файла debian/rules.systemd в файл debian/rules:

$ cat debian/rules.systemd > debian/rules

Удаляем из файла debian/docs строчку с файлом requirements.txt.

Запускаем сборку пакета:

$ GIT_VERSION=2.4.1 dpkg-buildpackage -us -uc -rfakeroot

В результате сборки в каталоге выше должны сформироваться следующие файлы:

Использованные материалы