Buildkitを使用したコンパイルについて追記
[gnupg-kouza-page.git] / content / documents / gpg2compile.md
1 +++
2 title = "GnuPG 2のコンパイル手順"
3 slug = "gpg2compile"
4 categories = [
5   "高度な情報",
6 ]
7 +++
8
9 GnuPG 2のコンパイルはGnuPG 1.x系列に比べると依存が多く、より複雑なプロセスを要します。
10 ここではコンパイル方法をまとめました。
11
12 尚、以下の手順を半自動的に実行する [gnupg-buildkit](https://github.com/hsaito/gnupg-buildkit) を公開しています。こちらを使用することにより、GnuPG 2.1を入手し、コンパイルするのをほぼ自動化できます。[^1]
13
14 特にLinuxのリモート環境(ホスティングサーバ)などにインストールする際に役に立つと思います。Windowsでのコンパイルについては本項では言及しません。
15 尚、ホスティングサーバに置かれている秘密鍵など、ローカル管理に比べて比較的安全性が劣りますので留意しておいてください。
16
17 ## 必要なソースコード
18
19
20 * GnuPG 2
21 * libgcrypt
22 * libksba
23 * DirMngr
24 * libgpg-error
25 * libassuan
26 * pinentry
27
28 このうち、pinentry以外はGnuPGの[ダウンロードページ](http://gnupg.org/download/index.en.html)からダウンロードできます。また、環境によってはBzip2ライブラリが必要です。(プレフィックスが特殊な場合はwith-bzip2オプションでincludeを指定のこと。)
29 PinentryもGnuPGのFTPサーバにあるのですが、上記のダウンロードページからリンクされていません。当該ディレクトリから最新版をダウンロードしてください。
30 GPGME、Entropy Gathering Daemonは通常は必要ありませんが環境、使用法によっては導入する必要があるかもしれません。(Entropy Gathering Daemonは/dev/randomが存在しない環境で必要です。)
31
32 GnuPG Modern (2.1.x系)の場合、DirMngrは組み込み済みであるため、別途入手、コンパイルする必要はありません。
33
34 ## コンパイルの順番
35
36
37 コンパイルは依存の関係上、次の順番で行う必要があります。
38
39 * libgpg-error
40 * libksba
41 * libgcrypt
42 * libassuan
43 * DirMngr
44 * GnuPG 2
45 * pinentry
46
47 厳密にはいくつかのものは順番が入れ替わっても問題ありませんが、大方、上記のような順番で行う必要があります。
48 コンパイル自体は一般的なconfigure ; make ; make installとなりますが、特に依存関係のエラーを見落とさないようにしてください。
49 尚、特にホスティングサイトなどで特別なプレフィックスを使用している場合はbinディレクトリにパスが通っており、LD_LIBRARY_PATHがlibディレクトリに通っていることを確認してください。configureにprefixが通っていてもgnupg2のコンパイル時に失敗します。
50
51 ## 注意点など
52
53 ### dirmngrでリンキングに失敗する場合
54
55 ber_freeのシンボルで問題が出る場合、configureの際にLIBS=-llberを通すことで解決します。
56
57 [^1]: 既定ではこのスクリプトはスクリプトやパッケージの署名検証のために任意のバージョンのGnuPGがインストールされていることを前提にしていますが、GnuPGがない環境にインストールする場合、スクリプトと同位のディレクトリにno_verifyというファイルを配置して下さい。署名検証は行われなくなりますので、特にパッケージ等はダウンロードされたものが正当かどうかをsha1sumなどを使用して確認するようにして下さい。尚、[公式サイトのページ](https://gnupg.org/download/integrity_check.html)にてsha1のリストを入手することが可能です。