Сборка и установка deb-пакетов клиента SSTP VPN в Debian GNU/Linux 11 (Bullseye)

Building and Installing SSTP VPN Client Deb Packages on Debian Linux 11 BullseyeПосле обновления домашней машины с Debian 10 (Buster) на Debian 11 (Bullseye) методом In-Place Upgrade, можно обнаружить, что клиентское ПО SSTP VPN, установленное и работающее ранее в Debian 10 больше не работает в Debian 11. В общем-то в этом нет ничего удивительного, так как в ходе выполнения обновления старые пакеты SSTP клиента могут быть удалены из системы, как несовместимые с основной пакетной базой новой версии ОС. В этой заметке мы рассмотрим один из вариантов того, как можно вернуть утраченный функционал SSTP клиента в Debian Bullseye.

Ссылку на исходные коды проекта SSTP клиента для Linux можно найти, например, на сайте проекта - sstp-client.sourceforge.net. Однако их самостоятельная сборка под определённый дистрибутив Linux классическим методом "configure/make/make install" занятие не очень интересное и "модное". В окружении Debian гораздо интересней собрать готовые deb-пакеты, которые можно будет в дальнейшем неоднократно использовать на других системах, оперируя пакетным менеджером APT.

Для систем Ubuntu (и производных от Ubuntu) можно использовать готовые пакеты, предоставляемые автором проекта Eivind Naess в его Personal Packages Archive (PPA). В случае с Debian, ранее мне удалось использовать эти же пакеты и они без особых проблем устанавливаюсь и работали в Debian 10. Однако после обновления до Debian 11 последние актуальные версии пакетов в этом PPA в моём случае не заработали. И основной причиной этого стало то, что в Debian 11 по умолчанию используется более новая версия пакета "ppp" (2.4.9), чем та, что требуется для актуальных пакетов из PPA (2.4.7).

Вообще, если "пошуршать" в поисковом индексе Google, то можно найти частные репозитории, где уже есть готовые собранные deb-пакеты, например, здесь. Но использование пакетов из таких частных репозиториев всегда несёт дополнительные риски. К тому же, как говорится, мы не ищем лёгких путей, и поэтому попробуем самостоятельно собрать нужные нам deb-пакеты в собственном системном окружении.

Перед сборкой deb-пакетов, нам потребуется "дебианизировать" исходные коды. Учитывая то, что задача эта хоть и вполне подъёмная, но и не совсем тривиальная, мы можем воспользоваться готовыми файлами дебианизации, которые уже были подготовлены ранее для сборки пакетов под Ubuntu.

Сборку пакетов, исходя из лучших практик, правильней выполнять на специально отведённой для это чистой системе Debian (без работающих продуктивных сервисов). В нашем же случае всё будет выполняться в рамках домашней машины, экспериментировать в рамкой которой в обще-то не особо и страшно.


Подготовка сборочной среды

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

# apt-get install build-essential devscripts fakeroot

Так как в нашем случае, на системе используется графическая среда Gnome 3.38, поставляемая в составе c Debian 11, то помимо сборки пакетов самого SSTP клиента, нам может понадобиться сборка пакетов расширения графического интерфейса Network Manager.

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

# apt-get install ppp-dev libevent-dev libssl-dev

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

# apt-get install intltool libnm-dev libnma-dev libsecret-1-dev libgtk-3-dev libglib2.0-dev

Собираем пакеты SSTP клиента

Создаём временный каталог, переходим в него и скачиваем в этот каталог актуальные исходные файлы sstp-client с файлами дебианизации:

# mkdir /tmp/sstp-client-build
# cd /tmp/sstp-client-build
# wget https://launchpad.net/~eivnaes/+archive/ubuntu/network-manager-sstp/+sourcefiles/sstp-client/1.0.15-0ubuntu2/sstp-client_1.0.15-0ubuntu2.dsc
# wget https://launchpad.net/~eivnaes/+archive/ubuntu/network-manager-sstp/+sourcefiles/sstp-client/1.0.15-0ubuntu2/sstp-client_1.0.15-0ubuntu2.debian.tar.xz
# wget https://launchpad.net/~eivnaes/+archive/ubuntu/network-manager-sstp/+sourcefiles/sstp-client/1.0.15-0ubuntu2/sstp-client_1.0.15.orig.tar.gz
# ls -l

-rw-r--r-- 1 root root   3312 авг 24 19:35 sstp-client_1.0.15-0ubuntu2.debian.tar.xz
-rw-r--r-- 1 root root   1837 авг 24 19:35 sstp-client_1.0.15-0ubuntu2.dsc
-rw-r--r-- 1 root root 477830 авг 24 19:35 sstp-client_1.0.15.orig.tar.gz

В текущем каталоге запускаем команду распаковки исходных текстов (.orig.tar.gz) и внедрения файлов дебианизации (.debian.tar.xz) с помощью файла *.dsc

# dpkg-source -x /tmp/sstp-client-build/sstp-client_1.0.15-0ubuntu2.dsc

Перед сборкой можем добавить запись в debian/changelog о новом релизе пакета, немного подняв версию пакета. Для этого переходим в подготовленный подкаталог с уже дебианизированными исходниками (./sstp-client-1.0.15) и выполняем команду добавления информации в changelog:

# cd /tmp/sstp-client-build/sstp-client-1.0.15/
# debchange -v 1.0.15-0.2

В открывшемся текстовом редакторе пишем какой-нибудь комментарий о версии и, при желании, указываем информацию о сборщике пакета (желтым подчёркнуты изменения в changelog, которые были внесены в нашем случае):

Edit sstp-client changelog for deb package in Debian Linux with debchange tool

Сохраняем изменения в файле и закрываем его.

Теперь можем приступить к сборке deb-пакетов. Выполняем в текущем каталоге команду сборки:

# dpkg-buildpackage -rfakeroot

Проверяем результат сборки, перейдя на подкаталог уровнем выше, где должны появится готовые deb-пакеты.

# cd /tmp/sstp-client-build/
# ls -la *.deb


-rw-r--r-- 1 root root   5968 сен 20 19:04 libsstp-api-0_1.0.15-0.2_amd64.deb
-rw-r--r-- 1 root root   4632 сен 20 19:04 libsstp-api-0-dbgsym_1.0.15-0.2_amd64.deb
-rw-r--r-- 1 root root   5412 сен 20 19:04 libsstp-api-0-dev_1.0.15-0.2_amd64.deb
-rw-r--r-- 1 root root  42856 сен 20 19:04 sstp-client_1.0.15-0.2_amd64.deb
-rw-r--r-- 1 root root 114688 сен 20 19:04 sstp-client-dbgsym_1.0.15-0.2_amd64.deb

Из собранных deb-пакетов нам потребуется установить лишь 3 пакета:

# apt install ./libsstp-api-0_1.0.15-0.2_amd64.deb
# apt install ./sstp-client_1.0.15-0.2_amd64.deb
# apt install ./libsstp-api-0-dev_1.0.15-0.2_amd64.deb

Первые 2 пакета нужны для работы SSTP клиента, как такового. Третий пакет потребуется нам лишь время, для последующей сборки пакетов для Network Manager.


Собираем пакеты интеграции в Network Manager

Создаём временный каталог, переходим в него и скачиваем исходные файлы network-manager-sstp с файлами дебианизации:

# mkdir /tmp/sstp-client-nm-build
# cd /tmp/sstp-client-nm-build
# wget https://launchpad.net/~eivnaes/+archive/ubuntu/network-manager-sstp/+sourcefiles/network-manager-sstp/1.2.6-0ubuntu5/network-manager-sstp_1.2.6-0ubuntu5.dsc
# wget https://launchpad.net/~eivnaes/+archive/ubuntu/network-manager-sstp/+sourcefiles/network-manager-sstp/1.2.6-0ubuntu5/network-manager-sstp_1.2.6-0ubuntu5.debian.tar.xz
# wget https://launchpad.net/~eivnaes/+archive/ubuntu/network-manager-sstp/+sourcefiles/network-manager-sstp/1.2.6-0ubuntu5/network-manager-sstp_1.2.6.orig.tar.bz2
# ls -l


-rw-r--r-- 1 root root   4952 авг 25 19:37 network-manager-sstp_1.2.6-0ubuntu5.debian.tar.xz
-rw-r--r-- 1 root root   2138 авг 25 19:37 network-manager-sstp_1.2.6-0ubuntu5.dsc
-rw-r--r-- 1 root root 450813 авг 25 19:37 network-manager-sstp_1.2.6.orig.tar.bz2

В текущем каталоге запускаем команду распаковки исходных текстов (.orig.tar.bz2) и внедрения файлов дебианизации (.debian.tar.xz) с помощью файла *.dsc:

# dpkg-source -x /tmp/sstp-client-nm-build/network-manager-sstp_1.2.6-0ubuntu5.dsc

Перед сборкой можем добавить запись в debian/changelog о новом релизе пакета. Для этого переходим в подготовленный подкаталог с уже дебианизированными исходниками (./network-manager-sstp-1.2.6) и выполняем команду добавления информации в changelog:

# cd /tmp/sstp-client-nm-build/network-manager-sstp-1.2.6/
# debchange -v 1.2.6-0.2

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

Edit network-manager-sstp changelog for deb package in Debian Linux with debchange tool

Сохраняем изменения в файле и закрываем его.

Выполняем сборку пакетов в текущем каталоге:

# dpkg-buildpackage -rfakeroot

Проверяем результат сборки, перейдя на подкаталог уровнем выше, где должны появится готовые deb-пакеты:

# cd /tmp/sstp-client-nm-build
# ls -l *.deb


-rw-r--r-- 1 root root 112016 сен 20 19:32 network-manager-sstp_1.2.6-0.2_amd64.deb
-rw-r--r-- 1 root root  79120 сен 20 19:32 network-manager-sstp-dbgsym_1.2.6-0.2_amd64.deb
-rw-r--r-- 1 root root  28744 сен 20 19:32 network-manager-sstp-gnome_1.2.6-0.2_amd64.deb
-rw-r--r-- 1 root root  56276 сен 20 19:32 network-manager-sstp-gnome-dbgsym_1.2.6-0.2_amd64.deb

Устанавливаем 2 пакета, которые потребуются для возможности управления настройками SSTP клиента из графического интерфейса Network Manager:

# apt install ./network-manager-sstp_1.2.6-0.2_amd64.deb
# apt install ./network-manager-sstp-gnome_1.2.6-0.2_amd64.deb

Проверка результата

В результате предыдущих действий мы имеем в системе 5 установленных пакетов:

# dpkg -l | grep sstp


ii  libsstp-api-0                1.0.15-0.2  amd64  Connect to a Microsoft Windows 2008 server using SSTP VPN
ii  libsstp-api-0-dev            1.0.15-0.2  amd64  Connect to a Microsoft Windows 2008 server using SSTP VPN
ii  network-manager-sstp         1.2.6-0.2   amd64  network management framework (SSTP plugin core)
ii  network-manager-sstp-gnome   1.2.6-0.2   amd64  network management framework (SSTP plugin GNOME GUI)
ii  sstp-client                  1.0.15-0.2  amd64  Connect to a Microsoft Windows 2008 server using SSTP VPN

Уже сейчас функциональность SSTP клиента должна стать нам доступной и работать. Можем настроить VPN-подключение по протоколу SSTP в графической среде Gnome.

VPN settings in Gnome 3 Network Manager on Debian Linux


Очистка после сборки

После сборки и установки, пакет libsstp-api-0-dev нам больше уже не нужен, так как он требовался исключительно для сборки других пакетов. Его можем удалить:

# apt remove libsstp-api-0-dev

Также можем удалить все пакеты, которые мы ранее устанавливали для обеспечения сборочной среды (второй командой удаляем все неиспользуемые более пакеты-зависимости):

# apt remove build-essential devscripts fakeroot ppp-dev libevent-dev libssl-dev intltool libnm-dev libnma-dev libsecret-1-dev libgtk-3-dev libglib2.0-dev
# apt autoremove

При желании сохраняем в отдельное место все собранные deb-пакеты, а затем удаляем временные каталоги сборки со всем содержимым:

# mkdir /home/petya/MyFiles/sstp-client_packages/
# cp /tmp/sstp-client-*/*.deb /home/petya/MyFiles/sstp-client_packages/
# cd ..
# rm -R /tmp/sstp-client-*

Любители "мануальной терапии", закрывающие глаза на ранее упомянутые риски использования частных источников, и желающие забрать уже готовые (и проверенные в работе) файлы deb-пакетов под Debian 11.0 64-bits могут заглянуть сюда.

Всего комментариев: 4 Комментировать

  1. Евгений /

    dpkg-source -x /tmp/sstp-client-build/sstp-client_1.0.15-0ubuntu2.dsc
    dpkg-source: ошибка: не удалось прочитать /tmp/sstp-client-build/sstp-client_1.0.15-0ubuntu2.dsc: No such file or directory
    Подскажите, как обойти?

    1. Алексей Максимов / Автор записи

      Что значит "обойти" ? Команда сообщает об отсутствии файла *.dsc

  2. Виталий /

    Спасибо за инструкцию. Работает! Получилось через облако Keenetic с помощью sstp добраться до локальной сети за серым ip адресом и добраться до серверов там с помощью ssh соединения. Раньше можно было это делать только с помощью своего VPN сервера.
    Даже более того. Собрать deb пакеты из новой версии - 1.0.16-0ubuntu3
    Хоть доступа напрямую к ним и нет )

Добавить комментарий