Параллельная (многопоточная) сборка пакетов в Gentoo

Многие, даже начинающие пользователи Gentoo наверняка знают о том, как задействовать все ядра своего процессора при сборке/пересборке мира для уменьшения времени компиляции. Если через /etc/make.conf передать пакетному менеджеру portage опцию

MAKEFLAGS="-j5"

то он в свою очередь заставит make задейстовать все 4 ядра вашего процессора при сборке пакетов. Но есть довольно много пакетов которые в силу своих особенностей не могут быть собраны в несколько потоков. В скриптах сборки (ebuild или просто ебилдах) таких пакетов мэйнтейнеры жестко ограничено количество потоков сборки для ее успешного завершения. К таким пакетам относятся например Firefox, LibreOffice, glibc и т.д.

Для того, чтобы не ждать пока Firefox или LibreOffice доковыляют на одном ядре до финиша, можно использовать все остальные для сборки других пакетов, которые не имеют подобных ограничений. Чтобы получить такую возможность нужно опять же через /etc/make.conf передать опцию

EMERGE_DEFAULT_OPTS="-j3"

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

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

Оцените статью