インストール: GNU Autoconf | UNIX系OSのパッケージ開発の基盤ソフト

プログラムをSVNやGitのリポジトリーからビルドする際に,configure.acからconfigureファイルの生成時に必要なGNU Autoconfをソースコードからインストールする。

GNU AutoconfはAutotoolsというUNIX系OSでソフトウェアパッケージ開発を行うためのフレームワークの1種であり,autoconf, automake, libtoolsの3大ソフトウェアの一つである。

ソースコードからソフトウェアをインストール際にほぼ必須となる。システムにインストールされているGNU Autoconfはバージョンが古いこともあるので,最新のソフトウェアをソースコードからインストールする際に,新しいGNU Autoconfが必要な場合がある。

インストール情報
項目 説明
配布元
リポジトリー
手順
依存情報
依存先 (必須)
依存先 (任意)
  • Autoconf 2.60+: リポジトリーからのビルド時に必要。
  • Automake 1.10+: リポジトリーからのビルド時に必要。
  • Help2man 1.29+: リポジトリーからのビルド時に必要。
  • Texinfo 4.8+: リポジトリーからのビルド時に必要。
依存元
インストール手順
sh -eux <<-"EOT"
LOCAL=~/.local J=$(grep -cs '^processor' /proc/cpuinfo || echo 2)
PKG=autoconf VER=2.69b TAG=v$VER PKG_VER=$PKG${VER:+-$VER}
mkdir -p "$LOCAL/src"
cd "$LOCAL/src"

if (command -v git && command -v autoconf) >/dev/null; then
  [ -e $PKG ] || git clone --depth 1 git://git.sv.gnu.org/autoconf $PKG
  cd $PKG
  git fetch --depth 1 ${TAG:+origin tag $TAG}
  git checkout -f ${TAG:-master}
  git clean -dfX
  autoreconf -i
else  
  [ -e $PKG_VER ] || wget https://ftp.gnu.org/gnu/$PKG/$PKG_VER.tar.gz
  tar -xf $PKG_VER.*
  cd $PKG_VER
fi

make -kj $J distclean clean || :
./configure --prefix="$LOCAL/stow/$PKG_VER"
make -j $J
make -j $J check
make -j $J install

cd "$LOCAL/stow"
echo $PKG${VER:+-}[0-9]* | xargs -n 1 stow -D
stow $PKG_VER
EOT
インストール例
日付 バージョン OS 依存関係
2020-08-18 2.69b Ubuntu 20.04 GNU Make 4.2.1, GCC 9.3.0, Perl 5.32.0, M4 1.4.18
Help2man 1.47.8, Texinfo 6.6, Automake 1.16.1

リポジトリーからのautoconfのビルドにはautoconf自身が必要になるので,初回はリリースtar.gzからインストールする。

make checkのテストが523個あり,テストの完了に20-30分ほどかかったので注意する。

GNU Autoconfのビルドに着手したのは2019年の8月頃だったのだが,make checkが失敗したり思っていた以上に難しくて時間がかかった。

Perlをソースコードからインストールして,Perlを使用しているTexinfoもインストールし直したのをきっかけにうまくインストールできたように思う。

当初,2.69bのインストール時にmakeで以下のエラーが出た。

MiscXS.c: loadable library and perl binaries are mismatched (got handshake key 0xde00080, needed 0xcd00080)

Perlのバイナリーがあっていないようだ。

調べたところ「MiscXS.c:
loadable library and perl binaries are mismatched loadable library and perl binaries are mismatched – General Help – funtoo forums
」がみつかった。

どうやらTexinfoのMiscXS.soのPerlのモジュールの問題のようだった。OSをUbuntu 18.04から20.04に更新したり,Perlを自前でビルドしたのもあり,Texinfoをインストールし直すと解決した。

コメントを残す

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