「Makepkg-optimize」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(makepkg-optimize とバックエンドのインストール: makepkg-optimize depends=('pacman-git'))
タグ: visualeditor-switched
 
(4人の利用者による、間の13版が非表示)
2行目: 2行目:
 
[[Category:パッケージ管理]]
 
[[Category:パッケージ管理]]
 
[[en:Makepkg-optimize]]
 
[[en:Makepkg-optimize]]
  +
[[ru:Makepkg-optimize]]
 
{{Related articles start}}
 
{{Related articles start}}
{{Related4|DeveloperWiki:Building in a clean chroot}}
+
{{Related|DeveloperWiki:クリーンな chroot 内でビルドする}}
 
{{Related|Arch User Repository}}
 
{{Related|Arch User Repository}}
 
{{Related articles end}}
 
{{Related articles end}}
   
{{AUR|makepkg-optimize}} は {{AUR|pacman-git}} を補助する [https://git.archlinux.org/pacman.git/commit/?id=508b4e3ec0cb3e365942f4dc0626edda4789932b buildenv] と [https://git.archlinux.org/pacman.git/commit/?id=295a3491adc4af5c8634ac82777212ed9c664457 tidy] スクリプト集です。{{ic|build()}} と {{ic|package()}} で最適化をかけるマクロを提供します。
+
{{AUR|makepkg-optimize}} は [[pacman]] を補助する [https://git.archlinux.org/pacman.git/commit/?id=295a3491adc4af5c8634ac82777212ed9c664457 tidy]、[https://git.archlinux.org/pacman.git/commit/?id=508b4e3ec0cb3e365942f4dc0626edda4789932b buildenv] と [https://git.archlinux.org/pacman.git/commit/?id=0bb04fa16a82db133dd010478c1256bc8500c5e7 executable] スクリプト集です。{{ic|build()}} と {{ic|package()}} で最適化をかけるマクロを提供します。
   
 
{{Note|[[Arch User Repository]] の他のパッケージと同じく、{{AUR|makepkg-optimize}} に公式サポートはありません。AUR ページのコメント欄を使ってください。}}
 
{{Note|[[Arch User Repository]] の他のパッケージと同じく、{{AUR|makepkg-optimize}} に公式サポートはありません。AUR ページのコメント欄を使ってください。}}
13行目: 14行目:
 
== インストール ==
 
== インストール ==
   
{{AUR|makepkg-optimize}} をインストールしてください。また、最適化を行うためにバックエンドをインストールしてください: {{Pkg|openmp}}, {{Pkg|upx}}, {{Pkg|optipng}}, {{AUR|nodejs-svgo}}
+
{{AUR|makepkg-optimize}} をインストールしてください。また、最適化を行うためにバックエンドをインストールしてください: {{Pkg|openmp}}, {{Pkg|upx}}, {{Pkg|optipng}}, {{AUR|svgo}}, {{Pkg|polly}}
   
=== 設定 ===
+
== 設定 ==
   
 
{{AUR|makepkg-optimize}} は現在の [[makepkg]] の設定から {{ic|/etc/makepkg-optimize.conf}} という名前の [https://jlk.fjfi.cvut.cz/arch/manpages/man/makepkg.conf.5 設定ファイル] を生成します。
 
{{AUR|makepkg-optimize}} は現在の [[makepkg]] の設定から {{ic|/etc/makepkg-optimize.conf}} という名前の [https://jlk.fjfi.cvut.cz/arch/manpages/man/makepkg.conf.5 設定ファイル] を生成します。
   
 
このファイルには[[Makepkg#最適化されたパッケージの作成|コンパイルフラグ]], [https://aur.archlinux.org/cgit/aur.git/tree/buildenv_ext.conf?h=makepkg-optimize ビルド環境], [https://aur.archlinux.org/cgit/aur.git/tree/pkgopts_ext.conf?h=makepkg-optimize パッケージオプション], [https://aur.archlinux.org/cgit/aur.git/tree/destdirs_ext.conf?h=makepkg-optimize パッケージ出力], [https://aur.archlinux.org/cgit/aur.git/tree/compress-param_max.conf?h=makepkg-optimize 圧縮デフォルト] の追加オプションが記載されています。デフォルトでは全て無効となっています。
 
このファイルには[[Makepkg#最適化されたパッケージの作成|コンパイルフラグ]], [https://aur.archlinux.org/cgit/aur.git/tree/buildenv_ext.conf?h=makepkg-optimize ビルド環境], [https://aur.archlinux.org/cgit/aur.git/tree/pkgopts_ext.conf?h=makepkg-optimize パッケージオプション], [https://aur.archlinux.org/cgit/aur.git/tree/destdirs_ext.conf?h=makepkg-optimize パッケージ出力], [https://aur.archlinux.org/cgit/aur.git/tree/compress-param_max.conf?h=makepkg-optimize 圧縮デフォルト] の追加オプションが記載されています。デフォルトでは全て無効となっています。
 
{{Warning|最適化によってはパッケージのビルドが上手くいかなくなることがあり、過最適化がパフォーマンスの劣化を引き起こしたりセグメンテーション違反が発生する可能性もあります。}}
 
   
 
== 最適化されたパッケージのビルド ==
 
== 最適化されたパッケージのビルド ==
  +
  +
{{Warning|最適化によってはパッケージのビルドが上手くいかなくなることがあり、過最適化がパフォーマンスの劣化を引き起こしたりセグメンテーション違反が発生する可能性もあります。}}
   
 
[[#設定|最適化の設定]]を行ったら、[[Makepkg#使用方法|ビルド]]するときに設定ファイルを指定してください:
 
[[#設定|最適化の設定]]を行ったら、[[Makepkg#使用方法|ビルド]]するときに設定ファイルを指定してください:
   
$ makepkg --config /etc/makepkg-optimize.conf
+
$ makepkg -c --config /etc/makepkg-optimize.conf
  +
  +
{{Tip|パッケージに古い最適化フラグを再利用しないように、{{ic|makepkg}}に{{ic|-c}}を使用します。[[Makepkg#使用方法]]を参照してください。}}
   
 
{{Note|[[Wikipedia:Profile-guided optimization|Profile-guided optimization]] ではパッケージを''2回''ビルド・インストールする必要があります。最初 {{ic|$PROFDEST/''pkgbase''.gen}} にプロファイルを生成して、それからプロファイルを {{ic|$PROFDEST/''pkgbase''.used}} に移動して適用します。}}
 
{{Note|[[Wikipedia:Profile-guided optimization|Profile-guided optimization]] ではパッケージを''2回''ビルド・インストールする必要があります。最初 {{ic|$PROFDEST/''pkgbase''.gen}} にプロファイルを生成して、それからプロファイルを {{ic|$PROFDEST/''pkgbase''.used}} に移動して適用します。}}
37行目: 40行目:
 
=== Chroot の設定 ===
 
=== Chroot の設定 ===
   
[[en2:DeveloperWiki:Building in a clean chroot#Setting up a chroot|chroot をセットアップ]]した後、設定が必要です。
+
[[DeveloperWiki:クリーンな chroot でビルドする#古典的な方法|chroot をセットアップ]]した後、設定が必要です。
   
 
==== makepkg-optimize とバックエンドのインストール ====
 
==== makepkg-optimize とバックエンドのインストール ====
43行目: 46行目:
 
まず、chroot に最適化マクロのバックエンドをインストール:
 
まず、chroot に最適化マクロのバックエンドをインストール:
   
$ arch-nspawn "$CHROOT"/root pacman -S openmp upx optipng
+
$ arch-nspawn "$CHROOT"/root pacman -S openmp upx optipng polly
   
それから {{AUR|pacman-git}}、 {{AUR|makepkg-optimize}} と {{AUR|nodejs-svgo}} を[[Arch User Repository#ビルドファイルを獲得|ダウンロード]]・[[en2:DeveloperWiki:Building in a clean chroot#Building in the chroot|ビルド]]してください。
+
それから {{AUR|makepkg-optimize}} と {{AUR|svgo}} を[[Arch User Repository#ビルドファイルを獲得|ダウンロード]]・[[DeveloperWiki:クリーンな chroot でビルドする#chroot でのビルド|ビルド]]してください。
   
 
chroot でインストールするには、以下のようにパッケージファイルをコピーしてインストールします:
 
chroot でインストールするには、以下のようにパッケージファイルをコピーしてインストールします:
   
# cp nodejs-svgo-1.1.1-1-any.pkg.tar.xz "$CHROOT"/root/root/
+
# cp svgo-1.2.2-2-any.pkg.tar.xz "$CHROOT"/root/root/
$ arch-nspawn "$CHROOT"/root pacman -U /root/nodejs-svgo-1.1.1-1-any.pkg.tar.xz
+
$ arch-nspawn "$CHROOT"/root pacman -U /root/svgo-1.2.2-2-any.pkg.tar.xz
 
{{Warning|上記の操作を行うと完全な chroot ではなくなります。}}
 
{{Warning|上記の操作を行うと完全な chroot ではなくなります。}}
 
==== PGO キャッシュの作成 ====
 
 
PGO を使うときは、[https://gcc.gnu.org/onlinedocs/gcc/Gcov-Data-Files.html プロファイル] を保存するために chroot の中と外、同じ場所にフォルダを作成します:
 
 
# mkdir -m 777 {"$CHROOT"/root,}/mnt/pgo
 
 
それから {{ic|$CHROOT/root/etc/makepkg-optimize.conf}} を編集して {{ic|1=PROFDEST=/mnt/pgo}} を設定してください。
 
   
 
=== chroot を使う ===
 
=== chroot を使う ===
67行目: 62行目:
 
==== パッケージのビルド ====
 
==== パッケージのビルド ====
   
まず、{{ic|$CHROOT/root/etc/makepkg-optimize.conf}} を編集して[[#設定|最適化を選択]]してください。
+
まず、{{ic|$CHROOT/root/etc/makepkg-optimize.conf}} を編集して[[makepkg-optimize#設定|好みの最適化を選択]]してください。
   
[[en2:DeveloperWiki:Building in a clean chroot#Building in the chroot|ビルド]]するときに、{{ic|makepkg}} に設定ファイルを指定してください:
+
[[DeveloperWiki:クリーンな chroot でビルドする#chroot でのビルド|ビルド]]するときに、{{ic|makepkg}} に設定ファイルを指定してください:
   
$ makechrootpkg -c -r "$CHROOT" -- --config /etc/makepkg-optimize.conf
+
$ makechrootpkg -c -r "$CHROOT" -- -c --config /etc/makepkg-optimize.conf
   
 
===== PGO でビルド =====
 
===== PGO でビルド =====
   
最初のビルドが終わったら、[[#PGO キャッシュの作成|PGO キャッシュ]]をバインド:
+
====== PGO キャッシュの作成 ======
   
  +
PGO を使うときは、[https://gcc.gnu.org/onlinedocs/gcc/Gcov-Data-Files.html プロファイル] を保存するために chroot の中と外、同じ場所にフォルダを作成して、それをバインドします:
  +
  +
# mkdir -m 777 {"$CHROOT"/{root,"$USER"},}/mnt/pgo
 
# mount -o bind {,"$CHROOT"/root}/mnt/pgo
 
# mount -o bind {,"$CHROOT"/root}/mnt/pgo
 
# mount -o bind "$CHROOT"/{root,"$USER"}/mnt/pgo
 
# mount -o bind "$CHROOT"/{root,"$USER"}/mnt/pgo
82行目: 80行目:
 
{{Tip|[[fstab]] を使って起動時に上記のフォルダを [https://serverfault.com/a/613184 バインド] することもできます。}}
 
{{Tip|[[fstab]] を使って起動時に上記のフォルダを [https://serverfault.com/a/613184 バインド] することもできます。}}
   
  +
それから {{ic|$CHROOT/root/etc/makepkg-optimize.conf}} を編集して {{ic|1=PROFDEST=/mnt/pgo}} を設定してください。
パッケージを[[Pacman#追加コマンド|インストール]]してテスト実行してみてください。
 
  +
  +
====== プログラムのプロファイル ======
  +
  +
パッケージをビルドして、[[Pacman#追加コマンド|インストール]]して、テスト実行してみてください。
   
 
{{Note|プログラムの {{ic|exit()}} 時にプロファイルは作成されます。[[systemd]] などのデーモンの場合、プロファイルを作成するには再起動が必要となります。再起動したら、再ビルドする前に PGO キャッシュを再バインドしてください。}}
 
{{Note|プログラムの {{ic|exit()}} 時にプロファイルは作成されます。[[systemd]] などのデーモンの場合、プロファイルを作成するには再起動が必要となります。再起動したら、再ビルドする前に PGO キャッシュを再バインドしてください。}}

2024年1月7日 (日) 04:36時点における最新版

関連記事

makepkg-optimizeAURpacman を補助する tidybuildenvexecutable スクリプト集です。build()package() で最適化をかけるマクロを提供します。

ノート: Arch User Repository の他のパッケージと同じく、makepkg-optimizeAUR に公式サポートはありません。AUR ページのコメント欄を使ってください。

インストール

makepkg-optimizeAUR をインストールしてください。また、最適化を行うためにバックエンドをインストールしてください: openmp, upx, optipng, svgoAUR, polly

設定

makepkg-optimizeAUR は現在の makepkg の設定から /etc/makepkg-optimize.conf という名前の 設定ファイル を生成します。

このファイルにはコンパイルフラグ, ビルド環境, パッケージオプション, パッケージ出力, 圧縮デフォルト の追加オプションが記載されています。デフォルトでは全て無効となっています。

最適化されたパッケージのビルド

警告: 最適化によってはパッケージのビルドが上手くいかなくなることがあり、過最適化がパフォーマンスの劣化を引き起こしたりセグメンテーション違反が発生する可能性もあります。

最適化の設定を行ったら、ビルドするときに設定ファイルを指定してください:

$ makepkg -c --config /etc/makepkg-optimize.conf
ヒント: パッケージに古い最適化フラグを再利用しないように、makepkg-cを使用します。Makepkg#使用方法を参照してください。
ノート: Profile-guided optimization ではパッケージを2回ビルド・インストールする必要があります。最初 $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-optimizeAURsvgoAURダウンロードビルドしてください。

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 を アップデート するとき、AUR パッケージは手動で更新が必要です。

パッケージのビルド

まず、$CHROOT/root/etc/makepkg-optimize.conf を編集して好みの最適化を選択してください。

ビルドするときに、makepkg に設定ファイルを指定してください:

$ makechrootpkg -c -r "$CHROOT" -- -c --config /etc/makepkg-optimize.conf
PGO でビルド
PGO キャッシュの作成

PGO を使うときは、プロファイル を保存するために chroot の中と外、同じ場所にフォルダを作成して、それをバインドします:

# mkdir -m 777 {"$CHROOT"/{root,"$USER"},}/mnt/pgo
# mount -o bind {,"$CHROOT"/root}/mnt/pgo
# mount -o bind "$CHROOT"/{root,"$USER"}/mnt/pgo
ヒント: fstab を使って起動時に上記のフォルダを バインド することもできます。

それから $CHROOT/root/etc/makepkg-optimize.conf を編集して PROFDEST=/mnt/pgo を設定してください。

プログラムのプロファイル

パッケージをビルドして、インストールして、テスト実行してみてください。

ノート: プログラムの exit() 時にプロファイルは作成されます。systemd などのデーモンの場合、プロファイルを作成するには再起動が必要となります。再起動したら、再ビルドする前に PGO キャッシュを再バインドしてください。

ソフトウェアを一通り使ったら、パッケージを再ビルド・再インストールしてください。