MacOのソフトウェアsdman
を更新しようとしていますが、bashの古いバージョンのエラーが発生します。
rajkumar.natarajan$ sdk update
An outdated version of bash was detected on your system!
We recommend upgrading to bash 4.x, you have:
3.2.57(1)-release
Need to use brute force to replace candidates...
しかし、bashのバージョンはすでに最新です。
rajkumar.natarajan$ which bash
/usr/local/bin/bash
rajkumar.natarajan$ bash --version
GNU bash, version 5.0.11(1)-release (x86_64-Apple-darwin16.7.0)
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software; you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
sdman
はバージョン3.2.57である/bin/bash
を調べています。これは、macosがそれより新しいものを出荷できないためです。
Appleがそのような古いバージョンのBashをオペレーティングシステムに組み込んでいる理由は、ライセンスに関係しています。バージョン4.0(3.2の後継)以降、BashはGNU General Public License v3(GPLv3)を使用しますが、Appleはサポートしません(したい)。これに関する議論はこことここにあります。 GNU Bashのバージョン3.2は、GPLv2を備えた最後のバージョンであり、Appleが受け入れるため、これに固執します。
最新バージョンのbashをインストールしましたが、/bin/bash
をそれで置き換えていません。これは一部のレガシースクリプト/プログラムを破壊する可能性があるため(可能性は低いですが可能性があります)、実際に行うことはお勧めしません。
私の推奨はその警告を無視することです。 bash v3.2は通常 Shellshock の脆弱性の影響を受けるため、警告が表示されますが、AppleはこれをBash v3.2のバージョンでパッチしました。
その警告を無視できず、本当に/bin/bash
を更新する危険を冒したい場合は、バックアップの場所に移動して、新しいbashにシンボリックリンクします。
Sudo mv /bin/bash /bin/bash.bak
Sudo ln -s /usr/local/bin/bash /bin/bash
ただし、これを行うには、 バイパスSIP が必要です。
システム整合性保護を有効または無効にするには、リカバリOSを起動して、ターミナルからcsrutil(1)コマンドを実行する必要があります。
$ csrutil disable