4.5. О SBU

Многие люди хотят знать, хотя бы приблизительно, сколько времени займет компиляция и установка каждого пакета. Поскольку Linux From Scratch может быть собран на многих, абсолютно разных, компьютерах, невозможно привести конкретное время. Самый большой пакет (Glibc) на новейших системах будет собираться около 20 минут, но на старых компьютерах его сборка может затянуться на три дня! Вместо того, чтобы указывать точное время, вводится понятие стандартной единицы сборки (Standard Build Unit, SBU).

Концепция SBU работает следующим образом. Самым первым из пакетов в этой книге компилируется Binutils в Глава 5. Время, которое займет компиляция этого пакета, будет принято за одну стандартную единицу сборки или 1 SBU. Время, требуемое каждому из остальных пакетов на компиляцию, измеряется относительно этого времени.

Например, представим пакет, которому для компиляции требуется 4.5 SBU. Это означает, что если Вам потребовалось 10 минут для компиляции и установки Binutils на первом шаге, сборка этого воображаемого пакета займет приблизительно 45 минут. На самом деле, большинство пакетов собираются быстрее, чем Binutils.

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

Чтобы ознакомиться с реальным временем сборки пакетов для некоторых компьютеров, мы рекомендуем посетить домашнюю страницу LinuxFromScratch SBU: http://www.linuxfromscratch.org/~sbu/.

[Замечание]

Замечание

На большинстве современных систем с несколькими процессорами (или ядрами) время компиляции пакета может быть сокращено за счет выполнения "параллельной сборки". Для этого можно установить соответствующую переменную окружения или непосредственно указать программе make количество доступных процессоров. Например, для процессоров Core2Duo можно указать make всегда выполнять построение в 2 потока:

export MAKEFLAGS='-j 2'

или каждый раз производить сборку так:

make -j2

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