現在 GnuPG 1.4 classic 似乎不維護了,在下載網頁都沒連結 XD ... 現在看起來在 stable release 取而代之的是 2.0 系列。在 2.0 系列進行了模組化的設計,把一些功能抽成函式庫,因次編譯時要先分別編譯那些函式庫,再編譯 GnuPG 本體,稍微比較麻煩一點。
首先要下載原始碼檔案,這部分就變成要下載很多包: https://www.gnupg.org/download/
在 2.0.30 中,除了 GnuPG 本體之外,還要:
- libgpg-error
- libgcrypt
- libksba
- libassuan
- nPth
- Pinentry
除了 GnuPG 提供的程式之外,另外還要 GNU Pth: https://www.gnu.org/software/pth/
安裝順序需要依照相依性來安排,整個建置指令如下所示。
$ cd pth-2.0.7/ $ ./configure --prefix=${PREFIX} $ make $ make install$ cd npth-1.3/ $ ./configure --prefix=${PREFIX} $ make $ make install$ cd libgpg-error-1.26/ $ ./configure --prefix=${PREFIX} $ make $ make install$ cd libksba-1.3.5/ $ ./configure --prefix=${PREFIX} --with-libgpg-error-prefix=${PREFIX} $ make $ make install$ cd libassuan-2.4.3/ $ ./configure --prefix=${PREFIX} --with-libgpg-error-prefix=${PREFIX} $ make $ make install$ cd libgcrypt-1.7.6/ $ ./configure --prefix=${PREFIX} --with-libgpg-error-prefix=${PREFIX} --with-pth-prefix=${PREFIX} $ make $ make install
下面這個步驟會建置輸入密碼用的介面程式,在這邊我使用 TTY 模組 (就是傳統的直接在終端機畫面輸入) 來輸入密碼,在終端機畫面上還有一個 NCurses 模組可以選擇,不過個人不太習慣。
$ cd pinentry-1.0.0/ $ ./configure --prefix=${PREFIX} --disable-pinentry-gtk2 --disable-pinentry-gnome3 --disable-pinentry-qt --disable-pinentry-qt5 --disable-pinentry-curses --enable-pinentry-tty --with-libgpg-error-prefix=${PREFIX} --with-libassuan-prefix=${PREFIX} $ make $ make install
接下來要建置 GnuPG 的本體:
$ cd gnupg-2.0.30/ $ ./configure --prefix=${PREFIX} --with-libgpg-error-prefix=${PREFIX} --with-pth-prefix=${PREFIX} --with-libgcrypt-prefix=${PREFIX} --with-libassuan-prefix=${PREFIX} --with-ksba-prefix=${PREFIX} --with-pinentry-pgm=${PREFIX}/bin/pinentry
組態好之後直接進行 make; make install
會出現一些關於 intmax_t
宣告上的錯誤,是因為使用到了錯誤的 stdint.h
所導致。錯誤訊息看起來像是這樣:
unknown type name 'intmax_t' extern intmax_t
避過的方法是修改產生出來的 Makefile
中關於 stdint.h
的路徑,步驟是:
- 編輯
gl/Makefile
- 找到這行:
ABSOLUTE_STDINT_H = "///Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../lib/clang/8.0.0/include/stdint.h"
- 換成這樣:
ABSOLUTE_STDINT_H = "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.12.sdk/usr/include/stdint.h"
路徑需要跟著 Xcode 安裝的 SDK 路徑所調整。
接著在繼續進行 make; make install
即可。
$ make $ make install