Bash は Bourne-Again Shell を提供します。
はじめにアップストリームが認識している問題を修正します。
patch -Np1 -i ../bash-5.2.21-upstream_fixes-1.patch
Bash をコンパイルするための準備をします。
./configure --prefix=/usr \ --without-bash-malloc \ --with-installed-readline \ --docdir=/usr/share/doc/bash-5.2.21
configure オプションの意味
--with-installed-readline
このオプションは Bash が持つ独自の readline
ライブラリではなく、既にインストールした readline
ライブラリを用いることを指示します。
パッケージをコンパイルします。
make
テストスィートを実行しない場合は「パッケージをインストールします。」と書かれた箇所まで読み飛ばしてください。
テストを実施するにあたっては tester
ユーザーによるソースツリーへの書き込みを可能とします。
chown -R tester .
本パッケージのテストスイートは、非 root
ユーザーが実行するものとされていて、利用する端末が標準入力に接続できているものとしています。
この仕様を満たすためには、Expect
を使って新たな疑似端末を起動します。 そして tester
ユーザーとしてテストを実行します。
su -s /usr/bin/expect tester << "EOF" set timeout -1 spawn make tests expect eof lassign [wait] _ _ _ value exit $value EOF
テストスイートでは diff
を使って、テストスクリプトの出力結果と期待される出力結果との差異を調べています。 diff からの出力(先頭行に <
と >
)があれば、テストが失敗したことを表します。
ただしその差異は無視できる旨を示すメッセージがあれば問題ありません。 run-builtins
というテストは、出力の第 1
行めが異なるということで、特定のホストディストリビューションでは失敗する場合があります。
パッケージをインストールします。
make install
新たにコンパイルした bash プログラムを実行します。(この時点までに実行されていたものが置き換えられます。)
exec /usr/bin/bash --login