インストール: GnuCash | クロスプラットフォームで自由な会計ソフト

クロスプラットフォームで自由な会計ソフトであるGnuCashをソースコードからインストールする。GnuCashは複式簿記の簿記ソフトであるため,個人事業主の青色申告にも使うことができる。

インストール手順

インストール情報
項目 説明
配布元 フリーの財務ソフトウェア | GnuCash
リポジトリー Gnucash/gnucash: GnuCash Double-Entry Accounting Program.
手順
依存情報
依存先 (必須) glib2 2.40.0, gtk+3 3.14.0, guile 2.2.0 or 2.0.0, gettext 0.19.6, libxslt
ICU, boost, swig 2.0.10 (Gitからのビルドのみ), webkitgtk-3.0 (Windows, Mac) or webkit2gtk-3.0, googletest
依存先 (任意) gwenhywfar, libdbi
依存元
インストールコマンド
sh -eux <<-"EOT"
PKG=gnucash VER=3.6 TAG=$VER
LOCAL=~/.local J=$(grep -cs '^processor' /proc/cpuinfo || echo 2)
mkdir -p "$LOCAL/src"
cd "$LOCAL/src"

if command -v git >/dev/null; then
  [ -e $PKG ] || git clone --depth 1 https://github.com/Gnucash/gnucash/ $PKG
  cd $PKG
  git fetch --depth 1 origin tag $TAG
  git checkout -f $TAG
  git clean -dfX
  [ -e configure.ac ] && autoreconf -is
else
  [ -e $PKG-$VER ] || wget 
  tar -xf $PKG-$VER.*
  cd $PKG-$VER
  make -kj $J distclean clean || :
fi

if [ -e CMakeLists.txt ] && command -v cmake >/dev/null; then
  WITH_AQBANKING=WITH_AQBANKING=$(pkg-config --exists gwenhywfar && echo ON || echo OFF)
  WITH_OFX=WITH_OFX=$(pkg-config --exists libofx && echo ON || echo OFF)
WITH_SQL=WITH_SQL=$(pkg-config --exists libdbi && echo ON || echo OFF)
cmake -D CMAKE_INSTALL_PREFIX="$LOCAL/stow/$PKG-$VER" \
-D $WITH_AQBANKING -D $WITH_OFX -D $WITH_SQL \
. fi make -j $J make -j $J check make -j $J install cd "$LOCAL/stow" echo $PKG-[0-9]* | xargs -n 1 stow --ignore=dir -D stow --ignore=dir $PKG-$VER EOT
インストール例
日付 バージョン OS 依存関係
2020-02-05 3.6 Ubuntu 18.04 GNU Make 4.2.1, GCC 7.4.0, libxslt 1.1.33, libboost1.65, guile-2.0

GnuCashはGUIのソフトのため,依存関係が多い。普段は依存関係もソースコードからビルドするのだが,少々難易度が高そうだったので,多くの依存先をパッケージマネージャーでインストールした。

sudo apt install -y libwebkit2gtk-4.0-dev swig libdbi-dev guile-2.0 guile-2.0-dev \
googletest libgtest-dev google-mock libboost1.65

ただし,3.6のビルドでは,make checkは以下のエラーがでて失敗した。

[ 96%] Linking CXX executable ../../../../bin/test-tokenizer
../../../../lib/gnucash/libgncmod-csv-import.so: undefined reference to `boost::re_detail_106501::icu_regex_traits_implementation::do_transform(int const*, int const*, icu_50::Collator const*) const'

そのため注意して使う。

3.8でのビルドの失敗

GnuCash 3.8のビルドでは,makeの実行時に以下のエラーがでて失敗した。

Backtrace:
In ice-9/boot-9.scm:
    705:2 19 (call-with-prompt _ _ #<procedure default-prompt-handle…>)
In ice-9/eval.scm:
    619:8 18 (_ #(#(#<directory (guile-user) 559673c32140>)))
In /usr/bin/guild:
    72:17 17 (main _)
In srfi/srfi-1.scm:
    640:9 16 (for-each #<procedure 559673b29080 at scripts/compile.…> …)
In scripts/compile.scm:
   251:26 15 (_ _)
In system/base/target.scm:
     57:6 14 (with-target _ _)
In system/base/compile.scm:
    152:6 13 (compile-file _ #:output-file _ #:from _ #:to _ #:env _ …)
     43:4 12 (call-once _)
In ice-9/boot-9.scm:
    841:4 11 (with-throw-handler _ _ _)
In system/base/compile.scm:
    59:11 10 (_)
   155:11  9 (_ #<closed: file 559673d4d690>)
   235:18  8 (read-and-compile #<input: unittest-support.scm 13> # _ …)
   183:32  7 (compile-fold (#<procedure compile-tree-il (x e opts)>) …)
In ice-9/boot-9.scm:
   2312:4  6 (save-module-excursion #<procedure 559673d54ec0 at lang…>)
In language/scheme/compile-tree-il.scm:
    31:15  5 (_)
In ice-9/psyntax.scm:
  1235:36  4 (expand-top-sequence ((eval-when (compile load # #) #)) …)
  1182:24  3 (parse _ (("placeholder" placeholder)) ((top) #(# # …)) …)
   285:10  2 (parse _ (("placeholder" placeholder)) ((top) #(# # …)) …)
In unknown file:
           1 (load-extension "libtest-core-guile" "scm_init_unittest…")
In ice-9/boot-9.scm:
   752:25  0 (dispatch-exception _ _ _)

ice-9/boot-9.scm:752:25: In procedure dispatch-exception:
In procedure dynamic-link: file: "libtest-core-guile", message: "file not found"
make[2]: *** [common/test-core/CMakeFiles/scm-test-core.dir/build.make:62: lib/gnucash/scm/ccache/2.2/gnucash/unittest-support.go] Error 1

結局解決できなかったため,3.6にバージョンを落とした。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です