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

Состояние перевода:
На этой странице представлен перевод статьи
makepkg-optimize
. Дата последней синхронизации: 16 сентября 2022. Вы можете
помочь
синхронизировать перевод, если в английской версии произошли
изменения
.
Ссылки по теме
DeveloperWiki:Building in a clean chroot
Arch User Repository (Русский)
makepkg-optimize
AUR
— это коллекция дополнительных
tidy
,
buildenv
и
executable
скриптов для
pacman
, которые предоставляют макросы для нескольких видов оптимизации на этапах
build()
и
package()
.
Примечание
Как и в случае с любым пакетом из
Arch User Repository
,
makepkg-optimize
AUR
не имеет официальной поддержки. Читайте и отправляйте
комментарии
на его странице в AUR.
Установка
Установите
пакет
makepkg-optimize
AUR
и, чтобы сделать доступными оптимизации, требующие их, установите бэкенды:
openmp
,
upx
,
optipng
,
svgo
и
polly
.
Настройка
makepkg-optimize
AUR
генерирует избыточный файл настроек
/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-optimize
AUR
и
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
, может потребоваться перезагрузка.
После тщательного использования программы закройте её, затем пересоберите и переустановите её пакет.