Buildkitの紹介
[gnupg-kouza-page.git] / src / gpg2compile.org
1 # -*- coding: utf-8-unix -*-
2 #+TITLE:     GnuPG 2のコンパイル手順
3 #+AUTHOR:    斉藤英樹
4 #+EMAIL:     hideki@hidekisaito.com
5 #+DESCRIPTION: Emacs Builds prepared by Hideki Saito
6 #+KEYWORDS: Emacs, software, OSS, compile, build, binaries
7
8 #+HTML_HEAD: <link rel="stylesheet" type="text/css" href="style.css" />
9 #+HTML_HEAD: <script type="text/javascript">
10 #+HTML_HEAD:
11 #+HTML_HEAD:  var _gaq = _gaq || [];
12 #+HTML_HEAD:  _gaq.push(['_setAccount', 'UA-114515-7']);
13 #+HTML_HEAD:  _gaq.push(['_trackPageview']);
14 #+HTML_HEAD:
15 #+HTML_HEAD:  (function() {
16 #+HTML_HEAD:    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
17 #+HTML_HEAD:    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
18 #+HTML_HEAD:    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
19 #+HTML_HEAD:  })();
20 #+HTML_HEAD: </script>
21
22 #+LANGUAGE:  ja
23 #+OPTIONS:   H:3 num:nil toc:nil \n:nil @:t ::t |:t ^:t -:t f:t *:t <:t
24 #+OPTIONS:   TeX:t LaTeX:t skip:nil d:nil todo:t pri:nil tags:not-in-toc
25 #+OPTIONS: ^:{}
26 #+INFOJS_OPT: view:nil toc:nil ltoc:t mouse:underline buttons:0 path:h
27 #+EXPORT_SELECT_TAGS: export
28 #+EXPORT_EXCLUDE_TAGS: noexport
29 #+HTML_LINK_UP: index.html
30 #+HTML_LINK_HOME: index.html
31 #+XSLT:
32
33 GnuPG 2のコンパイルはGnuPG 1.x系列に比べると依存が多く、より複雑なプロセスを要します。
34 ここではコンパイル方法をまとめました。
35
36 尚、以下の手順を半自動的に実行する [[https://github.com/hsaito/gnupg-buildkit][gnupg-buildkit]] を公開しています。こちらを使用することにより、GnuPG 2.1を入手し、コンパイルするのをほぼ自動化できます。尚、こちらの使用にはGnuPG (1.x系列でも構いません)が入っていることが前提になっています。
37
38
39 特にLinuxのリモート環境(ホスティングサーバ)などにインストールする際に役に立つと思います。Windowsでのコンパイルについては本項では言及しません。
40 尚、ホスティングサーバに置かれている秘密鍵など、ローカル管理に比べて比較的安全性が劣りますので留意しておいてください。
41
42 * 必要なソースコード
43   :PROPERTIES:
44   :ID:       8611de63-d810-40fe-a242-0d46b419046a
45   :END:
46 - GnuPG 2
47 - libgcrypt
48 - libksba
49 - DirMngr
50 - libgpg-error
51 - libassuan
52 - pinentry
53
54 このうち、pinentry以外はGnuPGの[[http://gnupg.org/download/index.en.html][ダウンロードページ]]からダウンロードできます。また、環境によってはBzip2ライブラリが必要です。(プレフィックスが特殊な場合はwith-bzip2オプションでincludeを指定のこと。)
55 PinentryもGnuPGのFTPサーバにあるのですが、上記のダウンロードページからリンクされていません。当該ディレクトリから最新版をダウンロードしてください。
56 GPGME、Entropy Gathering Daemonは通常は必要ありませんが環境、使用法によっては導入する必要があるかもしれません。(Entropy Gathering Daemonは/dev/randomが存在しない環境で必要です。)
57
58 GnuPG Modern (2.1.x系)の場合、DirMngrは組み込み済みであるため、別途入手、コンパイルする必要はありません。
59
60 * コンパイルの順番
61   :PROPERTIES:
62   :ID:       2b2cf9cf-11e4-4ad6-b3ef-8ba1f2347b65
63   :END:
64
65 コンパイルは依存の関係上、次の順番で行う必要があります。
66
67 - libgpg-error
68 - libksba
69 - libgcrypt
70 - libassuan
71 - DirMngr
72 - GnuPG 2
73 - pinentry
74
75 厳密にはいくつかのものは順番が入れ替わっても問題ありませんが、大方、上記のような順番で行う必要があります。
76 コンパイル自体は一般的なconfigure ; make ; make installとなりますが、特に依存関係のエラーを見落とさないようにしてください。
77 尚、特にホスティングサイトなどで特別なプレフィックスを使用している場合はbinディレクトリにパスが通っており、LD_LIBRARY_PATHがlibディレクトリに通っていることを確認してください。configureにprefixが通っていてもgnupg2のコンパイル時に失敗します。
78
79 #+BEGIN_HTML
80 <script type="text/javascript"><!--
81 google_ad_client = "ca-pub-6327257212970697";
82 /* GNU Privacy Guard講座Banner */
83 google_ad_slot = "2155169100";
84 google_ad_width = 970;
85 google_ad_height = 90;
86 //-->
87 </script>
88 <script type="text/javascript"
89 src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
90 </script>
91 #+END_HTML
92 * 注意点など
93   :PROPERTIES:
94   :ID:       419ffeea-c1e3-4e34-b44b-164c8257a959
95   :END:
96 ** dirmngrでリンキングに失敗する場合
97    :PROPERTIES:
98    :ID:       3909adac-4011-4f80-9bc0-72b238daebab
99    :END:
100 ber_freeのシンボルで問題が出る場合、configureの際にLIBS=-llberを通すことで解決します。