piątek, 23 września 2016

Przyspieszamy czas tworzenia paczek

Nie, żadne magiczne ustawienia kompilatora. Nie o to chodzi. Program, który "steruje" kompilowaniem paczek zarządzanych przez pacmana, to makepkg. Jest on wykorzystywany nie tylko przy lokalnym tworzeniu paczek z jego pomocą, ale również chyba przez wszystkie tzw. helpery AUR. Program jest sterowany plikiem /etc/makepkg.conf.
Wewnątrz katalogu, w którym następuje budowa paczki, tworzone są dwa podkatalogi: src oraz pkg. W pierwszym następuje budowa (kompilacja) programu. Jeśli to zostanie wykonane bez błędów, skompilowany program wraz ze wszystkimi elementami niezbędnymi do jego działania umieszczany jest w katalogu pkg, którego wewnętrzna struktura odpowiada systemowi katalogów Archa (czy innej dystrybucji). Przynajmniej powinna odpowiadać. Następnie cała zawartość katalogu jest pakowana do pliku tar, który - jeśli domyślnych ustawień makepkg.conf nie zmienimy jest następnie kompresowany (np. do formatu xz. W ten sposób otrzymujemy znane nam paczki pacmana nazwa.pkg.tar.xz.
O ile jednak w przypadku paczek pobieranych ze zdalnych lokalizacji, ich kompresja ma sens, to w przypadku lokalnego budowania paczek na własny użytek, jak się wydaje mija się z celem. Nie tylko uzyskanie paczki trwa dłużej o czas kompresji (który może być całkiem znaczny - zobaczcie sobie ile trwa np. kompresowanie libreoffice-fresh-rpm), ale również wymaga dodatkowej przestrzeni dyskowej (albo zwiększa zapotrzebowanie na tę przestrzeń w tmpfs, co niekiedy prowadzi do zwrócenia informacji, że paczka nie została zbudowana, pomimo tego, że w istocie do formatu nazwa.pkg.tar to nastąpiło).
Tymczasem nieskompresowana paczka jest tak samo dobrze zarządzana przez pacmana, jak i paczka skompresowana. Jedyna różnica, to zabieranie większej ilości miejsca na dysku (jeśli ją tam zostawimy).
Jeśli zatem podzielacie moje spostrzeżenia, to możecie dokonać prostych czynności, które spowodują, że makepkg zaprzestanie kompresowania paczek.
W tym celu, dowolnym edytorem edytujemy plik /etc/makepkg.conf i odszukujemy w nim sekcję EXTENSION DEFAULTS, w której zmieniamy zawartość linii PKGEXT z:
PKGEXT='.pkg.tar.xz'
na
PKGEXT='.pkg.tar'
Od tej chwili makepkg będzie tworzył nieskompresowane paczki. Różnicę w czasie budowania sprawdźcie sobie na wpomnianym wcześniej libreoffice-fresh-rpm.