Компиляция Mozilla Firefox, Mozilla Thunderbird и Instantbird в дистрибутивах GNU/Linux

К сожалению, в репозиториях различных дистрибутивов GNU/Linux содержатся не совсем свежие версии популярных программ. Эта статья поможет вам скомпилировать из исходного кода последние релизы таких программных продуктов, как:



Логотипы Mozilla Firefox, Mozilla Thunderbird и Instantbird (слева направо)

Затем установить их и использовать в своей системе. Все эти приложения объединяет то, что они используют движок Gecko, а их интерфейс построен с использованием кросс-платформенного языка разметки XUL. Firefox и Thunderbird разрабатываются компанией Mozilla Corporation, а Instantbird является некоммерческим проектом, основанным несколькими французскими энтузиастами. Помимо XULRunner, который позволяет использовать для построения интерфейса язык разметки XUL, Instantbird использует libpurpule из проекта Pidgin. Библотека libpurpule позволяет мессенджеру работать со всеми популярными на данный момент протоколами и службами обмена мгновенными сообщениями.

Содержание:

1. Подготовка окружения для сборки
2. Сборка Mozilla Firefox
3. Сборка Mozilla Thunderbird
4. Сборка Instantbird
5. Полезные ссылки и ресурсы

1. Подготовка окружения для сборки

Для сборки я буду использовать Linux Mint 15 KDE 64-bit, но вы можете собирать данные программы в любом удобном для вас дистрибутиве GNU/Linux, в который следует установить следующие пакеты:

Если вы собираетесь скомпилировать помимо продуктов Mozilla, ещё и Instantbird, то в систему необходимо установить такие пакеты, как:

sudo apt-get install libavahi-glib-dev libavahi-client-dev



Последние установленные deb-пакеты в Linux Mint 15 KDE

Данные команды подходят для большинства популярных deb-based дистрибутивов, для rpm-based следует найти и установить аналогичные пакеты с помощью системного установщика, используемого в вашем дистрибутиве.

Для сборки тяжеловесных программных продуктов от Mozilla необходимо очень много оперативной памяти или swap’а. Если вы будете собирать дебажную версию Firefox’а или Thunderbird’а, не забудьте проверить, достаточно ли памяти в вашей системе для компиляции и линковки этих программ. Для успешной сборки дебажных бинарников и библиотек необходимо примерно 2GB RAM + 5GB SWAP. Для релизных бинарников и библиотек вполне хватит 2GB RAM + 2GB SWAP.

Если этап линковки вылетел с ошибкой:

collect2: error: ld terminated with signal 9

Необходимо расширить объем доступной памяти.

В дистрибутивах GNU/Linux вы всегда можете воспользоваться вашим свободным пространством на жестком диске для расширения памяти, создав там файл подкачки и подключив его в систему. Эту процедуру можно сделать с помощью следующих команд:

Проверить результат подключения файла можно с помощью команды:

free -m

Отключить использование файла подкачки «swapfile.img» можно с помощью команды:

sudo swapoff swapfile.img

<< Перейти к содержанию

2. Сборка Mozilla Firefox

Для начала, получим исходники последней версии браузера (на момент написания статьи последняя версия 25.0), перейдя по следующей ссылке. Затем распакуем загруженный архив в директорию «/tmp» и перейдем в папку с исходниками:

Теперь создадим конфигурационный файл, на основе опций в котором и будет строиться наш браузер. Для этого можно просто создать файл «.mozconfig» в директории «/tmp/mozilla-release/» и наполнить его следующим содержимым:

Или же просто скачать этот файл и положить в нужный каталог, выполнив следующую группу команд:

Небольшое пояснение включенных в конфиге некоторых опций.
Флаги -march=native -O2 -Os -mmmx -msse -msse2 -mssse3, использующиеся в нескольких опциях, выполняют оптимизацию под использующийся процессор. При желании их можно отключить, оставив только -march=native -O2 -Os; тогда скомпилированная программа заработает на большем количестве процессоров (на очень старых Pentium’ах или AMD, к примеру).
Опция MOZ_MAKE_FLAGS="-j4" позволяет воспользоваться преимуществами многопоточной сборки. Благодаря чему время компиляции снижается в несколько раз. Аргумент «X» в конструкции «-jX» обычно вычисляется с помощью формулы «X = количество ядер в процессоре + 1». Для более быстрой компиляции и, соответственно, более жёсткой нагрузки на процессор, следует использовать «X = количество ядер в процессоре + 2». Если вы используете одноядерный процессор, можете закомментировать или удалить эту строку.

--host=x86_64-linux-gnu определяет целевую платформу для сборки.

Опция --prefix=/opt/Mozilla/Firefox определяет путь для установки скомпилированной программы и её ресурсов. При выполнении команды make install в этот каталог скопируются все необходимые для работы программы файлы. Вы можете закомментировать эту строку, если хотите, чтобы программа установилась в стандартный в большинстве дистрибутивов каталог для пользовательских программ — «/usr».

--disable-debug, --disable-debug-symbols, --enable-strip и --enable-install-strip полностью исключают возможность отладки исполняемого бинарника. Если вам необходимо собрать именно отладочную версию программы, отключите опции *strip*, и включите опции *debug*.
Примечание. Для сборки отладочной версии необходим большой объем дискового пространства и памяти.

--enable-official-branding включает позиционирование браузера как Mozilla Firefox с официальным логотипом. Без включения этой опции будет использован свободный логотип и бренд Aurora.

--enable-jemalloc позволяет использовать высокопроизводительный менеджер распределения памяти, благодаря которому использование программой RAM сокращается в несколько раз.

Опция --with-pthreads разрешает программе использовать многопоточность.

Для сборки в директории с исходниками следует выполнить команду:

python2 mach build

После которой последует предложение:

Если необходимо, изменяем каталог «/home/exl/.mozbuild», изменив переменную окружения MOZBUILD_STATE_PATH и вновь выполняем:

python2 mach build

После чего и начнёт выполняться процесс сборки. Компиляция и линковка браузера Mozilla Firefox занимает весьма много времени, продолжительность этапа сборки напрямую зависит от производительности вашего процессора и памяти.

Для сборки программных продуктов от Mozilla используется mach, обычный способ «./configure && make && make install» не работает. Благодаря системе сборки mach можно наблюдать за процессом компиляции с помощью статус-строки, в которой отображается, какой компонент программы собирается в данный момент. Помимо статус-строки, напротив каждого компилируемого файла отображается общее время, потраченное на компиляцию или линковку.

После успешной компиляции необходимо установить браузер Mozilla Firefox, в директорию, указанную в конфиге. Для запуска процесса установки следует выполнить команду:

sudo python2 mach install

Затем, при необходимости, можно добавить путь до симлинка «/opt/Mozilla/Firefox/bin/firefox» в ваше окружение:

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

firefox



Собранный браузер Mozilla Firefox 25 в Linux Mint 15 KDE 64-bit (кликабельно)

Помимо обычной установки, с помощью mach можно собрать установочный пакет, выполнив для этого в каталоге с исходниками:

sudo python2 mach package

После выполнения этой команды создастся переносимый пакет «firefox-VER.en-US.linux-ARCH.tar.bz2», который можно будет использовать в различных системах GNU/Linux. Этот пакет можно найти в сборочном каталоге «obj-ARCH/dist», находящимся в директории с исходным кодом. «ARCH» — в данном случае, архитектура процессора + хост. Для Linux Mint 15 KDE 64-bit, например, полный путь до пакета будет следующим: «/tmp/mozilla-release/obj-x86_64-unknown-linux-gnu/dist/firefox-25.0.en-US.linux-x86_64.tar.bz2».

Когда браузер Mozilla Firefox собран и установлен, можно перейти к удалению ненужного теперь исходного кода:

sudo rm -Rf /tmp/mozilla-release/

<< Перейти к содержанию

3. Сборка Mozilla Thunderbird

Получаем исходный код последней версии почтового клиента (на момент написания статьи это версия 24.1.0) по следующей ссылке, распаковываем его в директорию «/tmp» и переходим в каталог с исходниками:

Для конфигурирования в директории с исходниками необходимо создать специальный конфиг «.mozconfig», в который прописать необходимые опции. Список опций, которые я использую для сборки программы в среде KDE:

Опции нужно поместить в файл «.mozconfig». Это можно сделать вручную или воспользоваться следующей группой команд:

Описание некоторых опций в конфиге можно посмотреть здесь, а ниже я напишу про те, которые замещают или дополняют существующие:

Опция --enable-application=mail говорит о том, что из исходников будет собираться почтовый клиент.

--prefix=/opt/Mozilla/Thunderbird определяет каталог, в который будет устанавливаться программа. Вы можете удалить эту опцию, тогда каталог для установки будет стандартным — «/usr».

--enable-calendar включает в сборку специальный календарь.

Для компиляции Mozilla Thunderbird в каталоге с исходным кодом следует выполнить команду:

python2 mozilla/mach build

Компиляция выполняется с помощью системы сборки mach и занимает примерно 2-3 часа, в зависимости от производительности вашего процессора и объёма установленной оперативной памяти.



Процесс компиляции Mozilla Thunderbird системой сборки mach в терминале Konsole

Если при компиляции возникнет ошибка:

Тот тут написано, что её можно смело игнорировать, так как все необходимые программные файлы были уже успешно созданы.

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

sudo python2 mozilla/mach install

Она скопирует необходимые для работы программы файлы в директорию, определённую в конфигурационном файле.



Собранный Mozilla Thunderbird 24 в Gentoo Linux Awesome 64-bit (кликабельно)

Теперь можно добавить в переменную окружения «${PATH}» путь до симлинка на исполняемый файл этого почтового клиента:

Если вам необходим переносимый пакет для установки в другие GNU/Linux дистрибутивы, воспользуйтесь для его создания командой:

sudo python2 mozilla/mach package

После выполнения которой пакет «thunderbird-24.1.0.en-US.linux-x86_64.tar.bz2» можно будет забрать из каталога «/tmp/comm-esr24/obj-ARCH/mozilla/dist/», где «ARCH» в нашем случае — «x86_64-unknown-linux-gnu».

Когда почтовый клиент Mozilla Thunderbird полностью установлен и настроен, можно удалить исходники командой:

sudo rm -rf /tmp/comm-esr24/

<< Перейти к содержанию

4. Сборка Instantbird

Instantbird не разрабатывается компанией Mozilla Corporation, а небольшой группой французских разработчиков. Благодаря тому, что этот мессенджер использует библиотеку libpurple, в нём присутствует поддержка огромного количества протоколов и сервисов обмена мгновенными сообщениями. Для сборки последней версии Instantbird (на момент написания статьи последняя версия — 1.4) следует загрузить исходный код, доступный по этой ссылке, распаковать его и перейти в директорию с исходниками:

Система сборки в Instantbird основана на обычных Makefile’ах и может использовать как конфиг «mozconfig», так и «.mozconfig». Для конфигурирования программы Instantbird можно воспользоваться конфигом «mozconfig», вид которого должен быть приблизительно таким:

Опция --enable-application=instantbird указывает на то, что из исходников будет собираться клиент обмена мгновенными сообщениями Instantbird.
Описание некоторых остальных опций можно найти здесь.

Добавить опции в конфиг «mozconfig» можно как и вручную, так и воспользовавшись следующими командами:

В отличии от программных продуктов Mozilla, Instantbird не использует систему сборки mach. Поэтому для компиляции программы в каталоге с исходным кодом следует выполнить команду:

make -f client.mk build

Компиляция IM-мессенджера займёт приблизительно 1.5-2 часа.

Если во время компиляции появится ошибка:

Её следует исправить, выполнив следующие команды:

Этот баг встречается во многих дистрибутивах, основанных на Ubuntu.

Когда Instantbird успешно скомпилируется, его нужно установить в директорию, прописанную в файле «mozconfig». Это можно сделать командой:

sudo make -f client.mk install

Затем, при желании, можно добавить в переменную окружения «${PATH}» путь до исполняемого файла программы:



Собранный мессенджер Instantbird 1.4 в Linux Mint 15 KDE 64-bit (кликабельно)

Для того, чтобы сделать переносимый пакет, следует зайти в сборочный каталог «/tmp/instantbird-1.4-src/obj-ARCH/», где «ARCH» — архитектура процессора + хост. А затем выполнить соответствующую команду для сборки пакета. Например, в Linux Mint 15 KDE 64-bit команды будут следующими:

Когда последняя команда выполнится, пакет «instantbird-1.4.en-US.linux-x86_64.tar.bz2» можно будет забрать из директории «/tmp/instantbird-1.4-src/obj-x86_64-unknown-linux-gnu/mozilla/dist/».

После успешной компиляции и установки, следует подчистить каталог «/tmp», удалив исходники командой:

sudo rm -rf /tmp/instantbird-1.4-src/

<< Перейти к содержанию

5. Полезные ссылки и ресурсы

Наиболее полную информацию о сборке различных программных продуктов Mozilla Corporation для различных операционных систем можно найти официальном сайте разработчиков Firefox — developer.mozilla.org (MDN).

Отмечу наиболее полезные статьи оттуда:
Документация по системе сборки mach
Простая инструкция по сборке Mozilla Firefox
Сборка Mozilla Firefox в операционной системе GNU/Linux
Сборка Mozilla Firefox в операционной системе Windows
Общая инструкция по сборе Mozilla Firefox для различных операционных систем
Простой мануал по сборке Mozilla Thunderbird
Сборка Mozilla Thunderbird в операционных системах GNU/Linux и MacOS

Для клиента по обмену мгновенными сообщениями Instantbird, существует специальный ресурс, выполненный в формате wiki-энциклопедии:
Wiki-мануал по компиляции Instantbird

<< Перейти к содержанию

Manuals, Others

Комментарии: 3

    1. Вряд ли этот мануал 2014 года ещё актуален для сборки этих приложений в 2018 году. Да и Instantbird судя по всему прекратил развиваться в 2014 году.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *