Jump to content

makepkg-optimize (Русский)

From ArchWiki

Состояние перевода: На этой странице представлен перевод статьи makepkg-optimize. Дата последней синхронизации: 16 сентября 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

makepkg-optimizeAUR — это коллекция дополнительных tidy, buildenv и executable скриптов для pacman, которые предоставляют макросы для нескольких видов оптимизации на этапах build() и package().

Примечание Как и в случае с любым пакетом из Arch User Repository, makepkg-optimizeAUR не имеет официальной поддержки. Читайте и отправляйте комментарии на его странице в AUR.

Установка

Установите пакет makepkg-optimizeAUR и, чтобы сделать доступными оптимизации, требующие их, установите бэкенды: openmp, upx, optipng, svgo и polly.

Настройка

makepkg-optimizeAUR генерирует избыточный файл настроек /etc/makepkg-optimize.conf, из вашего текущего makepkg.conf(5).

В файле присутствуют дополнительные опции: COMPILE FLAGS, BUILD ENVIRONMENT, GLOBAL PACKAGE OPTIONS, PACKAGE OUTPUT и COMPRESSION DEFAULTS — все они по умолчанию отключены.

Создание оптимизированного пакета

Важно Некоторые пакеты могут не собираться с определёнными оптимизациями, а чрезмерная оптимизация может вызвать проблемы в некоторых программах — например, снижение производительности и ошибки сегментирования.

После выбора предпочтительных оптимизаций используйте этот файл настроек при сборке:

$ makepkg -c --config /etc/makepkg-optimize.conf
Совет Используйте -c c makepkg, чтобы предотвратить повторное использование пакетами устаревших флагов оптимизации. Смотрите Makepkg (Русский)#Использование.
Примечание Profile-guided optimization требует, чтобы пакет был собран и установлен дважды. Первая фаза инициирует генерацию профилей в $PROFDEST/pkgbase.gen; вторая перемещает их в $PROFDEST/pkgbase.used и применяет их.

Сборка оптимизированного пакета в чистом chroot

В качестве альтернативы makepkg-optimize можно использовать для сборки оптимизированных пакетов внутри chroot.

Настройка chroot

После настройки chroot необходимо выполнить несколько дополнительных шагов.

Установка makepkg-optimize и бэкендов

Сначала установите некоторые бэкенды для макросов оптимизации в базовый chroot:

$ arch-nspawn "$CHROOT"/root pacman -S openmp upx optipng polly

Затем скачайте и соберите пакеты makepkg-optimizeAUR и svgo.

Чтобы установить их в базовый chroot, скопируйте в него файлы пакетов и установите их, например:

# cp svgo-1.2.2-2-any.pkg.tar.xz "$CHROOT"/root/root/
$ arch-nspawn "$CHROOT"/root pacman -U /root/svgo-1.2.2-2-any.pkg.tar.xz
Важно Это аннулирует гарантию на ваш "чистый" chroot!

Использование chroot

Сборка пакета

Сначала отредактируйте $CHROOT/root/etc/makepkg-optimize.conf и выберите предпочтительные оптимизации.

При сборке передайте файл настроек в makepkg:

$ makechrootpkg -c -r "$CHROOT" -- -c --config /etc/makepkg-optimize.conf
Сборка с PGO

Опция pgo для BUILDENV включает генерацию или применение профилей в зависимости от того, выполняется ли первая или вторая сборка пакета с этим флагом. Сборка в чистом chroot усложняет эту задачу, поскольку программа запускается вне chroot для генерации профилей, но профили должны быть применены внутри chroot при последующей перекомпиляции. Решение состоит в объединении трёх файловых систем с помощью bind-монтирования.

Создание кэша PGO

Создайте каталог для хранения профилей и выполните bind-монтирование:

# mkdir -m 777 {"$CHROOT"/{root,"$USER"},}/mnt/pgo
# mount -o bind {,"$CHROOT"/root}/mnt/pgo
# mount -o bind "$CHROOT"/{root,"$USER"}/mnt/pgo
Совет Используйте fstab для автоматического bind-монтирования при загрузке системы.
#PGODEST
/полный/путь/к/$CHROOT/$USER/mnt/pgo/ /mnt/pgo/ none bind,x-gvfs-hide 0 0
/mnt/pgo/ /полный/путь/к/$CHROOT/root/mnt/pgo/ none bind,x-gvfs-hide 0 0

Примечание Введите полный путь к каталогам chroot pgo, без использования каких-либо $ПЕРЕМЕННЫХ

Отредактируйте $CHROOT/root/etc/makepkg-optimize.conf и установите PROFDEST=/mnt/pgo.

Профилирование программы

Соберите, затем установите пакет и выполните тестовый запуск его исполняемых файлов.

Примечание Профили создаются при завершении работы программы (exit()). Для создания профилей постоянно работающих демонов, таких как systemd, может потребоваться перезагрузка.

После тщательного использования программы закройте её, затем пересоберите и переустановите её пакет.