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

Jump to content

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

2 languages

- English
- 日本語

From ArchWiki

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

Ссылки по теме

- DeveloperWiki:Building in a clean chroot
- Arch User Repository (Русский)

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, может потребоваться перезагрузка.

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

Category:

- Package management (Русский)