Независимо каква Linux дистрибуция използват, на някои потребители рано или късно им се налага да компилират от сорс. Тогава те изпадат по-често в ситуация, в която даден пакет изисква много големи времена за компилиране, в най-лошите случаи достигащи до часове. Част от тези потребители сигурно са се чудили как могат да намалят драстично тези времена и целта на това ръководство е точно това – да покаже как да намалим времената за компилиране от сорс код, било от AUR за Arch-базираните дистрибуции или при нужда, когато се налага да направим това ръчно.
Ако използвате Arch Linux или подобна дистрибуция и често прибягвате до AUR, тогава със сигурност ще искате да намалите времената на компилация, които в последните години стават все по-малки, но въпреки това определени пакети все още отнемат доста време за компилиране.
За наше щастие има има възможност да се укаже броят на ядрата, който машината използва, което води до наистина значително редуциране на времето, което е необходимо за компилиране. Това може да се приложи както при ръчно компилиране, така и при компилиране от AUR. Разбира се, подобни методи са налични и за Windows, но те не са предмет на тази тема.
Ето как да намалим времената за компилиране при Arch и Arch-базираните дистрибуции, когато се използва AUR:
За целта трябва просто да отворите с текстови редактор /etc/makepkg.conf, което става много лесно със следната команда в терминал:
CODE: Избери всички
sudo kate /etc/makepkg.conf
Kate се замества с текстовия редактор, който използвате вие. Ако използвате xed, командата става така:
CODE: Избери всички
sudo xed /etc/makepkg.conf
*разбира се, можете да отворите файловия мениджър с администраторски права и ръчно да отидете с мишката до файла, но с команда е много по-бързо и удобно. Само копирате и поставяте в терминал.
След като файлът makepkg.conf е отворен, трябва да намерите реда #MAKEFLAGS=“-j2″ и да махнете коментара пред него (#), за да стане активен, а цифрата при стойността -j2 да я замените с броя ядра, който притежава вашият процесор. Тук трябва да споменем, че важат и логическите ядра. Тоест, ако имате четириядрен процесор с още четири нишки, то въвеждате цифрата 8.
В интернет се водят доста спорове каква стойност е правилно да бъде въведена, като има мнения, че тя трябва да е с едно ядро повече от това, което притежава процесорът, а други мнения казват, че всъщност трябва да е с едно ядро по-малко. За да няма подобно объркване, аз съветвам да се използва стойността -j$(nproc), като по този начин системата сама решава какъв е броят на ядрата и каква стойност да заложи. Ако използвате този начин, то редът трябва да изглежда така:
Ако решите сами да укажете броя на ядрата, то редът трябва да изглежда така:
CODE: Избери всички
MAKEFLAGS="-j8"
като цифрата 8 я заменяте с броя на ядрата на вашия процесор.
Запазвате промените и затваряте текстовия файл. Оттук насетне времената за компилиране от AUR ще са намалени драстично, но има едно важно услове – в PKGBUILD файла задължително трябва да е указана стойността options=(‘!makeflags’), а някои мейнтейнъри не я слагат поради различни причини. Ако я няма, то можете да я добавите ръчно, за да може процесът по компилиране да се възползва от всички ядра, които притежава процесорът ви.
Добавянето на опцията също става лесно. Ако за инсталиране на програма от AUR обикновено използвате „yaourt -S програма –noconfirm„, то в случая ще трябва да премахнете флага –noconfirm, за да може системата да ви попита дали искате да редактирате PKGBUILD. Когато ви попита, избирате Y и добавяте опцията options=(‘!makeflags’).
Намаляване на времената за компилиране при всички дистрибуции:
Аналогично на това, независимо от Linux дистрибуцията, която използвате, можете да се възползвате от многоядрения си процесор, за да намалите времената на компилиране. Обикновено процесът по компилиране преминава в този ред:
CODE: Избери всички
./configure (+опции, ако искате такива)
make
make install
Ако искате процесът по компилирането да се възползва от многото ядра на процесора ви, то втората стъпка make я замествате с make -j$(nproc) или с конкретно указан брой на ядрата make -jx, като x е броят на ядрата, които притежава процесорът ви. При това положение стъпките стават следните:
CODE: Избери всички
./configure
make -j$(nproc)
make install
или ако сте решили сами да укажете броя на ядрата:
CODE: Избери всички
./configure
make -jx
make install
Подобна елементарна промяна наистина води до сериозно редуциране на времената за компилиране. С обикновената команда make с модерен процесор компилацията например на Wine отнема средно около 40-50 минути, но с използването на make -j$(nproc) времената падат само до 5-6 минути! Това, комбинирано с качването на компилирането в RAM паметта, дава много добри резултати, които правят така, че в повечето случаи времената за компилиране вече да не представляват никакъв проблем.
Изпробвайте и вие и споделете вашите впечатления.
Много полезен мат’рял. 🙂
Аз реших да заложа на сигурното и го направих да е $nproc. Така, когато си купя i7-4770, няма да се налага наново да редактирам файла, а системата сама ще си определя броя на ядрата.