絖綛 N@i.jp  昨日:00000000
 今日:00026315
 総計:00026315
keywords
管理者専用
  Post   Add link   Control Panel 































新しいトピック
最新:04/16 19:55


新しいコメント
最新:07/28 16:47






管理人へMAIL

プライバシーポリシー

readline-8.0 と bash-5.0

参照:GNU Bash


GNU bash 5.0がリリースされた


 暫く前から RC(Release Candidate) になっていたが、GNU bash 5.0 が 1/7 にリリースになった。メジャーアップデートは10年ぶりだそうだ。あわせて readline-8.0 もリリースになっていたので、ウチの自宅サーバ(Mac mini G4)も最新版に入れ替えてみた。
 以下は自分のための備忘録なので、他の環境でのビルド方法とは異なる所があるかもしれない。

1. readline-8.0

1) ダウンロード
公式サイト:https://tiswww.case.edu/php/chet/readline/rltop.html
 上記公式サイトやGNU ftpサイトなどから "readline-8.0.tar.gz"をダウンロードして解凍する。

2) ソース修正
 "support/shobj-conf" を修正する。Mac OS Xでビルドすると、コンパイルオプションに "-arch_only `/usr/bin/arch`" が指定されるのだが、自分が使っている gcc 5.5.0 にはこのコンパイルオプションが無く、コンパイルエラーになってしまうため。修正個所は以下の2箇所。

$ diff ./support/shobj-conf ./support/shobj-conf.org
192c192
<       SHLIB_XLDFLAGS='-install_name $(libdir)/`echo $@ | sed "s:\\..*::"`.$(SHLIB_MAJOR).$(SHLIB_LIBSUFF) -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -v'
---
>       SHLIB_XLDFLAGS='-arch_only `/usr/bin/arch` -install_name $(libdir)/`echo $@ | sed "s:\\..*::"`.$(SHLIB_MAJOR).$(SHLIB_LIBSUFF) -current_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -compatibility_version $(SHLIB_MAJOR)$(SHLIB_MINOR) -v'
198c198
<           SHOBJ_ARCHFLAGS=
---
>           SHOBJ_ARCHFLAGS='-arch_only `/usr/bin/arch`'

注)「¥」は実際には半角の「\」(バックスラッシュ)

3) ビルド方法
 readline-8.0のビルドスクリプト("build.sh")は以下。

#!/bin/sh -x

export MACOSX_DEPLOYMENT_TARGET=10.4
export GCC="/usr/local"
export PATH="${GCC}/bin:$PATH"
export DYLD_LIBRARY_PATH="${GCC}/lib:$DYLD_LIBRARY_PATH"

./configure \
    --enable-multibyte \
    --with-curses \
    CC="${GCC}/bin/gcc" \
    CPP="${GCC}/bin/cpp" \
    CPPFLAGS="-I/usr/local/include -I/usr/include" \
    CFLAGS="-O2 -mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET}" \
    LDFLAGS="-L/usr/local/lib -L/usr/lib"
make

注)「¥」は実際には半角の「\」(バックスラッシュ)

4) ビルドしてインストール

$ chmod +x ./build.sh
$ ./build.sh
$ sudo make install

2. bash-5.0

1) ダウンロード
公式サイト: https://www.gnu.org/software/bash/
 上記公式サイトやGNU ftpサイトなどから "bash-5.0.tar.gz"をダウンロードして解凍する。

2) ソース修正

  • "support/shobj-conf"
     readlineと同じ "support/shobj-conf" が bash-5.0 のソースにもあるので、同じように修正する。
  • "examples/loadables/fdflags.c"
    ウチの Mac OS X 10.4.11 (Tiger) の場合、openフラグに O_CLOEXEC が無いため、インストールの際 "examples/loadables/fdflags.c" のコンパイルが失敗する。これを防ぐため、O_CLOEXEC の定義を追加する。かなり無理やりだが、examples なので bash の動作には影響ないだろう。
    $ diff examples/loadables/fdflags.c examples/loadables/fdflags.c.org
    32d31
    < #define O_CLOEXEC       0x1000000

3) ビルド方法
 bash-5.0のビルドスクリプト("build.sh")は以下。

#!/bin/sh -x

export MACOSX_DEPLOYMENT_TARGET=10.4
export GCC="/usr/local"
export PATH="${GCC}/bin:$PATH"
export DYLD_LIBRARY_PATH="${GCC}/lib:$DYLD_LIBRARY_PATH"

./configure \
    --enable-alias \
    --enable-history \
    --enable-multibyte \
    --enable-readline \
    --with-curses \
    --with-libiconv-prefix="/usr/local" \
    CC="${GCC}/bin/gcc" \
    CPPFLAGS="-I/usr/local/include -I/usr/include" \
    CFLAGS="-O2 -mmacosx-version-min=${MACOSX_DEPLOYMENT_TARGET}" \
    LDFLAGS="-L/usr/local/lib -L/usr/lib"
make
make check >check.log

注)「¥」は実際には半角の「\」(バックスラッシュ)

4) ビルドしてインストール

$ chmod +x ./build.sh
$ ./build.sh
$ sudo make install

 今のところ以前のbash-4.4と変わりなく動作に問題はない様子で、何が変わったの?と言った感じ。bash-5.0 ではバグ修正と新機能(シェル変数)の追加が行われており、nameref(名前参照)に若干の非互換があるので注意が必要だそうだ。とは言え、namerefという機能を良く知らない(^^;)ので、どう注意すれば良いのか分からん。あまり使われていない機能のようだから、気にしないでも大丈夫かな。


< 過去の記事 [ 1月の 全てのカテゴリ リスト ] 新しい記事 >

2019 calendar
1月
12345
6789101112
13141516171819
20212223242526
2728293031


掲示板
最新:08/15 17:19


GsBlog was developed by GUSTAV, Copyright(C) 2003, Web Application Factory All Rights Reserved.