「GNOME パッケージガイドライン」の版間の差分
(同期) |
(→ソース URL: 情報を更新) |
||
(2人の利用者による、間の10版が非表示) | |||
5行目: | 5行目: | ||
Arch Linux では [[GNOME]] パッケージは特定の決まり事に従っています。 |
Arch Linux では [[GNOME]] パッケージは特定の決まり事に従っています。 |
||
+ | |||
+ | == ソース URL == |
||
+ | |||
+ | GNOME パッケージは通常、2 つのソース URL スキームに従います。GNOME の FTP サーバーに保存されているリリース済みの tarball と、ソフトウェアの Git リポジトリ内の特定のコミットです。 |
||
+ | |||
+ | === リリースされた tarball を使用する === |
||
+ | |||
+ | リリースされた tarball をダウンロードする場合、次のソース配列を使用して https://download.gnome.org から入手できます。 |
||
+ | |||
+ | <nowiki>source=("https://download.gnome.org/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz")</nowiki> |
||
+ | |||
+ | ここで、 ''$ {pkgver%。*}'' は、{{ic|pkgver}} のサフィックス (''micro''パッケージ) を削除することにより、''major'' ''minor'' パッケージバージョンを返します。) たとえば ''pkgver = 3.28.0''の場合 ''$ {pkgver%。*}'' は ''3.28'' を返します。 |
||
+ | |||
+ | === Git リポジトリからのコミットの使用 === |
||
+ | |||
+ | もう1つの一般的な方法は、GNOME ソフトウェアのソースコードを git リポジトリから特定のコミットをソースとして使用することです。特定のコミットを設定する Pacman の機能 ({{man|5|PKGBUILD|USING VCS SOURCES}} を参照) が PKGBUILD を最新の開発コミットに従わず、{{ic|pkgver}} フィールドを更新しないため、VCS パッケージとして分類されません。代わりに指定されたコミットハッシュのソース。 |
||
+ | |||
+ | 以下のテンプレートをご覧ください。 |
||
+ | {{hc|1=PKGBUILD|2= |
||
+ | makedepends=(git) |
||
+ | commit=''hash_of_a_commit'' <nowiki> |
||
+ | source=("git+https://gitlab.gnome.org/GNOME/$pkgname.git#commit=$_commit") |
||
+ | md5sums=('SKIP') |
||
+ | |||
+ | pkgver() { |
||
+ | cd $pkgname |
||
+ | git describe --tags | sed 's/-/+/g' |
||
+ | }</nowiki> |
||
+ | }} |
||
+ | |||
+ | ''hash_of_a_commit'' を必要な Gitのコミットハッシュに置き換えます。 |
||
+ | |||
+ | ソースは ''git'' を使用してダウンロードされるため、他の VCS パッケージの場合と同様に、{{pkg|git}} が makedepends にあり、チェックサムが 'SKIP' に設定されている必要があります。 {{ic|pkgver()}} 関数を使用することを強くお勧めします。そのため、提供されるコミットハッシュに応じて {{ic|pkgver}} を設定します。 |
||
+ | |||
+ | {{ノート|GNOME は以前は https://git.gnome.org, を使用していましたが、その後 https://gitlab.gnome.org [https://www.gnome.org/news/2018/05/gnome-moves-to-gitlab-2/] に移行しました。古いリンクは自動的に新しいgitlab.gnome.org ドメインにリダイレクトされますが、ソース URL を手動で更新することをお勧めします。}} |
||
+ | |||
+ | == Meson と GNU ビルドシステム == |
||
+ | |||
+ | 歴史的に、GNOME はアプリケーションを構築するために [[GNU#ビルドシステム|GNU ビルドシステム]] を使用していました。現在アクティブなアプリケーションがいくつかあり、まだ GNU Build System を使用している非アクティブなアプリケーションも多数ありますが、現在アクティブな GNOME アプリケーションのほとんどは Meson Build System に移行されました。 |
||
+ | |||
+ | ほとんどの GNOME アプリケーションのパッケージ化ニーズに適合する手順については、[[Meson パッケージガイドライン]] を参照してください。 |
||
+ | |||
+ | {{Note|GNOME アプリケーションはさまざまなプログラミング言語で記述されていますが、その GNOME アプリケーションに設定されているビルドシステムが Meson である場合は、Meson を使い続ける必要があります。たとえば、Rust 言語で書かれた GNOME アプリケーションには [[Rust パッケージガイドライン]] を使用しないでください。ビルドには ''rustc'' や ''cargo'' ではなく ''meson'' を使用する必要があります。}} |
||
+ | |||
+ | == GSettings スキーマ == |
||
+ | |||
+ | GSettings は GNOME アプリケーションで使用される現在のスキーマで、GUI ツール {{pkg|dconf}} または CLI ツール ''gsettings'' ({{Pkg|glib2}} によって提供されます) を使用してアクセス/読み取り/編集できます。依存関係としてすでにインストールされている可能性があります。) GSettings には、以前はパッケージャーの注意が必要でしたが、現在では介入は必要ありません。 |
||
+ | |||
+ | いくつかの見解: |
||
+ | * GSettings を使用するアプリケーションは通常 GTK ({{Pkg|gtk3}} 以降) に依存しているため、GSettings 関連の依存関係は通常すでに満たされています。 |
||
+ | * {{ic|./configure}} の {{ic|--disable-schemas-compile}} フラグは、{{ic|package()}} 関数での GSettings データベースの再コンパイルを回避するために必要でしたが、現在は必要ありませんこれは、主にビルドシステムとして Meson を使用するアプリケーションの GNOME アプリケーションに適用されます。 |
||
+ | |||
+ | {{Warning|1={{ic|.install}} ファイルから {{Ic|glib-compile-schemas}} を実行してはいけません。{{Pkg|glib2}}=2.48.0-2 から GConf スキーマデータベースは [[Pacman#フック|pacman フック]]によって自動的に再構築されます。}} |
||
== GConf スキーマ == |
== GConf スキーマ == |
||
− | 一部の GNOME パッケージは [[wikipedia:GConf#Schemas|GConf スキーマ]]をインストールします。そのようなパッケージは {{Pkg|gconf}} に依存します。 |
||
+ | 一部の GNOME パッケージは [[wikipedia:GConf#Schemas|GConf スキーマ]]をインストールします。そのようなパッケージは {{AUR|gconf}} に依存します。 |
||
− | Gconf スキーマはシステムの GConf データベースにインストールされますが、それは避けねばなりません。パッケージによっては {{ic|./configure}} で {{Ic|--disable-schemas-install}} スイッチを使えるようになっていますが、これが上手く機能することは稀です。その代わりに、gconftool-2 には {{Ic|GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL}} という変数が存在し、この変数が設定された場合、gconftool-2 はデータベースをアップデートしません。 |
||
+ | |||
+ | Gconf スキーマはシステムの GConf データベースにインストールされますが、それは避けねばなりません。パッケージによっては {{ic|./configure}} で {{Ic|--disable-schemas-install}} スイッチを使えるようになっていますが、これが上手く機能することは稀です。その代わりに、''gconftool-2'' には {{Ic|GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL}} という変数が存在し、この変数が設定された場合、''gconftool-2'' はデータベースをアップデートしません。 |
||
スキーマファイルをインストールするパッケージを作成するときは、PKGBUILD のパッケージのインストールの段階で以下を使ってください: |
スキーマファイルをインストールするパッケージを作成するときは、PKGBUILD のパッケージのインストールの段階で以下を使ってください: |
||
15行目: | 69行目: | ||
{{Bc|1=make GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR=${pkgdir} install}} |
{{Bc|1=make GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR=${pkgdir} install}} |
||
+ | PKGBUILD の {{ic|package()}} 関数 |
||
− | {{ic|.install}} ファイルから {{Ic|gconfpkg}} を実行してはいけません。{{Pkg|gconf}}=3.2.6-4 から GConf スキーマは [[Pacman#フック|pacman フック]]によって (GNOME パッケージのインストール・削除時に) 自動的にインストール・削除されます。 |
||
+ | {{Warning|1={{ic|.install}} ファイルから {{Ic|gconfpkg}} を実行してはいけません。{{AUR|gconf}}=3.2.6-4 から GConf スキーマは [[Pacman#フック|pacman フック]]によって (GNOME パッケージのインストール・削除時に) 自動的にインストール・削除されます。}} |
||
− | == GSettings スキーマ == |
||
− | GConf スキーマは GSettings スキーマに移行したため、多くの GNOME アプリケーションは新しいスキーマファイルを使います。GSettings は dconf をバックエンドとして使うため、GSettings スキーマが含まれているパッケージは {{Pkg|dconf}} を依存パッケージとする必要があります。新しい GSettings スキーマをシステムにインストールした場合、GSettings データベースを再構築する必要がありますが、パッケージングのときに行う必要はありません。 |
||
+ | == Scrollkeeper ドキュメント == |
||
− | パッケージングの際に GSettings データベースが再構築されるのを避けるため {{ic|./configure}} では {{Ic|--disable-schemas-compile}} スイッチを使ってください。 |
||
+ | 現在、GNOME アプリケーションは [http://scrollkeeper.sourceforge.net/ ScrollKeeper] を使用していませんが、そのドキュメントを備えた GTK2 ベースのアプリケーションに遭遇する可能性があります。 |
||
− | {{ic|.install}} ファイルから {{Ic|glib-compile-schemas}} を実行してはいけません。{{Pkg|glib2}}=2.48.0-2 から GConf スキーマデータベースは [[Pacman#フック|pacman フック]]によって自動的に再構築されます。 |
||
+ | GNOME 2.20 から scrollkeeper を利用する必要はなくなりました。{{AUR|rarian}} が直接 OMF ファイルを読み込みます。現在 Scrollkeeper-update はダミーになっています。唯一の要件は、makedepends 配列に {{AUR|gnome-doc-utils}} を含めることです。 |
||
− | == Scrollkeeper ドキュメント == |
||
− | GNOME 2.20 から scrollkeeper を利用する必要はなくなりました。{{Pkg|rarian}} が直接 OMF ファイルを読み込みます。現在 Scrollkeeper-update はダミーになっています。makedepend に {{Pkg|gnome-doc-utils}}>=0.11.2 を追加すること以外は何もしなくてかまいません。 |
||
{{ic|./configure}} から {{Ic|--disable-scrollkeeper}} スイッチを使うことで無効化できます。 |
{{ic|./configure}} から {{Ic|--disable-scrollkeeper}} スイッチを使うことで無効化できます。 |
||
== GTK アイコンキャッシュ == |
== GTK アイコンキャッシュ == |
||
− | パッケージが hicolor アイコンテーマにアイコンをインストールする場合があります。パッケージを {{Pkg|gtk-update-icon-cache}} に依存するようにしてください。 |
||
− | + | 多くのグラフィカル GNOME アプリケーションはシステムにアイコンをインストールし、それらのアイコンは ''gtk-update-icon-cache'' ツールを介してアイコンキャッシュに含まれます。アイコンが追加または削除されるたびに、このツールを使用してキャッシュが更新されます。 |
|
+ | |||
+ | {{Note| |
||
+ | * {{ic|.install}} ファイルから {{Ic|gtk-update-icon-cache}} を実行してはいけません。{{Pkg|gtk-update-icon-cache}}=3.20.3-2. からアイコンキャッシュは [[Pacman#フック|pacman フック]] によって自動的に更新されます。 |
||
+ | * この依存関係は {{Pkg|gtk4}} などのパッケージによって満たされるため、パッケージは {{Pkg|gtk-update-icon-cache}} に依存する必要はありません。 |
||
+ | }} |
||
== .desktop ファイル == |
== .desktop ファイル == |
||
− | 多くのパッケージは Freedesktop.org 互換の {{Ic|.desktop}} ファイルをインストールして MimeType エントリを登録します。そのようなパッケージは {{Pkg|desktop-file-utils}} を依存パッケージとする必要があります。 |
||
+ | 多くのパッケージは、Freedesktop.org と互換性のある {{ic|.desktop}} ファイルをインストールし、そのファイルに MimeType エントリを登録します。これらの情報はデータベースに保存され、追加または削除されるたびに更新する必要があります。これは ''update-desktop-database'' ツールの機能です。 |
||
− | {{ic|.install}} ファイルから {{Ic|update-desktop-database}} を実行してはいけません。{{Pkg|desktop-file-utils}}=0.22-2 からデータベースは [[Pacman#フック|pacman フック]]によって自動的に更新されます。 |
||
+ | |||
+ | {{Note| |
||
+ | * {{Pkg|desktop-file-utils}}=0.22- 以降、データベースは [[Pacman#フック|pacman フック]] 経由で自動的に更新されるため、.install ファイルで ''update-desktop-database'' を呼び出さないでください。 |
||
+ | * この依存関係は {{Pkg|gtk4}} などのパッケージによって満たされるため、パッケージは {{Pkg|desktop-file-utils}} に依存する必要は ''ありません''。 |
||
+ | }} |
||
+ | |||
+ | == AppStream およびメタ情報ファイル == |
||
+ | |||
+ | 他の多くのアプリケーションと同様、ほとんどの GNOME アプリケーションは Freedesktop.org の [https://www.freedesktop.org/software/appstream/docs/AppStream 仕様] に準拠しており、アプリケーションの説明がアプリケーションセンターに表示されるようにメタ情報ファイルを提供しています。{{Pkg|gnome-software}} や [https://flathub.org Flathub] など。 |
||
+ | GNOME アプリケーションは通常、[[Meson パッケージガイドライン#check()|check()]] 関数で {{ic|meson test}} が呼び出されたときに ''appstream-util'' ツールを使用してメタ情報ファイルを検証します。{{Pkg|appstream-glib}} がインストールされていない場合、この特定の検証が実行されなくなるだけです (つまり、エラーが出てもビルドプロセスを中断しません) |
||
− | == .install ファイル == |
||
+ | 次の 2 つの方法を使用して、アプリケーションによって ''appstream-util'' が使用されていることを確認できます。 |
||
− | 以前は {{Ic|glib-compile-schemas}}, {{Ic|gtk-update-icon-cache}}, {{Ic|update-desktop-database}} などのコマンドを呼び出してキャッシュやデータベースをインストール・更新するために GNOME パッケージの多くで {{ic|.install}} ファイルが使われていました。pacman 5.0 になって[[Pacman#フック|フック]]が実装されてからはパッケージのインストール時に自動的にコマンドが実行されるため不要になりました。 |
||
+ | * 1 つ目の方法は、{{ic|grep -R appstream-util}} を実行するか、{{ic|data/meson.build}} ファイルを調べて、''appstream-util'' のソースコードを調べることです。 |
||
+ | * もう 1 つの方法は、ビルドプロセスを読み取り、次を探します。{{bc|Program appstream-util found: NO}} |
||
+ | {{Pkg|appstream-glib}} を checkdepends 配列に追加してメタ情報ファイルを検証します。 |
||
− | 同じコマンドが2回実行されてしまうのを防ぐため、{{ic|.install}} ファイルから上記のコマンドを削除するようにしてください。 |
2023年6月27日 (火) 00:27時点における最新版
32ビット – CLR – クロス – Eclipse – Electron – Free Pascal – GNOME – Go – Haskell – Java – KDE – カーネル – Lisp – MinGW – Node.js – ノンフリー – OCaml – Perl – PHP – Python – R – Ruby – Rust – VCS – ウェブ – Wine
Arch Linux では GNOME パッケージは特定の決まり事に従っています。
目次
ソース URL
GNOME パッケージは通常、2 つのソース URL スキームに従います。GNOME の FTP サーバーに保存されているリリース済みの tarball と、ソフトウェアの Git リポジトリ内の特定のコミットです。
リリースされた tarball を使用する
リリースされた tarball をダウンロードする場合、次のソース配列を使用して https://download.gnome.org から入手できます。
source=("https://download.gnome.org/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz")
ここで、 $ {pkgver%。*} は、pkgver
のサフィックス (microパッケージ) を削除することにより、major minor パッケージバージョンを返します。) たとえば pkgver = 3.28.0の場合 $ {pkgver%。*} は 3.28 を返します。
Git リポジトリからのコミットの使用
もう1つの一般的な方法は、GNOME ソフトウェアのソースコードを git リポジトリから特定のコミットをソースとして使用することです。特定のコミットを設定する Pacman の機能 (PKGBUILD(5) § USING VCS SOURCES を参照) が PKGBUILD を最新の開発コミットに従わず、pkgver
フィールドを更新しないため、VCS パッケージとして分類されません。代わりに指定されたコミットハッシュのソース。
以下のテンプレートをご覧ください。
PKGBUILD
makedepends=(git) commit=hash_of_a_commit source=("git+https://gitlab.gnome.org/GNOME/$pkgname.git#commit=$_commit") md5sums=('SKIP') pkgver() { cd $pkgname git describe --tags | sed 's/-/+/g' }
hash_of_a_commit を必要な Gitのコミットハッシュに置き換えます。
ソースは git を使用してダウンロードされるため、他の VCS パッケージの場合と同様に、git が makedepends にあり、チェックサムが 'SKIP' に設定されている必要があります。 pkgver()
関数を使用することを強くお勧めします。そのため、提供されるコミットハッシュに応じて pkgver
を設定します。
Meson と GNU ビルドシステム
歴史的に、GNOME はアプリケーションを構築するために GNU ビルドシステム を使用していました。現在アクティブなアプリケーションがいくつかあり、まだ GNU Build System を使用している非アクティブなアプリケーションも多数ありますが、現在アクティブな GNOME アプリケーションのほとんどは Meson Build System に移行されました。
ほとんどの GNOME アプリケーションのパッケージ化ニーズに適合する手順については、Meson パッケージガイドライン を参照してください。
GSettings スキーマ
GSettings は GNOME アプリケーションで使用される現在のスキーマで、GUI ツール dconf または CLI ツール gsettings (glib2 によって提供されます) を使用してアクセス/読み取り/編集できます。依存関係としてすでにインストールされている可能性があります。) GSettings には、以前はパッケージャーの注意が必要でしたが、現在では介入は必要ありません。
いくつかの見解:
- GSettings を使用するアプリケーションは通常 GTK (gtk3 以降) に依存しているため、GSettings 関連の依存関係は通常すでに満たされています。
./configure
の--disable-schemas-compile
フラグは、package()
関数での GSettings データベースの再コンパイルを回避するために必要でしたが、現在は必要ありませんこれは、主にビルドシステムとして Meson を使用するアプリケーションの GNOME アプリケーションに適用されます。
GConf スキーマ
一部の GNOME パッケージは GConf スキーマをインストールします。そのようなパッケージは gconfAUR に依存します。
Gconf スキーマはシステムの GConf データベースにインストールされますが、それは避けねばなりません。パッケージによっては ./configure
で --disable-schemas-install
スイッチを使えるようになっていますが、これが上手く機能することは稀です。その代わりに、gconftool-2 には GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL
という変数が存在し、この変数が設定された場合、gconftool-2 はデータベースをアップデートしません。
スキーマファイルをインストールするパッケージを作成するときは、PKGBUILD のパッケージのインストールの段階で以下を使ってください:
make GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 DESTDIR=${pkgdir} install
PKGBUILD の package()
関数
Scrollkeeper ドキュメント
現在、GNOME アプリケーションは ScrollKeeper を使用していませんが、そのドキュメントを備えた GTK2 ベースのアプリケーションに遭遇する可能性があります。
GNOME 2.20 から scrollkeeper を利用する必要はなくなりました。rarianAUR が直接 OMF ファイルを読み込みます。現在 Scrollkeeper-update はダミーになっています。唯一の要件は、makedepends 配列に gnome-doc-utilsAUR を含めることです。
./configure
から --disable-scrollkeeper
スイッチを使うことで無効化できます。
GTK アイコンキャッシュ
多くのグラフィカル GNOME アプリケーションはシステムにアイコンをインストールし、それらのアイコンは gtk-update-icon-cache ツールを介してアイコンキャッシュに含まれます。アイコンが追加または削除されるたびに、このツールを使用してキャッシュが更新されます。
.desktop ファイル
多くのパッケージは、Freedesktop.org と互換性のある .desktop
ファイルをインストールし、そのファイルに MimeType エントリを登録します。これらの情報はデータベースに保存され、追加または削除されるたびに更新する必要があります。これは update-desktop-database ツールの機能です。
AppStream およびメタ情報ファイル
他の多くのアプリケーションと同様、ほとんどの GNOME アプリケーションは Freedesktop.org の 仕様 に準拠しており、アプリケーションの説明がアプリケーションセンターに表示されるようにメタ情報ファイルを提供しています。gnome-software や Flathub など。
GNOME アプリケーションは通常、check() 関数で meson test
が呼び出されたときに appstream-util ツールを使用してメタ情報ファイルを検証します。appstream-glib がインストールされていない場合、この特定の検証が実行されなくなるだけです (つまり、エラーが出てもビルドプロセスを中断しません)
次の 2 つの方法を使用して、アプリケーションによって appstream-util が使用されていることを確認できます。
- 1 つ目の方法は、
grep -R appstream-util
を実行するか、data/meson.build
ファイルを調べて、appstream-util のソースコードを調べることです。 - もう 1 つの方法は、ビルドプロセスを読み取り、次を探します。
Program appstream-util found: NO
appstream-glib を checkdepends 配列に追加してメタ情報ファイルを検証します。