「GNOME パッケージガイドライン」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(→‎ソース URL: 情報を更新)
 
(同じ利用者による、間の2版が非表示)
1行目: 1行目:
 
[[Category:パッケージ開発]]
 
[[Category:パッケージ開発]]
 
[[en:GNOME package guidelines]]
 
[[en:GNOME package guidelines]]
[[it:GNOME package guidelines]]
+
[[pt:GNOME package guidelines]]
  +
[[ru:GNOME package guidelines]]
 
{{Package Guidelines}}
 
{{Package Guidelines}}
   
16行目: 17行目:
 
<nowiki>source=("https://download.gnome.org/sources/$pkgname/${pkgver%.*}/$pkgname-$pkgver.tar.xz")</nowiki>
 
<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'' を返します。
+
ここで、{{ic|${pkgver%.*} }} は、{{ic|pkgver}} のサフィックス (''micro''パッケージ) を削除することにより、''major'' ''minor'' パッケージバージョンを返します。) たとえば ''pkgver = 3.28.0''の場合 {{ic|${pkgver%.*} }} は ''3.28'' を返します。
   
 
=== Git リポジトリからのコミットの使用 ===
 
=== Git リポジトリからのコミットの使用 ===
   
もう1つの一般的な方法は、GNOME ソフトウェアのソースコードを git リポジトリから特定のコミットをソースとして使用することです。特定のコミットを設定する Pacman の機能 ({{man|5|PKGBUILD|USING VCS SOURCES}} を参照) PKGBUILD 最新の開発コミットに従わず、{{ic|pkgver}} フィールドを更新しないため、VCS パッケージとして分類されません。代わりに指定されたコミットハッシュのソース
+
もう1つの一般的な方法は、GNOME ソフトウェアのソースコードを git リポジトリから特定のコミットをソースとして使用することです。特定のコミットを設定する Pacman の機能 ({{man|5|PKGBUILD|USING VCS SOURCES}} を参照) により PKGBUILD 最新の開発コミットに従わず、代わりに指定されたコミットハッシュからのソースを使用して {{ic|pkgver}} フィールドを更新しないため、VCS パッケージとして分類されません。
   
以下のテンプレートをご覧ください。
+
以下のテンプレートを参照してください。
 
{{hc|1=PKGBUILD|2=
 
{{hc|1=PKGBUILD|2=
 
makedepends=(git)
 
makedepends=(git)
35行目: 36行目:
 
}}
 
}}
   
''hash_of_a_commit'' を必要な Gitコミットハッシュに置き換えます
+
{{ic|''hash_of_a_commit''}} を必要な Git コミットハッシュに置き換え、パッケージ化するパッケージのニーズに合わせて {{ic|pkgver()}} ステートメントを置き換えます ([[VCS パッケージガイドライン#Git]] を参照)
   
ソースは ''git'' を使用してダウンロードされるため、他の VCS パッケージの場合と同様に、{{pkg|git}} が makedepends にあり、チェックサムが 'SKIP' に設定されている必要があります。 {{ic|pkgver()}} 関数を使用することを強くお勧めします。そのため、提供されるコミットハッシュに応じて {{ic|pkgver}} を設定します。
+
ソースは ''git'' を使用してダウンロードされるため、他の VCS パッケージの場合と同様に、{{pkg|git}} が makedepends にあり、チェックサムが {{ic|'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 を手動で更新することをお勧めします。}}
 
{{ノート|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 を手動で更新することをお勧めします。}}

2024年12月23日 (月) 21:31時点における最新版

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 コミットハッシュに置き換え、パッケージ化するパッケージのニーズに合わせて pkgver() ステートメントを置き換えます (VCS パッケージガイドライン#Git を参照)

ソースは git を使用してダウンロードされるため、他の VCS パッケージの場合と同様に、git が makedepends にあり、チェックサムが 'SKIP' に設定されている必要があります。 pkgver() 関数を使用することを強くお勧めします。そのため、提供されるコミットハッシュに応じて pkgver を設定します。

ノート: GNOME は以前は https://git.gnome.org, を使用していましたが、その後 https://gitlab.gnome.org [1] に移行しました。古いリンクは自動的に新しいgitlab.gnome.org ドメインにリダイレクトされますが、ソース URL を手動で更新することをお勧めします。

Meson と GNU ビルドシステム

歴史的に、GNOME はアプリケーションを構築するために GNU ビルドシステム を使用していました。現在アクティブなアプリケーションがいくつかあり、まだ GNU Build System を使用している非アクティブなアプリケーションも多数ありますが、現在アクティブな GNOME アプリケーションのほとんどは Meson Build System に移行されました。

ほとんどの GNOME アプリケーションのパッケージ化ニーズに適合する手順については、Meson パッケージガイドライン を参照してください。

ノート: GNOME アプリケーションはさまざまなプログラミング言語で記述されていますが、その GNOME アプリケーションに設定されているビルドシステムが Meson である場合は、Meson を使い続ける必要があります。たとえば、Rust 言語で書かれた GNOME アプリケーションには Rust パッケージガイドライン を使用しないでください。ビルドには rustccargo ではなく meson を使用する必要があります。

GSettings スキーマ

GSettings は GNOME アプリケーションで使用される現在のスキーマで、GUI ツール dconf または CLI ツール gsettings (glib2 によって提供されます) を使用してアクセス/読み取り/編集できます。依存関係としてすでにインストールされている可能性があります。) GSettings には、以前はパッケージャーの注意が必要でしたが、現在では介入は必要ありません。

いくつかの見解:

  • GSettings を使用するアプリケーションは通常 GTK (gtk3 以降) に依存しているため、GSettings 関連の依存関係は通常すでに満たされています。
  • ./configure--disable-schemas-compile フラグは、package() 関数での GSettings データベースの再コンパイルを回避するために必要でしたが、現在は必要ありませんこれは、主にビルド​​システムとして Meson を使用するアプリケーションの GNOME アプリケーションに適用されます。
警告: .install ファイルから glib-compile-schemas を実行してはいけません。glib2=2.48.0-2 から GConf スキーマデータベースは pacman フックによって自動的に再構築されます。

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() 関数

警告: .install ファイルから gconfpkg を実行してはいけません。gconfAUR=3.2.6-4 から GConf スキーマは pacman フックによって (GNOME パッケージのインストール・削除時に) 自動的にインストール・削除されます。

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 ツールを介してアイコンキャッシュに含まれます。アイコンが追加または削除されるたびに、このツールを使用してキャッシュが更新されます。

ノート:
  • .install ファイルから gtk-update-icon-cache を実行してはいけません。gtk-update-icon-cache=3.20.3-2. からアイコンキャッシュは pacman フック によって自動的に更新されます。
  • この依存関係は gtk4 などのパッケージによって満たされるため、パッケージは gtk-update-icon-cache に依存する必要はありません。

.desktop ファイル

多くのパッケージは、Freedesktop.org と互換性のある .desktop ファイルをインストールし、そのファイルに MimeType エントリを登録します。これらの情報はデータベースに保存され、追加または削除されるたびに更新する必要があります。これは update-desktop-database ツールの機能です。

ノート:
  • desktop-file-utils=0.22- 以降、データベースは pacman フック 経由で自動的に更新されるため、.install ファイルで update-desktop-database を呼び出さないでください。
  • この依存関係は gtk4 などのパッケージによって満たされるため、パッケージは desktop-file-utils に依存する必要は ありません

AppStream およびメタ情報ファイル

他の多くのアプリケーションと同様、ほとんどの GNOME アプリケーションは Freedesktop.org の 仕様 に準拠しており、アプリケーションの説明がアプリケーションセンターに表示されるようにメタ情報ファイルを提供しています。gnome-softwareFlathub など。

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 配列に追加してメタ情報ファイルを検証します。