インストール: GNU Readline | コマンドライン操作の共通ライブラリー

対話シェルなどのコマンドラインでの操作を便利にしてくれるGNU Readlineをソースコードからインストールする。

GNU ReadlineはBashやGDB,PostgreSQL, Python, Rubyといった対話シェルを実装している数多のソフトウェアで利用されており,これらのソフトの依存関係の一つになっている。

厳密には,GNU Readlineなしでもこれらのソフトをインストール可能ではあるが,GNU Readlineがないと対話シェルで履歴の活用,タブ補完が利用できず,カーソル移動すらままならない。そのため,GNU Readlineを有効にしてのインストールが強く推奨される。

インストール情報
項目説明
配布元
リポジトリー
手順
依存情報
依存先 (必須)
依存先 (任意)
依存元
  • 対話シェルの利用プログラム (Bash, MariaDB/MySQL, PostgreSQL, Python, Ruby, GDB, etc.)
インストール手順
sh -eux <<-"EOT"
PKG=readline VER=8.0 TAG=$PKG-$VER PKG_VER=$PKG${VER:+-$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 git://git.savannah.gnu.org/$PKG.git
cd $PKG
git fetch --depth 1 origin tag $TAG
git checkout -f $TAG
git clean -dfX
else
[ -e $PKG_VER ] || wget ftp://ftp.gnu.org/gnu/$PKG/$PKG_VER.tar.gz
tar -xf $PKG_VER.*
cd $PKG_VER
make -kj $J distclean clean || :
fi
[ -x configure ] && ./configure --prefix="$LOCAL/stow/$PKG_VER" pkg-config --exists tinfo && OPTION=SHLIB_LIBS=ltinfo
make -j $J $OPTION 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依存関係
2018-09-237.0Ubuntu 16.04GNU Make 4.2.1, GCC 8.1.0
2019-03-038.0Ubuntu 18.04GNU Make 4.2.1, GCC 8.1.0
2019-07-058.0Ubuntu 18.04GNU Make 4.2.1, GCC 7.4.0
2020-08-088.0Ubuntu 20.04GNU Make 4.2.1, GCC 9.3.0, ncurses 6.2

以上で完了となる。

Ubuntu 20.04にOSを更新すると,awkなどがローカルのGNU Readlineを参照するとundefined symbol: UPなどのエラーを出すようになってしまった。

これを防ぐために,GNU Readlineにlibtinfoをリンクするようにした。詳細は「libreadline.so.8: undefined symbol: UPの対処方法」を参照する。

インストール: GNU Readline | コマンドライン操作の共通ライブラリー” に対して1件のコメントがあります。

コメントを残す

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