Arch Linux AUR package build

Ускоряем сборку пакетов из AUR в Arch Linux и Manjaro

Каждый пользователь дистрибутива Arch Linux (как и Manjaro) замечал, что по умолчанию пакеты из AUR собираются в один поток, тем самым не задействуя весь потенциал процессора. Чтобы задействовать при сборке AUR пакетов все ядра ЦП, распараллелив процесс сборки, выполним следующие несколько нехитрых шагов.

Редактируем файл /etc/makepkg.conf

sudo nano /etc/makepkg.conf

В секции «ARCHITECTURE, COMPILE FLAGS» находим строку с параметром «MAKEFLAGS» и приводим её к следующему виду. Конструкция «-j$(nproc)» автоматически установит количество потоков компиляции в соответствии с количеством ядер центрального процессора.

MAKEFLAGS="-j$(nproc)"

В секции «COMPRESSION DEFAULTS» находим параметр «COMPRESSXZ». Он отвечает за количество потоков, которыми будет сжиматься файл пакета (этап «Сжатие пакета...»). Меняем его на это значение:

COMPRESSXZ=(xz -c -z - --threads=N)

где «N» — количество ядер процессора в системе, например --threads=4

Сохраняем изменения в файле и закрываем его (CTRL+ O -> ENTER, CTRL+X). Теперь пакеты из AUR будут собираться в многопоточном режиме, полностью загружая процессор во время сборки.

Рекомендую перед первой сборкой в многопоточном режиме проверить температуру ЦП в условиях полной загрузки!

Так как теперь при сборке makepkg будет загружать процессор на 100%, лучше заранее проверить максимальную температуру процессора под полной нагрузкой. В общем случае она не должна превышать 70℃. Сделать это можно, например, с помощью консольной утилиты stress.

После внесения этих изменений скорость сборки пакетов из AUR заметно выросла, так же как и нагрев CPU в процессе. Данный способ ускоряет компиляцию пакетов вне зависимости от используемого AUR helper'a, будь то yay, pacaur, yaourt и т.д.

Вы можете поделиться материалом в социальных сетях:

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

Ваш e-mail не будет опубликован, однако если вы его укажете, вам смогут приходить оповещения когда кто-то ответит на ваш комментарий.

Ваш адрес email не будет опубликован.