Главная > HOWTO > Собираем Telegram Desktop из исходников в Fedora

Собираем Telegram Desktop из исходников в Fedora

Большинство пользователей GNU/Linux не устраивает официальная сборка Telegram Desktop. В данном HOWTO мы рассмотрим как собрать Telegram самостоятельно из исходников.

Введение

Данная статья устарела и больше не рекомендуется к использованию. Предлагаем вам перейти к «Собираем RPM пакет Telegram Desktop для Fedora«.

Официальная сборка Telegram Desktop не поддерживает системные настройки сглаживания шрифтов и собрана со свободной реализацией freetype из состава Qt, из-за чего шрифты в клиенте выглядят ужасно.

Telegram никогда не будет добавлен в большинство популярных дистрибутивов GNU/Linux, включая Fedora, т.к. напрямую зависит от ffmpeg, который включает в себя запатентованные кодеки, распространение которых в США и ряде других стран запрещено.

Просто взять и собрать Telegram Desktop тоже не получится, т.к. необходимы специальные патчи для Qt и WebKit от авторов мессенджера и собранные static-версии ряда важных библиотек, от которых он зависит. Без всего этого клиент не может быть собран.

Подготовка к сборке

Весь процесс сборки будет проходить исключительно виртуальной машине. Мы оставляем её выбор за вами, но сами активно используем VirtualBox.

Не используйте скрипт вне виртуальной машины, т.к. это может привести к возникновению множества проблем!

Загрузим образ RussianFedora (можно использовать и оригинальные ISO образы Fedora, но тогда потребуется вручную подключить репозитории RPMFusion и RFR) для архитектуры x86_64. Возьмём образ Live XFCE, т.к. он меньше всего потребляет ресурсов.

Создадим новую виртуальную машину Fedora с следующей минимальной конфигурацией:

  • оперативная память: 6 ГБ (на нашей тестовой системе процессу сборки было мало 4 ГБ и он завершался с ошибкой нехватки памяти);
  • место на диске: 16 ГБ (2 ГБ для системы + 10 ГБ для сборки + 4 ГБ на swap раздел);
  • ядер процессора: 2 (рекомендуется указать количество ядер хоста минус один).

Установим RFRemix внутрь созданной виртуальной машины штатным способом. Обязательно при установке наделяем создаваемый аккаунт правами администратора с возможностью доступа к sudo.

Конфигурируем базовую систему

Теперь установим Git, компилятор, а также заголовочные файлы ядра для сборки дополнений гостевой ОС:

sudo dnf install git gcc kernel-headers kernel-devel

Подключим образ с дополнениями гостевой ОС и установим их:

sudo ./VBoxLinuxAdditions.run

Отключаем виртуальную машину и делаем снапшот текущего состояния.

Собираем Telegram Desktop

Запускаем виртуальную машину на созданном снапшоте, открываем терминал и скачиваем скрипты, используемые для сборки клиента:

git clone https://github.com/xvitaly/tgbuild.git tgbuild

Переходим в каталог сборки, переключаемся на ветку legacy и запускаем процесс:

cd tgbuild
git checkout legacy
./build_tg.sh

Скрипт сделает всё в полностью автоматическом режиме, но для установки компонентов будет запрашивать права суперпользователя посредством sudo. Этого можно избежать если заранее запустить сам скрипт с данными правами.

Получаем результат

По окончании сборки результат может быть найден в tdesktop/Linux/Release/Telegram. Это слинкованный статически со всеми необходимыми зависимостями бинарник, который будет работать практически где угодно.

Извлекаем этот бинарник в расшаренный каталог виртуальной машины, а затем помещаем например в ~/bin/ целевой системы. Теперь выключаем виртуальную машину (она нам больше не нужна) и откатываем снапшот, чтобы все изменения в ней были потеряны.

Запускаем собранный клиент

Т.к. бинарник слинкован со -static версией библиотеки libxcbcommon-x11, перед запуском нужно указать где находятся необходимые конфиги xkb:

export QT_XKB_CONFIG_ROOT=/usr/share/X11/xkb
~/bin/Telegram

Процесс успешно завершён. Можно использовать собственную сборку Telegram Desktop, которая будет использовать системные настройки сглаживания шрифтов и т.д.

Категории:HOWTO Метки:, , , , ,
  1. Роман
    13 сентября 2016 в 20:44 | #1

    Вчера вышла версия 0.10.5 на новой сборочной платформе. Ваш скрипт будет ее поддерживать?

  2. 16 сентября 2016 в 02:12 | #2

    Роман :

    Вчера вышла версия 0.10.5 на новой сборочной платформе. Ваш скрипт будет ее поддерживать?

    Скрипт уже обновлён. Теперь поддерживается сборка новых версий, использующих GYP.

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

Представьтесь, пожалуйста! Если ваш комментарий предполагает ответ, мы ответим на него в ближайшее время. Адрес электронной почты должен быть действительным.


Внимание! Запрещено публиковать любые ссылки в тексте комментария, иначе он сразу же будет помечен как нежелательный и не будет опубликован на сайте.