Управление пакетами
   8785

Ускорение сборки пакетов AUR

Ещё раз об ускорении сборки пакетов из AUR (для тех, кто пропустил).

1. Откройте для себя пакет pacaur. Позволяет почти полностью уйти от порой весьма многочисленных «да/нет» при установке. Кроме того с успехом заменяет pacman. Одним словом два в одном. Англоязычный форум пакета.
yaourt -S pacaur 

Примечание: всегда проверяйте актуальное состояние пакетов AUR helpers, в связи с изменениями после отказа сообщества от поддержки пакета yaourt.
2. Настройте ваш компьютер с помощью пакета ccache. Ускоряет повторную и последующие компиляции пакета. Страница в вики. Дополнительным преимуществом нижеприведенных настроек является возможность использования всех ваших ядер при компиляции.
pacaur -S ccache
sudo nano /etc/makepkg.conf 

Два изменения в makepkg.conf. Раскомментировать
BUILDENV=(fakeroot !distcc color ccache check !sign) 

Раскомментировать и редактировать
MAKEFLAGS
установив значение потоков в соответствии с вашим процессором. Например, 8 потоков (4 ядра) будут выглядеть вот так
MAKEFLAGS="-j8" 

И дополнительная строка в .bashrc (скрытый файл в домашней директории home).
export PATH="/usr/lib/ccache/bin/:$PATH" 

Оригинал на английском (но понять очень легко) здесь.

В Новый год с новыми возможностями!)))

P.S. После занимательного обсуждения почти через полтора года после данной публикации. И благодаря уточнениям форумян @dimonmmk и @SpongeBob оптимальным вариантом признано внесение следующих изменений в /etc/makepkg.conf в две секции

#########################################################################
# ARCHITECTURE, COMPILE FLAGS
#########################################################################
MAKEFLAGS="-j10 -l5"

...
#########################################################################
# COMPRESSION DEFAULTS
#########################################################################
COMPRESSXZ=(xz -c -z - --threads=0)


Опции в MAKEFLAGS оптимизируют количество потоков и загрузку системы. Данная в тексте конфига рекомендация корректна для 4-х ядерного процессора и при включенном HT. Каждый пользователь самостоятельно выбирает оптимальный вариант для своего процессора… Подробности для продвинутых юзеров здесь. Если этот выбор вызывает затруднения, то @dimonmmk предлагает следующий выход
MAKEFLAGS="-j$(nproc)"

Опция в COMPRESSXZ --threads=0 включает все ядра для сжатия.
Дополнительно. Чтобы довести процесс до блеска можно учесть нижеследующее. Изменение PKGEXT='.pkg.tar' вместо PKGEXT='.pkg.tar.xz' — это выигрыш в скорости, но проигрыш в пространстве. SSD у многих пока невелики, а время оно бесконечно. Лучше будет
PKGEXT='.pkg.tar.lzo'

Не так быстро как просто .tar, но быстрей чем .tar.xz.
И таблица сравнения размера пакетов различными упаковщиками от @dimonmmk.
Управление пакетами: Ускорение сборки пакетов AUR

9 комментариев

avatar
Как раз то, чего не хватало
0
avatar
Немного странно.
Да, MAKEFLAGS позволяет компилировать в несколько потоков, но j8 по сравнению с j2 не даст, конечно, прирост в четыре раза. И поможет она только при компиляции, а не при перепаковке. Что интересно, в Gentoo wiki предлагают ставить в MAKEFLAGS количество ядер + 1, то есть, в данном случае, не 8, а 9.
А вот ccache к количеству ядер отношения не имеет, он позволяет ускорить процесс, если вы часто компилируете одни и те же пакеты. При этом этот кэш, естественно, занимает место на диске, стоит ли это делать в Арче/Манджаро — не уверен (другое дело — Gentoo). При простой перепаковке пакетов также не поможет.
+1
avatar
Подправил текст после Ваших замечаний. Сделав необходимые уточнения. А то в первом варианте смысл получался немного другой. Спасибо.
+1
avatar
Если вдруг pacaur не найдёт нового майнтейнера и перестанет выполнять свои функции — на сегодня уже существует неплохая альтернатива trizen.
В моменте этот пакет по критерию популярность находится в топе AUR. Импонирует практически аналогичный синтаксис команд при схожей фукциональности.

Да и другие аналогичные проекты стали более активно развиваться, всё больше соответствуя необходимым критериям. Что хорошо видно из сравнительной таблицы.
Последний раз редактировалось
+1
avatar
Кроме того, trizen поддерживается pamac-ом…
0
avatar
Продублирую отсюда. В AUR helpers изменения.

!!yaourt!! и trizen попали в компанию к pacaur (прекращение поддержки и проблематичные). А yaourt весь красный!

Появился новый интересный проект aurman. Это только то, что увидел беглым взглядом. Что пропустил?)
P.S. Довольно популярен стал pikaur. Проект pacaur вновь возродился. Кроме того заслуживает внимания yay (либо yay-bin). Поскольку всё меняется загляните в актуальную версию статьи AUR helpers на вики.
Последний раз редактировалось
0
avatar
yay.
Довольно интересная оболочка, не падает, если не обновился один из пакетов и меньше раз надо тыкать Y/n.

Из минусов: нет красивой раскраски вывода, всё унылое чёрно-белое как в пакмане.
aurman мне тоже понравился, но через какое-то время он начинает дико медленно работать, я не отов ждать 20-30 секунд чтобы сработал поиск пакетов (может так тупит он только у меня).

UPD::
Можно включить раскраску вывода как в пакмане так и во всех на нём основанных менеджерах. Надо залезть в файл /etc/pacman.conf, там есть много интересных опций, например логи установки, IgnorePkg,…
Кароче всё для счастья юзера
:-)
Последний раз редактировалось
0
avatar
В связи с очередным обновлением, вот и в манджаро завезли, только сегодня заметил:
Разработчики Arch Linux сообщили о переводе схемы упаковки пакетов с алгоритма xz (.pkg.tar.xz) на zstd (.pkg.tar.zst). Пересборка пакетов в формат zstd привела к суммарному увеличению размера пакетов на 0.8%, но обеспечило ускорение распаковки на 1300%. Как следствие, переход на zstd приведёт к заметному увеличению скорости установки пакетов. В настоящее время в репозитории с использованием алгоритма zstd уже сжато 545 пакетов, остальные пакеты будут переведены на zstd по мере формирования для них обновлений.
в строку PKGEXT='.pkg.tar.lzo', думаю, стоит вписать PKGEXT='.pkg.tar.zst'
Последний раз редактировалось
?
Отправка специалистом технической поддержки ссылки на руководство по эксплуатации и другую документацию, не является отказом в предоставлении поддержки.
bash.org
+1
avatar
а если пакет еще не был переведен на zstd то что случится во время установки?
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.