Начальная

Windows Commander

Far
WinNavigator
Frigate
Norton Commander
WinNC
Dos Navigator
Servant Salamander
Turbo Browser

Winamp, Skins, Plugins
Необходимые Утилиты
Текстовые редакторы
Юмор

File managers and best utilites

Компиляция и установка программ из исходников. Собрать из исходников браузер


Сборка Mozilla Firefox (x64) из исходников под ОС Windows.

Сегодня мы с вами займемся таким интересным процессом, как сборка браузера Mozilla Firefox из исходников под Windows x64. Зачем это нужно делать? Ну если я скажу что таким образом вы сможете приобщиться к сообществу разработчиков Open Source и собрать собственный build браузера, то это прозвучит наверное смешно ;) На самом деле release'ные сборки Firefox'а содержат "компоненты", которые нужны далеко не всем, плюс как пишут на некоторых форумах собственноручно собранный build Firefox работает немного быстрее, к тому же можно "поиграть" с различными флагами оптимизации в компиляторе и т.д. и т.п. Как говорится, есть кастомные прошивки, почему бы и не быть кастомным браузерам? Несколько полезных ссылок, которыми я руководствовался при сборке: Читаем, и делаем все по написанному. А именно, вначале устанавливаем MSVC, у меня уже была установленной Visual Studio 2013, поэтому этот шаг я пропустил. Далее нам могут понадобиться DirectX SDK и Windows SDK. Опять же, я ни то ни другое не качал, т.к. решил что какая-то часть DirectX SDK у меня была установлена вместе с MSVC, поэтому я пренебрег этим пунктом. Далее качаем MozillaBuild и устанавливаем его в папку по-умолчанию, т.е. в C:\mozilla-build .

Далее заходим в нее и запускаем файл start-shell-msvc2013-x64.bat (в моем случае, в вашем случае - возможно другой, если версия MSVC у вас другая, например 2015-я, кстати в последней версии набора MozillaBuild поддерживаются только эти два компилятора) и попадаем в консоль. Предварительно я создал папку "D:\Work\Mozilla Firefox\" , именно в ней у нас будет "копия исходников". После запуска start-shell-msvc2013-x64.bat у нас открывается консоль. Набираем в ней:

cd /d/work/Mozilla_Firefox для перехода в данную папку

hg clone https://hg.mozilla.org/mozilla-central для загрузки исходников (~4 Gb)

В результате, после того как исходники скачаются получаем следующее:

Теперь создаем в папке "D:\Work\Mozilla_Firefox\mozilla-central" файл конфига .mozconfig со следующим содержанием:

ac_add_options --disable-gamepad

ac_add_options --target=x86_64-pc-mingw32

ac_add_options --host=x86_64-pc-mingw32

И запускаем сборку в консоли:

cd /d/work/Mozilla_Firefox/mozilla-central

./mach mercurial-setup здесь отвечаем на вопросы по настройке Mercurial

./mach clobber очищаем результаты предыдущей сборки

./mach build и запускаем сборку

Обратите внимание, путь к папке с исходниками не должен содержать пробелов. Т.е. изначально я создал папку D:\Work\Mozilla Firefox (это можно видеть на скрине), но перед сборкой переименовал ее в D:\Work\Mozilla_Firefox.

Результат успешной сборки:

Собранные файлы находятся в D:\Work\Mozilla_Firefox\mozilla-central\obj-ff\dist\bin\ ... чтобы запустить собранный Firefox можно набрать ./mach run в консоли, или запустить exe'шник firefox'а из папки bin. 

Как видно, все работает:

Обратите внимание, что т.к. мы брали исходники из mozilla-central у нас получилась Nightly сборка.

Ну и давайте попробуем подтвердить или опровергнуть миф о том, что "собственноручная сборка" браузера работает быстрее или медленнее официального релиза. Понятно, что в данном случае тестирование будет достаточно субъективным, т.к. нашу Nightly сборку мы будем сравнивать с релизной версией, в данном случае с Firefox 45.0.1 x64 отсюда. Для начала результаты теста на http://html5test.com/ :
  • Релизная сборка - 478 из 555 очков.
  • Наша Nightly сборка - 482 из 555 очков.
Следующий тест на котором мы будем проводить испытания - это Peacekeeper от Futuremark:
  • Релизная сборка - 4577 очков.
  • Наша Nightly сборка - 4167 очков.
Для тех интересны получившиеся у меня в результате бинарники - взять их можно здесь - Firefox_Nightly_48.0a1_(2016-03-27).7z . На всякий случай напомню, что это сборка только для x64 систем. Сборка с русской локализацией - Firefox_Nightly_48.0a1_(2016-03-27)_ru.7z, конфиг использовавшийся для сборки build'а с русской локалью:mk_add_options [email protected]@/obj-ff ac_add_options --disable-gamepad ac_add_options --target=x86_64-pc-mingw32 ac_add_options --host=x86_64-pc-mingw32 mk_add_options MOZ_MAKE_FLAGS="-j4" ac_add_options --enable-optimize="-O2" ac_add_options --disable-debug ac_add_options --disable-tests mk_add_options MOZ_CO_LOCALES=ru ac_add_options --enable-ui-locale=ru ac_add_options --with-l10n-base=D:\\Work\\Mozilla_Firefox\\l10n-central\\ Полезные материалы по теме

www.decker.su

...как самостоятельно собрать Selenium из исходников? • А хотите, я расскажу вам...

Краткая инструкция по сборке Selenium:

Всё, можно пользоваться.

А теперь всё то же самое, но более подробно.

0. Зачем?

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

Да, большинству пользователей в большинстве случаев именно так и надо делать – использовать готовый дистрибутив. Но иногда хочется, знаете, чего-то такого…

Например, вот прямо сейчас, в тот момент, когда я пишу эту заметку, “релизная” версия Selenium ещё не позволяет запускать тесты в новых версиях браузера Opera, которые построены на движке Blink, а если собрать Selenium из исходников – это уже можно делать.

Или, скажем, вышло предупреждение, что Apache HttpClient версий до 4.3.6 содержит потенциальную уязвимость, а вы очень беспокоитесь по поводу защищенности тестового стенда – это уже исправлено, но новый релиз будет ещё не скоро.

Ну или вы набрались решимости самостоятельно исправить какой-нибудь баг в Selenium, который вам ужасно мешает, а ленивые разработчики Selenium почему-то его игнорируют (видимо, им не мешает).

В общем, хочется иногда. Эта заметка именно для тех, кому хочется.

1. Установить Java SDK

Это подробно описано в инструкции по установке Java, только обратите внимание, что для сборки Selenium потребуется Java SDK, а не JRE.

2. Установить клиент Git

Клиентов Git много, на любой вкус и цвет, но лично я предпочитаю либо консольный, либо GUI-клиент Git Extensions, именно он дальше будет показан на скриншотах.

3. Клонировать репозиторий Selenium

Существует два репозитория, в которых хранится код Selenium, они синхронизируются раз в несколько минут, и можно клонировать любой из них:

Запускаем клиент Git Extensions и жмём там кнопку-ссылку Clone repository:

Указываем адрес репозитория, локальную директорию, в которую его нужно клонировать, и жмём кнопку Clone:

Репозиторий достаточно объёмный, поэтому тут придётся немного подождать, можно успеть выпить кофе перед следующим весьма ответственным шагом.

4. Выполнить сборку Selenium

Запускаем консоль (cmd), переходим в ту директорию, в которую был клонирован репозиторий командой cd c:\temp\selenium и там выполняем команду go release:

Тут придётся подождать ещё дольше (хотя, конечно, не так долго, как если бы вы собирали Firefox или Chromium из исходников)…

Во время сборки из интернета будут загружаться четыре версии Gecko SDK. Они нужны для того, чтобы скомпилировать библиотеки для поддержки нативных событий в браузере Firefoх (что это такое - я расскажу как-нибудь потом). На самом деле, если у вас не установлен на машине компилятор для языка C, эти библиотеки скомпилироваться не смогут. Вместо них будут использованы предварительно собранные версии библиотек, которые уже есть в репозитории. Но четыре версии Gecko SDK всё равно скачаются. Когда-нибудь мы это оптимизируем. Может быть.

В общем, если подождать достаточно долго, то этот процесс завершится, и в подкаталоге buid\dist вы найдёте собранный файл selenium-server-standalone-2.44.0.jar (на момент написания версии номер версии именно такой, в будущем, понятно, он будет отличаться).

Это и есть готовый дистрибутив, который содержит всё необходимое для разработки тестов на Java с использованием Selenium, а также Selenium Server.

Вот и всё.

Ну, или почти всё, потому что ещё есть библиотеки для C#, Ruby и Python, которые собираются немного иначе. Но это уже совсем другая история.

barancev.github.io

Teeworlds. Собираем под Windows из исходников.

Дело было вечером, делать было нечего ... ;) Началась эта история с того, что один из участников нашего сообщества @kolobus рассказал мне об игре Teeworlds. Для тех кто не в курсе - это такая "ретро" мультиплеерная стрелялка. По первым скриншотам она мне почему-то напомнила червяков, но, как оказалось, геймплей намного динамичнее и фактически это просто неплохой action. Нормальный человек бы посвятил первое знакомство с игрой непосредственно процессу, но меня почему-то зацепило другое. В разделе Downloads на официальном сайте игры я увидел версии для Win32 и Linux 64-bit'а (речь идет о последней на данной момент версии 0.6.3), однако, релиза 0.6.3 для Win64 почему-то не было. Хотя на сайте говорится что как раз в версии сервера 0.6.3 пофикшена уязвимость сервера. Вообщем не долго думая я решил разобраться, а как собрать всё это из исходников, чтобы заполучить бинарники клиента и сервера под Windows 64. В принципе получилось довольно быстро.

Первое что необходимо сделать - это прочитать мануал по сборке, благо разработчики все достаточно подробно описали - Compiling Teeworlds. Ставим Python 2.7, git (в любом случае он будет полезен) и MSVC 2013. Как говорится в мануале плюсом ко всему нам потребуется bam - https://github.com/matricks/bam , однако на Git'е последняя версия -  0.5, а сборочный скрипт bam.lua от игры требует версию 0.4. Ок ... качаем исходники bam-0.4.0 и слегка правим скрипты make_win32_msvc.bat и make_win64_msvc.bat добавляя туда поддержку современных компиляторов. Например для x64:

@echo off @REM Check for Visual Studio call set "VSPATH=" if defined VS140COMNTOOLS ( if not defined VSPATH ( call set "VSPATH=%%VS140COMNTOOLS%%" ) ) if defined VS120COMNTOOLS ( if not defined VSPATH ( call set "VSPATH=%%VS120COMNTOOLS%%" ) ) if defined VS110COMNTOOLS ( if not defined VSPATH ( call set "VSPATH=%%VS110COMNTOOLS%%" ) ) if defined VS100COMNTOOLS ( if not defined VSPATH ( call set "VSPATH=%%VS100COMNTOOLS%%" ) ) if defined VS90COMNTOOLS ( if not defined VSPATH ( call set "VSPATH=%%VS90COMNTOOLS%%" ) ) if defined VS80COMNTOOLS ( if not defined VSPATH ( call set "VSPATH=%%VS80COMNTOOLS%%" ) ) @REM check if we already have the tools in the environment if exist "%VCINSTALLDIR%" ( goto compile ) if not defined VSPATH ( echo You need Microsoft Visual Studio 8, 9, 10, 11, 12, 13 or 15 installed pause exit ) @REM set up the environment if exist "%VSPATH%..\..\vc\vcvarsall.bat" ( call "%%VSPATH%%..\..\vc\vcvarsall.bat" amd64 goto compile ) echo Unable to set up the environment pause exit :compile Для x86 в принципе все то же самое, только вместо vcvarsall.bat нужно использовать vsvars32.bat. Скрипты для сборки bam'а можно посмотреть в Git'е для 0.5.0. В итоге у нас собирается bam.exe ... отлично ... Далее качаем исходники самой Teeworlds - teeworlds-0.6.3-src.zip и распаковываем в отдельную папку. Создаем build.cmd следующего вида (шапка для поддержки компиляторов выше), а затем следующие строки:cd teeworlds-0.6.3-src ..\bam-0.4.0\bam -c all ..\bam-0.4.0\bam client_release ..\bam-0.4.0\bam server_release После чего запускаем компиляцию и получаем несколько ошибок в результате, которые касаются функции round. Исправить их довольно просто:
  • Открываем в исходниках Teeworlds заголовочный файл src/base/math.h и ищем там определение функции round - inline int round(float f), заменяем round на roundmy, так чтобы получилось так - inline int roundmy(float f).
  • Затем открываем \src\game\editor\layer_tiles.cpp и ищем в нем метод void CLayerTiles::BrushRotate(float Amount), в нем мы видим вызов  int Rotation = (round(360.0f*Amount/(pi*2))/90)%4; - заменяем его на вызов roundmy, т.е. в итоге у нас получается строка: int Rotation = (roundmy(360.0f*Amount/(pi*2))/90)%4;

Всё, на этом предварительная подготовка исходников закончена. Собираем и получаем бинарники (если вы проводите сборку под Win64, то bam по всей видимости нужно собирать 64-битным, если под Win32, то 32-х).

Ну а кого просто интересует конечный результат, т.е. готовые бинарники клиента и сервера Teeworlds 0.6.3 для Windows 64-bit, то вот они - teeworlds-0.6.3-win64.7z .

Обновлено 22.09.2016 02:51 (MSK) Да, ну и обнаружив официальный репозиторий teeworlds на GitHub'е - https://github.com/teeworlds/teeworlds я не мог пройти мимо чтобы не попробовать собрать последнюю 0.7 trunk :

Все получилось, единственное, что при сборке использовался уже свежий bam 0.5.0 и более свежая версия SDL 2.0.4 (stable). Результат, а именно бинарники Teeworlds 0.7 trunk можно забрать тут:

В сборку включены стандартные карты, файлы языковых переводов и т.п., а также клиент и сервер. Единственное о чем следует помнить - публичных серверов на версии 0.7 пока не так много и играть вы сможете только на тех серверах у кого он собран c той же GAME_NETVERSION_HASH, у этой сборки он равен "8743be4f24dc7e35".

www.decker.su

Компиляция 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 Firefox3. Сборка Mozilla Thunderbird4. Сборка Instantbird5. Полезные ссылки и ресурсы

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

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

sudo apt-get install zip unzip mercurial g++ make autoconf2.13 yasm libgtk2.0-dev libglib2.0-dev libdbus-1-dev libdbus-glib-1-dev libasound2-dev libcurl4-openssl-dev libiw-dev libxt-dev mesa-common-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev

Если вы собираетесь скомпилировать помимо продуктов 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 вы всегда можете воспользоваться вашим свободным пространством на жестком диске для расширения памяти, создав там файл подкачки и подключив его в систему. Эту процедуру можно сделать с помощью следующих команд:

cd ~

dd if=/dev/zero of=swapfile.img bs=1M count=5120

mkswap swapfile.img

sudo swapon swapfile.img

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

free -m

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

sudo swapoff swapfile.img

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

2. Сборка Mozilla Firefox

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

tar -xjvf ~/Downloads/firefox-25.0.source.tar.bz2 -C /tmp

cd /tmp/mozilla-release/

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

mk_add_options PYTHON=/usr/bin/python2

mk_add_options MODULE_OPTIMIZE_FLAGS="-march=native -O2 -Os -mmmx -msse -msse2 -mssse3"

mk_add_options MOZ_OPTIMIZE_FLAGS="-march=native -O2 -Os -mmmx -msse -msse2 -mssse3"

mk_add_options OPTIMIZER="-march=native -O2 -mmmx -Os -msse -msse2 -mssse3"

mk_add_options INTERP_OPTIMIZER="-march=native -O2 -Os -mmmx -msse -msse2 -mssse3"

mk_add_options MOZ_MAKE_FLAGS="-j4"

 

ac_add_options --host=x86_64-linux-gnu

ac_add_options --prefix=/opt/Mozilla/Firefox

ac_add_options --enable-application=browser

 

ac_add_options --disable-crashreporter

ac_add_options --disable-installer

ac_add_options --disable-updater

ac_add_options --disable-debug

ac_add_options --disable-debug-symbols

ac_add_options --disable-tests

 

ac_add_options --enable-optimize="-march=native -O2 -Os -mmmx -msse -msse2 -mssse3"

ac_add_options --enable-strip

ac_add_options --enable-install-strip

 

ac_add_options --enable-gio

ac_add_options --enable-official-branding

ac_add_options --enable-safe-browsing

ac_add_options --enable-url-classifier

ac_add_options --enable-jemalloc

ac_add_options --enable-dbus

ac_add_options --enable-ogg

ac_add_options --enable-wave

ac_add_options --enable-methodjit

ac_add_options --enable-tracejit

 

ac_add_options --with-pthreads

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

cd ~/Downloads && wget https://bitbucket.org/exlmotodev/storage/raw/671b954fa8a3bb93008903e237b651086e44bb4f/Mozconfigs/Firefox_buildconfig

cp ~/Downloads/Firefox_buildconfig /tmp/mozilla-release/.mozconfig && cd -

Небольшое пояснение включенных в конфиге некоторых опций.Флаги -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

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

mach and the build system store shared state in a common directory on the

filesystem. The following directory will be created:

 

  /home/exl/.mozbuild

 

If you would like to use a different directory, hit CTRL+c and set the

MOZBUILD_STATE_PATH environment variable to the directory you would like to

use and re-run mach. For this change to take effect forever, you'll likely

want to export this environment variable from your shell's init scripts.

 

20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Если необходимо, изменяем каталог «/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» в ваше окружение:

cd ~

echo -e '\nexport PATH=/opt/Mozilla/Firefox/bin:$PATH' >> .bashrc

source .bashrc

После этого можно будет запустить скомпилированный 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» и переходим в каталог с исходниками:

tar -xjvf ~/Downloads/thunderbird-24.1.0.source.tar.bz2 -C /tmp

cd /tmp/comm-esr24/

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

mk_add_options PYTHON=/usr/bin/python2

mk_add_options MODULE_OPTIMIZE_FLAGS="-march=native -O2 -Os -mmmx -msse -msse2 -mssse3"

mk_add_options MOZ_OPTIMIZE_FLAGS="-march=native -O2 -Os -mmmx -msse -msse2 -mssse3"

mk_add_options OPTIMIZER="-march=native -O2 -mmmx -Os -msse -msse2 -mssse3"

mk_add_options INTERP_OPTIMIZER="-march=native -O2 -Os -mmmx -msse -msse2 -mssse3"

mk_add_options MOZ_MAKE_FLAGS="-j4"

 

ac_add_options --host=x86_64-linux-gnu

ac_add_options --prefix=/opt/Mozilla/Thunderbird

ac_add_options --enable-application=mail

 

ac_add_options --disable-crashreporter

ac_add_options --disable-installer

ac_add_options --disable-updater

ac_add_options --disable-debug

ac_add_options --disable-debug-symbols

ac_add_options --disable-tests

 

ac_add_options --enable-optimize="-march=native -O2 -Os -mmmx -msse -msse2 -mssse3"

ac_add_options --enable-strip

ac_add_options --enable-install-strip

 

ac_add_options --enable-gio

ac_add_options --enable-official-branding

ac_add_options --enable-safe-browsing

ac_add_options --enable-url-classifier

ac_add_options --enable-jemalloc

ac_add_options --enable-dbus

ac_add_options --enable-ogg

ac_add_options --enable-wave

ac_add_options --enable-methodjit

ac_add_options --enable-tracejit

ac_add_options --enable-calendar

 

ac_add_options --with-pthreads

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

cd ~/Downloads && wget https://bitbucket.org/exlmotodev/storage/raw/671b954fa8a3bb93008903e237b651086e44bb4f/Mozconfigs/Thunderbird_buildconfig

cp ~/Downloads/Thunderbird_buildconfig /tmp/comm-esr24/.mozconfig && cd -

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

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

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

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

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

python2 mozilla/mach build

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

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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

We know it took a while, but your build finally finished successfully!

Error running mach:

 

    ['build']

 

The error occurred in code that was called by the mach command. This is either

a bug in the called code itself or in the way that mach is calling it.

 

You should consider filing a bug for this issue.

 

If filing a bug, please include the full output of mach, including this error

message.

 

The details of the failure are as follows:

 

Exception: Binary expected at /tmp/comm-esr24/obj-x86_64-unknown-linux-gnu/dist/bin/thunderbird does not exist.

 

  File "/tmp/comm-esr24/mozilla/python/mozbuild/mozbuild/mach_commands.py", line 353, in build

    app_path = self.get_binary_path('app')

  File "/tmp/comm-esr24/mozilla/python/mozbuild/mozbuild/base.py", line 279, in get_binary_path

    raise Exception('Binary expected at %s does not exist.' % path)

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

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

sudo python2 mozilla/mach install

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

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

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

cd ~

echo -e 'export PATH=/opt/Mozilla/Thunderbird/bin:$PATH' >> .bashrc

source .bashrc

Если вам необходим переносимый пакет для установки в другие 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) следует загрузить исходный код, доступный по этой ссылке, распаковать его и перейти в директорию с исходниками:

tar -xzvf ~/Downloads/instantbird-1.4.src.tgz -C /tmp

cd /tmp/instantbird-1.4-src/

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

mk_add_options PYTHON=/usr/bin/python2

mk_add_options MODULE_OPTIMIZE_FLAGS="-march=native -O2 -Os -mmmx -msse -msse2 -mssse3"

mk_add_options MOZ_OPTIMIZE_FLAGS="-march=native -O2 -Os -mmmx -msse -msse2 -mssse3"

mk_add_options OPTIMIZER="-march=native -O2 -Os -mmmx -msse -msse2 -mssse3"

mk_add_options INTERP_OPTIMIZER="-march=native -O2 -Os -mmmx -msse -msse2 -mssse3"

mk_add_options MOZ_MAKE_FLAGS="-j4"

 

ac_add_options --host=x86_64-linux-gnu

ac_add_options --prefix=/opt/Mozilla/Instantbird

ac_add_options --enable-application=instantbird

 

ac_add_options --disable-crashreporter

ac_add_options --disable-installer

ac_add_options --disable-updater

ac_add_options --disable-debug

ac_add_options --disable-debug-symbols

ac_add_options --disable-tests

 

ac_add_options --enable-optimize="-march=native -O2 -Os -mmmx -msse -msse2 -mssse3"

ac_add_options --enable-strip

ac_add_options --enable-install-strip

 

ac_add_options --enable-gio

ac_add_options --enable-jemalloc

ac_add_options --enable-dbus

ac_add_options --enable-ogg

ac_add_options --enable-wave

ac_add_options --enable-methodjit

ac_add_options --enable-tracejit

 

ac_add_options --with-pthreads

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

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

cd ~/Downloads && wget https://bitbucket.org/exlmotodev/storage/raw/671b954fa8a3bb93008903e237b651086e44bb4f/Mozconfigs/Instantbird_buildconfig

cp ~/Downloads/Instantbird_buildconfig /tmp/instantbird-1.4-src/mozconfig && cd -

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

make -f client.mk build

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

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

...

  File "/usr/lib/python2.7/_sysconfigdata.py", line 6, in <module>

    from _sysconfigdata_nd import *

ImportError: No module named _sysconfigdata_nd

...

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

cd /usr/lib/python2.7

sudo ln -s plat-x86_64-linux-gnu/_sysconfigdata_nd.py .

cd -

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

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

sudo make -f client.mk install

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

cd ~

echo -e 'export PATH=/opt/Mozilla/Instantbird/bin:$PATH' >> .bashrc

source .bashrc

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

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

/tmp/instantbird-1.4-src/obj-x86_64-unknown-linux-gnu

sudo make package

Когда последняя команда выполнится, пакет «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

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

exlmoto.ru

Собираем ядро Linux | Losst

Самым основным компонентом операционной системы Linux есть ядро. Именно ядро выступает промежуточным звеном между пользовательскими программами и оборудованием компьютера. Во всех бинарных дистрибутивах нам не нужно заботиться о сборке и настройке ядра, все уже сделали за нас разработчики дистрибутива. Но если мы хотим собрать свой дистрибутив сами или установить самую свежую версию ядра, нам придется собирать ядро вручную.

Первый вариант раньше был актуален для тех кто хотел получить максимальную производительность от своего оборудования, но сейчас, учитывая стремительное увеличение мощности компьютеров увеличение производительности при сборке ядра совсем незаметно. Сейчас сборка ядра может понадобиться пользователям не бинарных дистрибутивов, таких как Gentoo, тем, кто хочет внести некоторые изменения в ядро, получить новую самую свежую версию ядра и, конечно, же тем, кто хочет полностью разобраться в работе своей системы.

В этой инструкции мы рассмотрим как собрать ядро Linux. Первая часть расскажет как настроить ядро в автоматическом режиме. Так сказать, для тех кто не хочет разбираться как оно работает, кому нужно лишь получить на выходе готовый продукт — собранное ядро. Во второй части мы рассмотрим основные этапы ручной настройки ядра, это процесс сложный, и небыстрый, но я попытаюсь дать основу, чтобы вы могли со всем разобраться сами.

Содержание статьи:

Получение исходников ядра

Самое первое что нужно сделать — это скачать исходники ядра. Исходники лучшие брать с сайта вашего дистрибутива, если они там есть или официального сайта ядра: kernel.org. Мы рассмотрим загрузку исходников с kernel.org.

Перед тем как скачивать исходники нам нужно определиться с версией ядра которую будем собирать. Есть две основных версии релизов — стабильные (stable) и кандидаты в релизы (rc), есть, конечно, еще стабильные с длительным периодом поддержки (longterm) но важно сейчас разобраться с первыми двумя. Стабильные это, как правило, не самые новые, но зато уже хорошо протестированные ядра с минимальным количеством багов. Тестовые — наоборот, самые новые, но могут содержать различные ошибки.

Итак когда определились с версией заходим на kernel.org и скачиваем нужные исходники в формате tar.xz:

kernel6

В этой статье будет использована самая новая на данный момент нестабильная версия 4.4.rc7.

Получить исходники ядра Linux можно также с помощью утилиты git. Сначала создадим папку для исходников:

mkdir kernel_sources

Для загрузки самой последней версии наберите:

git clone https://github.com/torvalds/linux

 

Распаковка исходников ядра

Теперь у нас есть сохраненные исходники. Переходим в папку с исходниками:

cd linux_sources

Или если загружали ядро linux с помощью браузера, то сначала создадим эту папку и скопируем в нее архив:

mkdir linux_sources

cp ~/Downloads/linux* ~/linux_sources

Распаковываем архив с помощью утилиты tar:

tar xf linux*

И переходим в папку с распакованным ядром, у меня это:

cd linux-4.4-rc7/

Автоматическая настройка сборки ядра Linux

Перед тем как начнется сборка ядра linux, нам придется его настроить. Как я и говорил, сначала рассмотрим автоматический вариант настройки сборки ядра. В вашей системе уже есть собранное, настроенное производителем дистрибутива, и полностью рабочее ядро. Если вы не хотите разбираться с тонкостями конфигурации ядра, можно просто извлечь уже готовые настройки старого ядра и сгенерировать на их основе настройки для нового. Нам придется лишь указать значения для новых параметров. Учитывая, что в последних версиях не было и не намечается серьезных изменений можно отвечать на все эти параметры как предлагает скрипт настройки.

Параметры используемого ядра хранятся в архиве по адресу /proc/config.gz. Распакуем конфиг и поместим его в нашу папку утилитой zcat:

zcat /proc/config.gz > .config

А дальше запускаем скрипт адаптации настроек:

make oldconfig

В процессе его работы нужно будет ответить на несколько вопросов. Это новые параметры, которые изменились или были добавлены в новое ядро и поддержка нового оборудования, в большинстве случаев можно выбирать вариант по умолчанию. Обычно есть три варианта y — включить, n — не включать, m — включить в качестве модуля. Рекомендованный вариант написан с большой буквы, для его выбора просто нажмите Enter.

На все про-все у вас уйдет около 10-ти минут. После завершения процесса, ядро готово к сборке. Дальше мы рассмотрим настройку ядра вручную, а вы можете сразу перелистать к сборке ядра Linux.

Ручная настройка ядра Linux

Ручная настройка — сложный и трудоемкий процесс, но зато она позволяет понять как работает ваша система, какие функции используются и создать ядро с минимально нужным набором функций под свои потребности. Мы рассмотрим только главные шаги, которые нужно выполнить чтобы ядро собралось и заработало. Со всем остальным вам придется разбираться самому опираясь на документацию ядра. Благо в утилите настройки для каждого параметра есть обширная документация которая поможет вам понять какие еще настройки нужно включить.

Начнем. Для запуска меню настроек ядра linux наберите:

make menuconfig

Откроется вот утилита с интерфейсом ncurses:

kernel5

Как видите, некоторые обязательные опции уже включены, чтобы облегчить вам процесс настройки. Начнем с самых основных настроек. Чтобы включить параметр нажмите y, чтобы включить модулем — m, для перемещения используйте клавиши стрелок и Enter, возвратиться на уровень вверх можно кнопкой Exit Откройте пункт General Setup.

Здесь устанавливаем такие параметры:

Local Version — локальная версия ядра, будет увеличиваться при каждой сборке на единицу, чтобы новые ядра при установке не заменяли собой старые, устанавливаем значение 1.

kernel1

Automatically append version information to the version string — добавлять версию в название файла ядра.

Kernel Compression Mode — режим сжатия образа ядра, самый эффективный lzma.

Default Hostname — имя компьютера, отображаемое в приглашении ввода

POSIX Message Queues — поддержка очередей POSTIX

Support for paging of anonymous memory  — включаем поддержку swap

Control Group support — поддержка механизма распределения ресурсов между группами процессов

Kernel .config support и Enable access to .config through /proc/config.gz— включаем возможность извлечь конфигурацию ядра через /proc/config.gz

Здесь все, возвращаемся на уровень вверх и включаем Enable loadable module support, эта функция разрешает загрузку внешних модулей, дальше открываем его меню и включаем:

kernel3

Module unloading — поддержка отключения модулей

Forced module unloading — принудительное отключение модулей

Опять возвращаемся назад и открываем Processor type and features:

Processor family (Opteron/Athlon64/Hammer/K8) — выбираем свой тип процессора.

Опять возвращаемся и переходим в раздел File systems, тут установите все нужные галочки.

kernel4

Обязательно включите The Extended 3 (ext3) filesystem и The Extended 4 (ext4) filesystem — для поддержки стандартных ext3 и ext4 файловых систем

Возвращаемся и идем в Kernel hacking.

Здесь включаем Magic SysRq key — поддержка магических функций SysRq, вещь не первой необходимости, но временами полезная.

Остался еще один пункт, самый сложный, потому что вам его придется пройти самому.  Device Drivers — нужно пройтись по разделам и повключать драйвера для своего оборудования. Под оборудованием я подразумеваю нестандартные жесткие диски, мышки, USB устройства, веб-камеры, Bluetooth, WIFI адаптеры, принтеры и т д.

Посмотреть какое оборудование подключено к вашей системе можно командой:

lspci

После выполнения всех действий ядро готово к сборке, но вам, скорее всего, предстоит разобраться с очень многим.

Чтобы сохранить настройки переместите указатель с помощью стрелок вправо-влево, з позиции Select в позицию Save и нажмите Enter, потом еще раз подтвердите сохранение:

kernel

Чтобы выйти нажмите пару раз кнопку Exit.

Сборка ядра Linux

После завершения всех приготовлений может быть выполнена сборка ядра linux. Для начала процесса сборки выполните:

make && make modules

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

Установка нового ядра

Когда ядро и модули будут собраны новое ядро можно устанавливать. Можно вручную скопировать файл ядра в папку загрузчика:

cp arch/x86_64/boot/bzImage /boot/vmlinuz

А можно просто выполнить установочный скрипт, сразу установив заодно и модули:

sudo make install && sudo make modules_install

После установки не забудьте обновить конфигурацию загрузчика Grub:

grub-mkconfig -o /boot/grub/grub.cfg

И перезагружаем компьютер чтобы увидеть новое ядро в работе:

sudo reboot

Выводы

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

losst.ru

Установка/Сборка программ с исходников в Ubuntu Linux | Linuxsoid

Часто ли вы сталкивались с тем, что нужной версии приложения для вашей архитектуры в дистрибутиве Ubuntu просто нет, но данная программа имеется на сайте разработчиков в виде исходников в архиве .tar.gz. Думаю многим знакома данная ситуация, но не все продолжали искать пути решения данного вопроса и просто искали другой аналог приложения или версию немного старее и продолжали работать.

Сразу же хочется добавить несколько слов для новичков в Linux, прежде чем что-то выполнять с данной статьи, изучите основательно терминал и команды которые используются для работы с ним, почитайте маны или же материалы в сети.

Часто ли вы сталкивались с тем, что нужной версии приложения для вашей архитектуры в дистрибутиве Ubuntu просто нет, но данная программа имеется на сайте разработчиков в виде исходников в архиве .tar.gz. Думаю многим знакома данная ситуация, но не все продолжали искать пути решения данного вопроса и просто искали другой аналог приложения или версию немного старее и продолжали работать.

Сразу же хочется добавить несколько слов для новичков в Linux, прежде чем что-то выполнять с данной статьи, изучите основательно терминал и команды которые используются для работы с ним, почитайте маны или же материалы в сети.

Сборка программ с исходников в linux

  • Для сборки приложений нам конечно же потребуются инструменты разработчика, в нашем случае это компилятор и другие сопутствующие ему программы, главную работу конечно нам будет выполнять утилита make, а командная строка (терминал) будет как бы нашей кухней где мы и будем готовить/собирать/устанавливать наше приложение с исходников. В Linux терминал доступен по умолчанию, для вашего удобства вы конечно же можете установить любой другой более функциональный к которому вы привыкли, я например использую Guake, уж очень много возможностей в сравнении с стандартным, где легко настроить как копирование так и вставку команд или любого текста с помощью CTRL+C,CTRL+V и много другого, что делает работу с консолью более комфортной.
  • 1. С чего стоит начать при сборке приложений с исходников, это конечно же скачать приложение в архиве tar.gz или же tar.bz2, в моем случае это например приложение Gimp 2.9.2, хотя в нашем случае архив не tar.gz формата, а tar.bz2, это не имеет никакой разницы, качаем, после правой кнопкой мыши по архиву — Извлечь здесь.

На этом пожалуй первый этап завершен, что мы делаем далее? А далее мы запускаем терминал и перейдем в нашу распакованную папку с файлами:

cd /home/linux/Загрузки/gimp-2.9.2/ ls

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

cборка приложения с исходников

  • 2. Перед запуском подготовки исходников к сборке советовал бы прежде открыть и ознакомиться с файлом INSTALL, найдете очень много полезной информации, в данном файле описывается как устанавливать приложение, какие команды нужно выполнять и много чего еще интересного. Сейчас я вас советую установить дополнительный пакет под названием — auto-apt, выполняет много рутинной работы вместо вас. 
sudo apt-get install auto-apt

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

auto-apt -y run ./configure

Конечно можно выполнить конфигурацию и без помощь данного пакета и просто выполнить команду:

./configure

Если выполнять конфигурацию с приставкой — auto-apt -y run, то подготовка исходников к сборке будет происходить в автоматическом режиме, то есть эта команда может автоматически скачивать и установит вместо вас все необходимые файлы и библиотеки и удовлетворит все зависимости которые потребуются.

  • 3. При реальной работе не все так гладко, может в одном случае пройдет все хорошо и этап подготовки исходников к сборке пройдет без ошибок, в других же случаях и таких наверное большинство, вы будете встречать ошибки разного рода например, не хватает того или иного пакета для дальнейшей подготовки исходников. В большинстве случае пишется название пакета которого не хватает.

Пробуем установить отсутствующий пакет командой:

sudo apt-get install pakage_name

В том случае если пакет при выполнении команды выше не обнаруживается, меня очень часто выручает следующая комбинация, ищем пакеты которых нам не хватает в кеше:

apt-cache search pakage_name
  • После выполнения данной команды подходящий пакет вы может и найдете, часто бывает что подходящий пакет вы не находите, но встречается точная копия пакета но с приставкой dev то есть пакет вида pakage_name-dev и вы можете воспользоваться им чтобы удовлетворить зависимости.
  • 4. После удачного завершения конфигурации исходников для сборки, желательно установить пакет checkinstall который облегчает работы с сборкой пакета приложения под ваш дистрибутив.
sudo apt-get install checkinstall

Установили пакет, после можно выполнить команду:

checkinstall -D
  • Атрибут -D создаст deb пакет, атрибут -R создаст rpm-пакет, который применяется в дистрибутивах Fedora, RHEL, ASP Linux, ALT Linux, Mandriva, openSUSE, дополнительно имеется еще атрибут -S который создаст пакет применяемый в Slackware. 

В моем случае я работаю в Ubuntu и выполнил команду с атрибутом -D, далее пойдет сборка приложения в готовый пакет формата Deb, от нас потребуются некоторые уточнительные данные например такие как добавить описание к пакету, так как вы его собираете и соответственно описание совершенно чистое и как бы от вас требуется краткая справка, что это за приложение для чего. В моем случае как я проверил автоматически заполняются так же следующие поля:

1 -  Summary: [ EOF ] 2 -  Name:    [ gimp ] 3 -  Version: [ 2.9.2 ] 4 -  Release: [ 1 ] 5 -  License: [ GPL ] 6 -  Group:   [ checkinstall ] 7 -  Architecture: [ i386 ] 8 -  Source location: [ gimp-2.9.2 ] 9 -  Alternate source location: [  ] 10 - Requires: [  ] 11 - Provides: [ gimp ] 12 - Conflicts: [  ] 13 - Replaces: [  ]
  • Как видно перед сборкой идет проверка, завершилась ли конфигурация успешно, не остались ли неудовлетворенные зависимости или другие конфликты, если все хорошо, то и сборка пакета пройдет без проблем.

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

make make install

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

make uninstall

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

Хотя и без ошибок прошло все, но весь процесс длился очень долго, примерно минут 20 пока у меня установился гимп с исходников, я успел пойти сделать кофе и еще наблюдать за процессом установки, долго все происходит из-за того, что приходится в много разных папок раскидать файлы исходников приложения, каждый файл имеет свое предназначение и должен находиться в определенной директории, так вот после выполнения make install и происходит процесс установки тысяч файлов исходников по требуемым директориям.

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

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

linuxsoid.club

Компиляция и установка программ из исходников

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

Программы обычно распространяются в упакованных архивах, это файлы с расширениями

<some_app_name>.tar.gz (иногда .tgz) <some_app_name>.tar.bz2

Нужно понимать отличие между архиватором и упаковщиком.

Для архивации директорий и файлов используется программа tar; результатом её работы является файл с расширением .tar. Грубо говоря, это копия файловой системы - директорий и файлов с их атрибутами и правами доступа, помещённая в один файл.

Данный файл по размеру будет чуть больше, чем суммарный размер файлов, которые были архивированы. Поэтому (а может и по другой причине) используют упаковщики - программы, которые позволяют уменьшить размер файла без потери данных.

Программа tar умеет распаковывать, поэтому не нужно вызывать gunzip, а можно просто указать программе tar, что файл нужно cначала распаковать. Например, команда

tar -xvf <some_app_name>.tar.gz

сразу распакует и разархивирует. Отличие файлов с расширениями

<some_app_name>.tar.gz

и

<some_app_name>.tar.bz2

лишь в том, что использовались разные упаковщики, программа tar определяет метод сжатия автоматически и дополнительных опций в данном случае не требуется.

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

cd <имя_пакета>*

Для сборки программ в GNU/Linux используется (в основном) программа make, которая запускает инструкции из Makefile, но поскольку дистрибутивов GNU/Linux много, и они все разные, то для того чтобы собрать программу, нужно для каждого дистрибутива отдельно прописывать пути,где какие лежат библиотеки и заголовочные файлы. Программисты не могут изучать каждый дистрибутив и для каждого отдельно создавать Makefile. Поэтому придумали конфигураторы, которые «изучают» систему, и в соответствии с полученными знаниями создают Makefile. Но на конфигураторе они не остановились и придумали конфигураторы конфигураторов =)…на этом они остановились :-)

Для сборки нам нужны компиляторы: они прописаны в зависимостях пакета build-essential, так что достаточно установить его со всеми зависимостями. Ещё нужны autoconf и automake.

Итак, чтобы собрать что-то из исходников, нужно сначала собрать конфигуратор; как собрать конфигуратор, описано в файле configure.in. Для сборки конфигуратора необходимо выполнить

./bootstrap

или

./autogen.sh

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

aclocal autoheader automake --gnu --add-missing --copy --foreign autoconf -f -Wall

Все эти команды используют файл configure.in. После выполнения этих команд создастся файл configure. После этого необходимо запустить конфигуратор для проверки наличия всех зависимостей, а также установки дополнительных опций сборки (если возможно) и просмотра результата установки (опционально- может не быть)

./configure

Конфигуратор построит Makefile основываясь на полученных знаниях и файле makefile.am. Можно передать конфигуратору опции, предусмотренные в исходниках программы, которые позволяют включать/отключать те или иные возможности программы, обычно узнать о них можно командой

./configure --help

Также есть набор стандартных опций, вроде

--prefix=

, которая указывает, какой каталог использовать для установки. Для Ubuntu обычно

--prefix=/usr

или

--prefix=/usr/local

БЕЗ слеша в конце! Теперь можно запустить процесс сборки самой программы командой

make

Для сборки достаточно привелегий обычного пользователя. Окончанием сборки можно считать момент, когда команды в консоли перестанут «беспорядочно» выполняться и не будет слова error. Теперь всё скомпилировано и готово для установки.

Усилия потраченные на Правильную установку в последствии с лихвой окупятся в случае удаления или обновления устанавливаемого программного обеспечения.

Установка при помощи утилиты checkinstall. Для установки выполните

sudo apt-get install checkinstall

Минус данного способа: checkinstall понимает не все исходники, поскольку автор программы может написать особые скрипты по установке и checkinstall их не поймёт.

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

sudo checkinstall

Быстрое создание deb-пакета «вручную».

Основное отличие от предыдущего способа заключается в том, что в данном случае вы создаете пакет вручную и отслеживаете все вносимые изменения. Так же этот способ подойдет вам, если исходники не поддерживают сборку пакета с checkinstall.

fakeroot make install DESTDIR=`pwd`/tempinstall сd tempinstall mkdir DEBIAN find etc | sed "s/^/\//" > DEBIAN/conffiles Package: имя_пакета Version: 1.2.3 Architecture: amd64/i386/armel/all Maintainer: Можете вписать своё имя, можете дребедень, но если оставить пустым, то dpkg будет ругаться Depends: Тут можно вписать список пакетов через запятую. Priority: optional Description: Тоже надо что-нибудь вписать, чтобы не кидало предупреждения
  • При необходимости там же можно создать скрипты preinst, postinst, prerm и postrm.

  • Создаем deb-пакет, для чего выполняем:

dpkg -b tempinstall sudo dpkg -i tempinstall.deb

Процедура создания deb-пакета подробно описана в данной статье.

Минус данного способа заключается в том, что если вы устанавливаете напрямую через make install, то нормально удалить или обновить пакет вы, скорее всего, не сможете. Более того, установка новой версии поверх старой, скорее всего, затрёт ваши изменения в конфигах. make install делает ровно то, что ему сказано — производит установку файлов в нужные места, игнорируя тот факт, что там что-то уже есть. После этого процесса совершенно никакой информации о том, что и куда ставилось, получить в удобоваримом виде невозможно. Иногда, конечно, Makefile поддерживает действие uninstall, но это встречается не так часто, да и не факт, что корректно работает. Кроме того, вам будет необходимо хранить для деинсталяции распакованное дерево исходников и правил сборки.

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

sudo make install

Для удаления пакета, установленного данным способом необходимо выполнить в корневой директории исходников программы (там где вы запускали make install).

sudo make uninstall

Часто на этапе конфигурации конфигуратор сообщает, что нехватает той или иной библиотеки. Название библиотеки, которое он сообщает, не всегда соответствует названию пакета в Ubuntu. Из собственного опыта могу посоветовать поискать в Синаптике нужный пакет, исключив префикс lib, если нашлось несколько пакетов различающихся приставкой -dev в названии, то вам нужно установить именно -dev пакет (обычно он тянет за собой и не -dev пакет). Можно ещё поискать с помощью http://packages.ubuntu.com/, введя имя библиотеки в поиск по содержимому пакетов, аналогично, если найдётся dev и не dev, нужны оба :-). Ну или просто поискать в Google.

Пакеты с буквами mm в конце описания — это пакеты для C++ программ. Список для bmpx, но подойдёт почти для любой GTK2/Gnome программы. Так что если не получается собрать, то посмотрите на этот список и сверьте с тем что у вас установлено.

Compile: Runtime: X GlibMMGTK+ GTKMM GladeGladeMMXMLXML++DBusAlsaHALGaminNeonTagLibStartup-NotifyBoostMusicBrainzGStreamer
libx11-devlibx11-6
libglibmm-2.4-devlibglibmm-2.4-1c2a
libgtk2.0-dev,gtk-doc-toolslibgtk2.0-0
libgtkmm-2.4-devlibgtkmm-2.4-1c2a
libglade2-devlibglade2-0
libglademm-2.4-devlibglademm-2.4-1c2a
libxml2-devlibxml2
libxml++2.6-devlibxml++2.6c2a
libdbus-1-dev,libdbus-glib-1-devlibdbus-1-2,libdbus-glib-1-2
libasound2-devlibasound2
libhal-dev,libhal-storage-devlibhal1,libhal-storage1
libgamin-devlibgamin0
libneon25-devlibneon25
libtagc0-devlibtagc0
libstartup-notification0-devlibstartup-notification0
libboost-dev,libboost-filesystem-devlibboost-filesystem1.33.1
libmusicbrainz4-devlibmusicbrainz4c2a
libgstreamer0.10-dev,libgstreamer-plugins-base0.10-devlibgstreamer0.10-0,libgstreamer-plugins-base0.10-0

help.ubuntu.ru


Смотрите также

 

..:::Новинки:::..

Windows Commander 5.11 Свежая версия.

Новая версия
IrfanView 3.75 (рус)

Обновление текстового редактора TextEd, уже 1.75a

System mechanic 3.7f
Новая версия

Обновление плагинов для WC, смотрим :-)

Весь Winamp
Посетите новый сайт.

WinRaR 3.00
Релиз уже здесь

PowerDesk 4.0 free
Просто - напросто сильный upgrade проводника.

..:::Счетчики:::..