LoginSignup
1
1

More than 3 years have passed since last update.

LXDをソースからビルドして実行するまでに困ったことと対処法

Last updated at Posted at 2019-06-21

環境

  • Distribution:Ubuntu18.04 LTS
  • Linux kernel:4.15.0-51-generic
  • golang:1.12.5 linux/amd64
  • gcc:(Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0

lxcをビルドするときに困ったこと

lxcビルド時に発生したエラーやその対処方法を記述する

makeが失敗する

makeを実行する際に失敗した原因と解決策を記述する

W: cannot generate system identifier for public text

  • 原因:docbookコマンドがインストールされていない
  • 対策: sudo apt install docbookを実行して,docbookコマンドをインストールする
  • 結果:makeが完了した

lxdをビルドするときに困ったこと

lxdビルド時に発生したエラーやその対処方法を記述する

make depsが失敗する

make deps を行う際に失敗することがあるのでまとめておく.

autoreconf: not found

  • 原因:autoreconfコマンドが存在しない
  • 対策: sudo apt install autoconf を実行してインストールする
  • 結果:次のエラーが発生した

error: Libtool library used but 'LIBTOOL' is undefined

  • 原因:LIBTOOL環境変数が設定されていない
  • 対策: sudo apt install automake libtool でインストールする
  • 結果:次のエラーが発生した

configure: error: Package requirements (libuv >= 1.8.0) were not met: No package libuv found

  • 原因:libuvが見つからない
  • 対策: sudo apt install libuv1-dev でインストールする
  • 結果:解決した

raftのmakeができない

  • 症状
./configure: line 12849: syntax error near unexpected token `UV,'
./configure: line 12849: `  PKG_CHECK_MODULES(UV, libuv >= 1.8.0, , )'
  • 原因:PKG_CHECK_MODULESという関数が見つからないことが原因であると推測
  • 対策:sudo apt install pkg-config でインストールする
  • 結果:解決した

makeが失敗する

make を行う際に失敗することがあるので,症状と原因と対策を記載する

fatal error: sys/acl.h: No such file or directory

  • 原因:sys/acl.h ファイルが存在しない
  • 対策: sudo apt install libacl1-dev でインストールする
  • 結果:次のエラーへ

No package 'lxc' found

  • 原因:lxcが見つからない
  • 対策:lxcをビルドする
  • 結果:ビルドが成功する

lxdを実行するときにこまったこと

lxdコマンドを実行するときに困ったことを記述する

lxd: look up error: symbol libdqlite.so.0: symbol: sqlite3_wall_replication_register: no such file or directory

  • 原因:lxdはsudoをつけて実行するため,rootで実行する際動的ライブラリの参照先が異なっていることが原因だった.
    • 詳細:
yota@yota-MacBookAir:~/go/src/github.com/lxc/lxd$ ldd ~/go/bin/lxd

    ~略~

    libsqlite3.so.0 => /home/yota/go/deps/sqlite/.libs/libsqlite3.so.0 (0x00007fc0bf9f0000)

    libdqlite.so.0 => /home/yota/go/deps/dqlite/.libs/libdqlite.so.0 (0x00007fc0bf7d5000)

    ~略~

yota@yota-MacBookAir:~/go/src/github.com/lxc/lxd$ sudo ldd ~/go/bin/lxd

    ~略~

    libsqlite3.so.0 => /usr/lib/x86_64-linux-gnu/libsqlite3.so.0 (0x00007f8b89bab000)

    libdqlite.so.0 => /home/yota/go/deps/dqlite/.libs/libdqlite.so.0 (0x00007f8b89990000)

    ~略~

  • 対策:LD_LIBRARY_PATHを一般ユーザだけでなく,rootにも反映させる
    • 詳細:/etc/environmentに環境変数を設定する
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
LD_LIBRARY_PATH="/home/yota/go/deps/sqlite/.libs/:/home/yota/go/deps/libco/:/home/yota/go/deps/raft/.libs/:/home/yota/go/deps/dqlite/.libs/"
  • 結果:lxdを実行することができた.

感想

実行にかなり手こずってしまった.しかし,バイナリの動的リンクについて詳しくなることができたので良し.

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1