Пошаговые руководства, шпаргалки, полезные ссылки...
БлогФорумАвторы
Полезные Online-сервисы
Перечень Бесплатного ПО
Подписка на RSS-канал
В данной заметке описан порядок действий по подключению репозиториев Debian 9 (Stretch) в Debian 8 (Jessie), загрузки исходных кодов пакетов squid3 и libecap3 из этих репозиториев и сборки deb-пакетов Squid 3.5.24 и libecap 1.0.1 для использования в Debian 8.
Sqiud ветки 3.5.x требует для своей работы библиотеку libecap 1.0. В репозиториях Debian 8 (Jessie) этой версии libecap нет, а доступна версия 0.2 в виде пакета libecap2. Однако в репозиториях следующей разрабатываемой версии Debian 9 (Stretch) интересующая нас версия libecap 1.0 имеется в виде пакета libecap3. Более того, там же имеется собранная версия Squid 3.5.23 в виде пакета squid3. Это даёт нам возможность использовать уже готовые дебианизированные исходники libecap 1.0 и Squid 3.5.23 для сборки 3.5.24 в Debian Jessie.
Чтобы установить интересующие нас пакеты из репозиториев Debian Stretch, придётся внести небольшие изменения в настройки менеджера пакетов apt.
Создадим файл, добавляющий в систему репозиторий Debian Stretch:
# cat > /etc/apt/sources.list.d/debian-9-stretch.list << EOF # Testing repos for Debian 9 (Stretch) deb http://ftp.ru.debian.org/debian stretch main deb-src http://ftp.ru.debian.org/debian stretch main EOF
Создадим файл, добавляющий в систему правила установки пакетов:
# cat > /etc/apt/preferences.d/debian-9-stretch.pref << EOF Package: squid3 libecap3 Pin: release n=stretch Pin-Priority: 550 Package: * Pin: release n=jessie Pin-Priority: 500 Package: * Pin: release n=stretch Pin-Priority: -1 EOF
После создания дополнительных конфигурационных файлов apt выполним обновление и убедимся в том, что теперь нам для установки доступна новая версия squid3:
# apt update # apt-cache policy squid3
squid3:. Installed: (none) Candidate: 3.5.23-1 Package pin: 3.5.23-1 Version table: 3.5.23-1 550 -1 http://ftp.ru.debian.org/debian/ stretch/main amd64 Packages 3.4.8-6+deb8u4 550 500 http://ftp.ru.debian.org/debian/ jessie/main amd64 Packages 500 http://security.debian.org/ jessie/updates/main amd64 Packages
Аналогичным образом проверим доступность новой версии libecap3:
# apt-cache policy libecap3
libecap3: Installed: (none) Candidate: 1.0.1-3.2 Package pin: 1.0.1-3.2 Version table: 1.0.1-3.2 550 -1 http://ftp.ru.debian.org/debian/ stretch/main amd64 Packages
Таким образом, при последующих обновлениях в систему, как и прежде, будут устанавливаться все пакеты из репозитория Debian 8 (Jessie) и не будут устанавливаться пакеты из репозитория Debian 9 (Stretch). А пакеты squid3 и libecap3 из репозитория Debian 9 будет иметь приоритет над пакетами из Debian 8. Однако сами эти пакеты, как таковые, нам не нужны, нам нужны лишь их дебианизированные исходные коды.
Устанавливаем пакеты сборочных инструментов:
# apt-get install devscripts quilt
Установка пакетов-зависимостей необходимых для сборки libecap
# apt-get build-dep libecap3
Reading package lists... Done Building dependency tree Reading state information... Done Picking 'libecap' as source package instead of 'libecap3' The following NEW packages will be installed: autoconf automake autopoint autotools-dev binutils build-essential cdbs cpp cpp-4.9 debhelper dh-autoreconf dpkg-dev g++ g++-4.9 gcc gcc-4.9 gettext intltool-debian libasan1 libatomic1 libc-dev-bin libc6-dev libcilkrts5 libcloog-isl4 libcroco3 libdpkg-perl libgcc-4.9-dev libgomp1 libisl10 libitm1 liblsan0 libmpc3 libmpfr4 libstdc++-4.9-dev libtool libtsan0 libubsan0 libunistring0 linux-libc-dev make po-debconf 0 upgraded, 41 newly installed, 0 to remove and 0 not upgraded. Need to get 51.2 MB of archives. After this operation, 154 MB of additional disk space will be used. Do you want to continue? [Y/n] Y
Входим в систему с правами рядового непривилегированного пользователя и создаем в домашнем каталоге временный подкаталог для последующих манипуляций по сборке, затем переходим в этот подкаталог:
$ mkdir ~/libecap3-build $ cd ~/libecap3-build
Скачиваем и разворачиваем исходные файлы libecap в текущем каталоге
$ apt-get source libecap3
Переходим в каталог с новыми исходными файлами
$ cd ~/libecap3-build/libecap-1.0.1
Экспортируем путь к каталогу с патчами для quilt:
$ export QUILT_PATCHES=debian/patches
Применяем к исходным файлам патчи:
$ while quilt push; do quilt refresh; done
File series fully applied, ends at patch debian/patches/arch-indep-autoconf-header.diff
Удалим файл libecap3.symbols, который справедлив в окружении Debian 9, но будет нам мешать в сборке под Debian 8
$ rm -f debian/libecap3.symbols
Запускаем сборку пакета в текущем каталоге:
$ debuild -us -uc
После окончания сборки пакетов, выходим из каталога сборки и устанавливаем новые пакеты:
$ cd .. $ sudo dpkg -i libecap3_1.0.1-3.2_amd64.deb libecap3-dev_1.0.1-3.2_amd64.deb
Итак, мы имеем установленные пакеты libecap3, которые пригодятся нам при последующей сборке squid3
$ dpkg --list | grep libecap
ii libecap3:amd64 1.0.1-3.2 amd64 eCAP library ii libecap3-dev:amd64 1.0.1-3.2 amd64 eCAP development libraries
По прежнему используем окружение рядового непривилегированного пользователя. Создаем в домашнем каталоге временный подкаталог для сборки и переходим в этот подкаталог:
$ mkdir ~/squid3-build $ cd ~/squid3-build
Скачиваем и разворачиваем исходные коды пакета в текущий каталог (будут загружены исходники 3.5.23 из репозитория Debian 9):
$ apt-get source squid3
Скачиваем исходные коды последней стабильной версии Squid 3.5.24 с официального сайта в текущий каталог:
$ wget http://www.squid-cache.org/Versions/v3/3.5/squid-3.5.24.tar.gz
Переходим в каталог со старыми исходными файлами и выполняем их обновление из загруженного архива новыми исходными файлами:
$ cd squid3-3.5.23 $ uupdate -v 3.5.24 ../squid-3.5.24.tar.gz
New Release will be 3.5.24-1. Symlinking to pristine source from squid3_3.5.24.orig.tar.gz... -- Untarring the new sourcecode archive ../squid-3.5.24.tar.gz Unpacking the debian/ directory from version 3.5.23-1 worked fine. Remember: Your current directory is the OLD sourcearchive! Do a "cd ../squid3-3.5.24" to see the new package
Переходим в каталог с обновлёнными исходниками
$ cd ~/squid3-build/squid3-3.5.24
Тепeрь нам нужно заполучить в систему пакеты-зависимости, которые потребуются для сборки текущей версии squid3. Однако привычная нам команда «apt-get build-dep squid3» выдаст ошибку, так как пакета debhelper нужной версии, которая прописана в сборочных зависимостях в исходниках squid3 из репозитория Debian 9 в системе не хватает.
apt-get build-dep squid3
$ sudo apt-get build-dep squid3
Reading package lists... Done Building dependency tree Reading state information... Done E: Build-Depends dependency for squid3 cannot be satisfied because candidate version of package debhelper can't satisfy version requirements
Заглянем в файл debian/control и выясним какие пакеты-зависимости нужны для сборки данной версии squid3
$ cat debian/control | grep Build-Depends
Build-Depends: libldap2-dev, libpam0g-dev, libdb-dev, cdbs, libsasl2-dev, debhelper (>=10), libcppunit-dev, libkrb5-dev, comerr-dev, libcap2-dev [linux-any], libecap3-dev (>= 1.0.1-2), libexpat1-dev, libxml2-dev, autotools-dev, libltdl-dev, dpkg-dev (>= 1.16.1~), pkg-config, libnetfilter-conntrack-dev [linux-any], nettle-dev, libgnutls28-dev, lsb-release
Как видим, требуется пакет debhelper версии 10 и выше. Однако в Debian 8 установлен debhelper 9.2
$ dpkg --list | grep debhelper
ii debhelper 9.20150101+deb8u2 all helper programs for debian/rules ...
Уберём в файле debian/control требование к новой версии debhelper.
sed -i 's/debhelper (>=10)/debhelper/' debian/control
Проверим, что ссылка на номер версии debhelper из файла debian/control удалилась:
Build-Depends: libldap2-dev, libpam0g-dev, libdb-dev, cdbs, libsasl2-dev, debhelper, libcppunit-dev, libkrb5-dev, comerr-dev, libcap2-dev [linux-any], libecap3-dev (>= 1.0.1-2), libexpat1-dev, libxml2-dev, autotools-dev, libltdl-dev, dpkg-dev (>= 1.16.1~), pkg-config, libnetfilter-conntrack-dev [linux-any], nettle-dev, libgnutls28-dev, lsb-release
Выполним установку пакетов-зависимостей (пакет libecap3-dev не ставим, так как уже поставили его ранее):
$ sudo apt-get install libldap2-dev libpam0g-dev libdb-dev cdbs libsasl2-dev \ debhelper libcppunit-dev libkrb5-dev comerr-dev libcap2-dev libexpat1-dev \ libxml2-dev autotools-dev libltdl-dev dpkg-dev pkg-config libnetfilter-conntrack-dev \ nettle-dev libgnutls28-dev lsb-release
Приступаем к работе с патчами. Напомню, что мы находимся в каталоге ~/squid3-build/squid3-3.5.24
Применяем имеющиеся в исходниках патчи:
Applying patch debian/patches/0001-Default-configuration-file-for-debian.patch patching file src/cf.data.pre Hunk #1 succeeded at 1213 (offset 3 lines). Hunk #2 succeeded at 1466 (offset 3 lines). Hunk #3 succeeded at 4604 (offset 1 line). Hunk #4 succeeded at 4623 (offset 1 line). Hunk #5 succeeded at 8982 (offset 1 line). Now at patch debian/patches/0001-Default-configuration-file-for-debian.patch Refreshed patch debian/patches/0001-Default-configuration-file-for-debian.patch Applying patch debian/patches/0002-Change-default-file-locations-for-debian.patch patching file src/Makefile.am patching file src/Makefile.in Hunk #1 succeeded at 3260 (offset 2 lines). Now at patch debian/patches/0002-Change-default-file-locations-for-debian.patch Refreshed patch debian/patches/0002-Change-default-file-locations-for-debian.patch File series fully applied, ends at patch debian/patches/0002-Change-default-file-locations-for-debian.patch
Теперь одна из самых важных частей. Правка файла правил сборки squid3 - debian/rules под наши нужны. Например, как было описано ранее, в секции DEB_CONFIGURE_EXTRA_FLAGS добавим дополнительную опцию сборки, отключающую поддержку ipv6:
... --disable-ipv6 \ ...
Здесь же можно, при необходимости, включить дополнительные хелперы. Список всех доступных хелперов есть здесь.
После того, как файл правил сборки приведён в нужное сотсояние, запускаем процесс сборки пакетов:
После успешного окончания сборки выходим из каталога сборки на уровень выше и можем лицезреть собранные пакеты.
$ cd .. $ ls -la | grep .deb$
-rw-r--r-- 1 -- 138760 Mar 14 17:15 squid3_3.5.24-1_all.deb -rw-r--r-- 1 -- 2312054 Mar 14 17:16 squid_3.5.24-1_amd64.deb -rw-r--r-- 1 -- 166114 Mar 14 17:16 squid-cgi_3.5.24-1_amd64.deb -rw-r--r-- 1 -- 167540 Mar 14 17:16 squidclient_3.5.24-1_amd64.deb -rw-r--r-- 1 -- 284600 Mar 14 17:15 squid-common_3.5.24-1_all.deb -rw-r--r-- 1 -- 19247346 Mar 14 17:16 squid-dbg_3.5.24-1_amd64.deb -rw-r--r-- 1 -- 157684 Mar 14 17:16 squid-purge_3.5.24-1_amd64.deb
Не забываем отключить настройки APT, связанные с получением пакетов из репозитория Debian 9 в файле, который мы сделали ранее - /etc/apt/preferences.d/debian-9-stretch.pref, приведя его к виду:
Package: * Pin: release n=jessie Pin-Priority: 500 Package: * Pin: release n=stretch Pin-Priority: -1
Осталось закинуть пакеты в локальный apt-репозиторий, если такой имеется для разливки собранных deb-пакетов на серверы.
# reprepro -b /srv/reprepro/debian -C main includedeb jessie \ /home/user/libecap3-build/libecap3*.deb # reprepro -b /srv/reprepro/debian -C main includedeb jessie \ /home/user/squid3-build/squid*.deb
Автор первичной редакции: Алексей Максимов Время публикации: 18.03.2017 23:00