ソフトウェアのバージョン(Macユーザのための)

ここに必要なソフトウェアのバージョンを調べるターミナルコマンド群を一覧しておきます。
強制ではありませぬが、出来うる限り、最新バージョンになるように努力してくださいませ。
バージョンが古いと、当該中の手解き(ハンズオン)を行うことができない場合があります。

ピリオド区切りバージョン表記法(version notation separated by periods)
  〔major version〕.〔minor version〕.〔maintenance version〕
  〔メジャーバージョン〕.〔マイナーバージョン〕.〔メンテナンスバージョン〕

--- 青木淳@2024/03/27

| macos | bash | xcode | clang | make | scan-build | java | ant | python | javascript | ruby | svn | git |

------------------------------------------------------------
【Mac OS(macOS)のバージョンを調べるコマンド 参照:アップデート情報
$ # macOS 14.4 (Sonoma)
$ sw_vers
ProductName:         macOS
ProductVersion:      14.4.1
BuildVersion:        23E224

macOS 10.15 (Catalina) 以降では、32bitアプリケーションなどが動作しなくなります。
都合が良くない場合には、macOS 10.14 (Mojave) を維持してください。

$ # macOS 10.14 (Mojave) 
$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.14.6
BuildVersion:   18G7016

------------------------------------------------------------
【bash(シェル:コマンドインタプリタ)のバージョンを調べるコマンド
$ bash --version
GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin22)
Copyright (C) 2007 Free Software Foundation, Inc.

Catalina 以降はデフォルトのシェルが bash から zsh に変わっています、ご注意を。
デファクト・スタンダート(事実上の標準)シェルとして bash を強く推します。
すべての解説は bash をベースに記されておりますので、気をつけてください。

デフォルトのシェルを切り替えるを方法を紹介しておきます。
    $ chsh -s /bin/bash   # デフォルトのシェルをbashにする
    $ chsh -s /bin/zsh    # デフォルトのシェルをzshにする

なお、bash に切り替えた際に出現して来る
default interactive shell is now zsh...のメッセージを抑制するためには、
以下の一文を、~/.bash_profileに加えるのがいいでしょう。
    export BASH_SILENCE_DEPRECATION_WARNING=1

近頃では、エディタとして Visual Studio Code を使用している方々が多いので、
~/.bash_profile を、そのエディタにかけるコマンドを紹介しておきます。

$ open -a 'Visual Studio Code' ~/.bash_profile

しっかりと~/.bash_profileの加筆修正ができるようになってください、シェルスクリプトの勉強をしながら…

------------------------------------------------------------
【Xcode(&コマンドラインツール)のバージョンを調べるコマンド 参照:Xcodeの最小要件とサポートされるSDK
$ # macOS 14.4 (Sonoma)
$ xcodebuild -version
Xcode 15.3
Build version 15E204a

$ # macOS 10.14 (Mojave) 
$ xcodebuild -version
Xcode 11.3.1
Build version 11C505

上記のXcodeに加えて、Command Line Tools for Xcodeもインストールします。
$ open -a 'Safari' https://developer.apple.com/download/more/?=Xcode

$ # macOS 14.4 (Sonoma)
$ pkgutil --pkg-info=com.apple.pkg.CLTools_Executables | grep version
version: 15.3.0.0.1.1708487402

$ # macOS 10.14 (Mojave) 
$ pkgutil --pkg-info=com.apple.pkg.CLTools_Executables | grep version
version: 11.3.1.0.1.1576735732

------------------------------------------------------------

★★★これより下の項目については、すべて macOS 14.3 (Sonoma) 以降におけるバージョンのみを示します。★★★

------------------------------------------------------------
【Cコンパイラのバージョンを調べるコマンド
$ cc --version
Apple clang version 15.0.0 (clang-1500.3.9.4)
Target: x86_64-apple-darwin23.4.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

$ gcc --version
Apple clang version 15.0.0 (clang-1500.3.9.4)
Target: x86_64-apple-darwin23.4.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

$ clang --version
Apple clang version 15.0.0 (clang-1500.3.9.4)
Target: x86_64-apple-darwin23.4.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

Mac OS X(macOS)のCコンパイラは、いずれもその実体がClang(クラン)になります。
Clangは、C, C++, Objective-C, Objective-C++などのコンパイラのフロントエンドであり、
ミドルエンドとバックエンドとしてLLVM(低水準仮想マシン)を使用しています。

------------------------------------------------------------
【Cプログラムのビルドを行うmakeのバージョンを調べるコマンド
$ make --version
GNU Make 3.81
Copyright (C) 2006  Free Software Foundation, Inc.
This is free software; see the source for copying conditions.
There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A
PARTICULAR PURPOSE.

This program built for i386-apple-darwin11.3.0

------------------------------------------------------------
【Cプログラムの静的コード解析器(アナライザ)scan-build(およびscan-view)のバージョンを調べるコマンド
$ scan-build --help | grep checker-
ANALYZER BUILD: checker-279 (2016-11-14 15:34:09)

おそらくインストールされていないと思われますので、
以下の「静的コード解析」のページ(学内からのみ)を参照し、インストールしてください。
$ open -a 'Safari' http://bluetree.kyoto-su.ac.jp/repositories/AP/C/StaticCodeAnalysis/index-j.html
    $ b2a open -a 'Safari' http://bluetree.kyoto-su.ac.jp/repositories/AP/C/StaticCodeAnalysis/index-j.html

------------------------------------------------------------
【Javaの仮想マシンとコンパイラのバージョンを調べるコマンド
$ (export JAVA_HOME=`/usr/libexec/java_home -v "22"` ; java -version ; javac -version)
java version "22" 2024-03-19
Java(TM) SE Runtime Environment (build 22+36-2370)
Java HotSpot(TM) 64-Bit Server VM (build 22+36-2370, mixed mode, sharing)
javac 22

このバージョン以上でないと脆弱性があることが判明しています。
このバージョン未満の場合は、下記のページ(学内からのみ)を参考にしてバージョンアップしてください。
$ open -a 'Safari' http://bluetree.kyoto-su.ac.jp/repositories/AP/Java/JavaSE/index.html
    $ b2a open -a 'Safari' http://bluetree.kyoto-su.ac.jp/repositories/AP/Java/JavaSE/index.html

この「22」とLTS(Long Term Support)版の「21」と「17」と「11」と「8」において、
サードパーティ製Javaライブラリなどが揃っていない場合もあります。
それゆえ、当分の間は「22」と「21」と「17」と「11」と「8」の併用でゆきます。
(場合によっては「20」や「19」や「18」や「16」や「15」や「14」や「13」や「12」や「10」や「9」なども併用する必要があるやもしれません。)

$ (export JAVA_HOME=`/usr/libexec/java_home -v "21"` ; java -version ; javac -version)
java version "21.0.2" 2024-01-16 LTS
Java(TM) SE Runtime Environment (build 21.0.2+13-LTS-58)
Java HotSpot(TM) 64-Bit Server VM (build 21.0.2+13-LTS-58, mixed mode, sharing)
javac 21.0.2

$ (export JAVA_HOME=`/usr/libexec/java_home -v "17"` ; java -version ; javac -version)
java version "17.0.10" 2024-01-16 LTS
Java(TM) SE Runtime Environment (build 17.0.10+11-LTS-240)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.10+11-LTS-240, mixed mode, sharing)
javac 17.0.10

$ (export JAVA_HOME=`/usr/libexec/java_home -v "11"` ; java -version ; javac -version)
java version "11.0.22" 2024-01-16 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.22+9-LTS-219)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.22+9-LTS-219, mixed mode)
javac 11.0.22

$ (export JAVA_HOME=`/usr/libexec/java_home -v "1.8"` ; java -version ; javac -version)
    $ sudo rm -fr /Library/Internet\ Plug-Ins/JavaAppletPlugin.plugin
    $ sudo rm -fr /Library/PreferencesPanes/JavaControlPanel.prefPane
    $ sudo rm -fr ~/Library/Application\ Support/Oracle/Java
java version "1.8.0_401"
Java(TM) SE Runtime Environment (build 1.8.0_401-b10)
Java HotSpot(TM) 64-Bit Server VM (build 25.401-b10, mixed mode)
javac 1.8.0_401

$ (export JAVA_HOME=`/usr/libexec/java_home -v "20"` ; java -version ; javac -version)
java version "20.0.2" 2023-07-18
Java(TM) SE Runtime Environment (build 20.0.2+9-78)
Java HotSpot(TM) 64-Bit Server VM (build 20.0.2+9-78, mixed mode, sharing)
javac 20.0.2

$ (export JAVA_HOME=`/usr/libexec/java_home -v "19"` ; java -version ; javac -version)
java version "19.0.2" 2023-01-17
Java(TM) SE Runtime Environment (build 19.0.2+7-44)
Java HotSpot(TM) 64-Bit Server VM (build 19.0.2+7-44, mixed mode, sharing)
javac 19.0.2

$ (export JAVA_HOME=`/usr/libexec/java_home -v "18"` ; java -version ; javac -version)
java version "18.0.2.1" 2022-08-18
Java(TM) SE Runtime Environment (build 18.0.2.1+1-1)
Java HotSpot(TM) 64-Bit Server VM (build 18.0.2.1+1-1, mixed mode, sharing)
javac 18.0.2.1

$ (export JAVA_HOME=`/usr/libexec/java_home -v "16"` ; java -version ; javac -version)
java version "16.0.2" 2021-07-20
Java(TM) SE Runtime Environment (build 16.0.2+7-67)
Java HotSpot(TM) 64-Bit Server VM (build 16.0.2+7-67, mixed mode, sharing)
javac 16.0.2

$ (export JAVA_HOME=`/usr/libexec/java_home -v "15"` ; java -version ; javac -version)
java version "15.0.2" 2021-01-19
Java(TM) SE Runtime Environment (build 15.0.2+7-27)
Java HotSpot(TM) 64-Bit Server VM (build 15.0.2+7-27, mixed mode, sharing)
javac 15.0.2

$ (export JAVA_HOME=`/usr/libexec/java_home -v "14"` ; java -version ; javac -version)
java version "14.0.2" 2020-07-14
Java(TM) SE Runtime Environment (build 14.0.2+12-46)
Java HotSpot(TM) 64-Bit Server VM (build 14.0.2+12-46, mixed mode, sharing)
javac 14.0.2

$ (export JAVA_HOME=`/usr/libexec/java_home -v "13"` ; java -version ; javac -version)
java version "13.0.2" 2020-01-14
Java(TM) SE Runtime Environment (build 13.0.2+8)
Java HotSpot(TM) 64-Bit Server VM (build 13.0.2+8, mixed mode, sharing)
javac 13.0.2

$ (export JAVA_HOME=`/usr/libexec/java_home -v "12"` ; java -version ; javac -version)
java version "12.0.2" 2019-07-16
Java(TM) SE Runtime Environment (build 12.0.2+10)
Java HotSpot(TM) 64-Bit Server VM (build 12.0.2+10, mixed mode, sharing)
javac 12.0.2

$ (export JAVA_HOME=`/usr/libexec/java_home -v "10"` ; java -version ; javac -version)
java version "10.0.2" 2018-07-17
Java(TM) SE Runtime Environment 18.3 (build 10.0.2+13)
Java HotSpot(TM) 64-Bit Server VM 18.3 (build 10.0.2+13, mixed mode)
javac 10.0.2

$ (export JAVA_HOME=`/usr/libexec/java_home -v "9"` ; java -version ; javac -version)
java version "9.0.4"
Java(TM) SE Runtime Environment (build 9.0.4+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode)
javac 9.0.4

------------------------------------------------------------
【Javaプログラムのビルドを行うantのバージョンを調べるコマンド
$ ant -version
Apache Ant(TM) version 1.10.14 compiled on August 16 2023

おそらくインストールされていないと思われますので、
以下の「Apache Ant」のページ(学内からのみ)を参照し、インストールしてください。
$ open -a 'Safari' http://bluetree.kyoto-su.ac.jp/repositories/AP/Java/ApacheAnt/index.html
    $ b2a open -a 'Safari' http://bluetree.kyoto-su.ac.jp/repositories/AP/Java/ApacheAnt/index.html

------------------------------------------------------------
【Java/JavaScriptおよびC/C++プログラムの整形器(フォーマッタ)clang-formatのバージョンを調べるコマンド
$ clang-format -version
clang-format version 4.0.0 (tags/checker/checker-279)

おそらくインストールされていないと思われますので、
以下の「静的コード解析」のページ(学内からのみ)を参照し、インストールしてください。
$ open -a 'Safari' http://bluetree.kyoto-su.ac.jp/repositories/AP/C/StaticCodeAnalysis/index-j.html
    $ b2a open -a 'Safari' http://bluetree.kyoto-su.ac.jp/repositories/AP/C/StaticCodeAnalysis/index-j.html
フォーマッタclang-formatは、静的コード解析Clang Static Analyzerに付属してきます。
$ open -a 'Safari' http://bluetree.kyoto-su.ac.jp/repositories/AP/C/ProgramFormatter/index-j.html
    $ b2a open -a 'Safari' http://bluetree.kyoto-su.ac.jp/repositories/AP/C/ProgramFormatter/index-j.html

------------------------------------------------------------
【Python処理系のバージョンを調べるコマンド
$ /usr/bin/python3 --version
Python 3.9.6

Python2系とPython3系を共存させ、併用し(切り替えて使い)たい場合には、以下のページ(学内からのみ)を参照してください。
$ open -a 'Safari' http://bluetree.kyoto-su.ac.jp/repositories/AP/Python/3/Python3and2/index-j.html
    $ b2a open -a 'Safari' http://bluetree.kyoto-su.ac.jp/repositories/AP/Python/3/Python3and2/index-j.html

$ pyenv --version
pyenv 2.3.36-24-g5b4d5a32

$ python --version
Python 3.11.9

Pythonの2系および3系の安定バージョンを示しておきます。
$ pyenv versions
* system (set by ~/.pyenv/version)
  2.7.18
  3.9.19
  3.10.14
  3.11.9
  3.12.2

以下にインストール候補たちをリストしておきます。
$ pyenv install --list | grep -E '^\ *3.12.[0-9]*$'
  3.12.0
  3.12.1
  3.12.2

$ pyenv install --list | grep -E '^\ *3.11.[0-9]*$'
  3.11.0
  3.11.1
  3.11.2
  3.11.3
  3.11.4
  3.11.5
  3.11.6
  3.11.7
  3.11.8
  3.11.9

$ pyenv install --list | grep -E '^\ *3.10.[0-9]*$'
  3.10.0
  3.10.1
  3.10.2
  3.10.3
  3.10.4
  3.10.5
  3.10.6
  3.10.7
  3.10.8
  3.10.9
  3.10.10
  3.10.11
  3.10.12
  3.10.13
  3.10.14

$ pyenv install --list | grep -E '^\ *3.9.[0-9]*$'
  3.9.0
  3.9.1
  3.9.2
  3.9.4
  3.9.5
  3.9.6
  3.9.7
  3.9.8
  3.9.9
  3.9.10
  3.9.11
  3.9.12
  3.9.13
  3.9.14
  3.9.15
  3.9.16
  3.9.17
  3.9.18
  3.9.19

$ pyenv install --list | grep -E '^\ *2.7.[0-9]*$'
  2.7.0
  2.7.1
  2.7.2
  2.7.3
  2.7.4
  2.7.5
  2.7.6
  2.7.7
  2.7.8
  2.7.9
  2.7.10
  2.7.11
  2.7.12
  2.7.13
  2.7.14
  2.7.15
  2.7.16
  2.7.17
  2.7.18

------------------------------------------------------------
【JavaScript処理系のバージョンを調べるコマンド
$ jsc -e 'let v = version(); print(v);    // Currently does nothing. It will return undefined.'
undefined

JSCやNode.jsなどのJavaScript環境を整えたい場合には、以下のページ(学内からのみ)を参照してください。
$ open -a 'Safari' http://bluetree.kyoto-su.ac.jp/repositories/AP/JavaScript/NodeVersionManager/index.html
    $ b2a open -a 'Safari' http://bluetree.kyoto-su.ac.jp/repositories/AP/JavaScript/NodeVersionManager/index.html

$ nvm --version
0.39.1

$ node --version
v16.16.0

$ nvm ls
->     v16.16.0
default -> node (-> v16.16.0)
iojs -> N/A (default)
unstable -> N/A (default)
node -> stable (-> v16.16.0) (default)
stable -> 14.15 (-> v16.16.0) (default)
lts/∗ -> lts/gallium (-> v16.16.0)
lts/argon -> v4.9.1 (-> N/A)
lts/boron -> v6.17.1 (-> N/A)
lts/carbon -> v8.17.0 (-> N/A)
lts/dubnium -> v10.24.1 (-> N/A)
lts/erbium -> v12.22.12 (-> N/A)
lts/fermium -> v14.20.0 (-> N/A)
lts/gallium -> v16.16.0

JavaScript(Node.js)の最新LTSバージョンを示しておきます。
$ nvm ls-remote | grep -E 'Latest LTS'
         v4.9.1   (Latest LTS: Argon)
        v6.17.1   (Latest LTS: Boron)
        v8.17.0   (Latest LTS: Carbon)
       v10.24.1   (Latest LTS: Dubnium)
      v12.22.12   (Latest LTS: Erbium)
       v14.20.0   (Latest LTS: Fermium)
->     v16.16.0   (Latest LTS: Gallium)

------------------------------------------------------------
【Ruby処理系のバージョンを調べるコマンド
$ ruby --version
ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.x86_64-darwin20]

各種アプリケーションのRuby環境を整えたい場合には、以下のページ(学内からのみ)を参照してください。
$ open -a 'Safari' http://bluetree.kyoto-su.ac.jp/repositories/AP/Ruby/RubyVersionControl/index-j.html
    $ b2a open -a 'Safari' http://bluetree.kyoto-su.ac.jp/repositories/AP/Ruby/RubyVersionControl/index-j.html

$ rbenv --version
rbenv 1.2.0-16-gc4395e5

$ ruby --version
ruby 3.0.4p208 (2022-04-12 revision 3fa771dded) [x86_64-darwin21]

Rubyの安定バージョンを示しておきます。
$ rbenv versions
* system (set by ~/.rbenv/version)
  2.7.6
  3.0.4
  3.1.2

以下にインストール候補たちをリストしておきます。
$ rbenv install --list-all | grep -E '^\ *2.7.[0-9]*$'
2.7.0
2.7.1
2.7.2
2.7.3
2.7.4
2.7.5
2.7.6

$ rbenv install --list-all | grep -E '^\ *3.0.[0-9]*$'
3.0.0
3.0.1
3.0.2
3.0.3
3.0.4

$ rbenv install --list-all | grep -E '^\ *3.1.[0-9]*$'
3.1.0
3.1.1
3.1.2

------------------------------------------------------------
【集中型のソフトウェア構成管理(SCM:リポジトリ)であるSubversionのバージョンを調べるコマンド
$ svn --version
svn, version 1.10.4 (r1850624)
   compiled Dec 13 2019, 19:47:45 on x86_64-apple-darwin18.0.0

Copyright (C) 2019 The Apache Software Foundation.
This software consists of contributions made by many people;
see the NOTICE file for more information.
Subversion is open source software, see http://subversion.apache.org/

The following repository access (RA) modules are available:

* ra_svn : Module for accessing a repository using the svn network protocol.
  - with Cyrus SASL authentication
  - handles 'svn' scheme
* ra_local : Module for accessing a repository on local disk.
  - handles 'file' scheme
* ra_serf : Module for accessing a repository via WebDAV protocol using serf.
  - using serf 1.3.9 (compiled with 1.3.9)
  - handles 'http' scheme
  - handles 'https' scheme

The following authentication credential caches are available:

* Plaintext cache in ~/.subversion
* GPG-Agent
* Mac OS X Keychain

なお、Xcode 12からは、Xcode本体にも、Command Line Toolsにも、Subversionが同包されなくなりました。
LTS版のSubversion(1.10.6)を設えたい場合には、以下のページ(学内からのみ)を参照してください。
$ open -a 'Safari' http://bluetree.kyoto-su.ac.jp/repositories/AP/Subversion/index.html
    $ b2a open -a 'Safari' http://bluetree.kyoto-su.ac.jp/repositories/AP/Subversion/index.html

$ which -a svn | xargs -n 1 -I {} sh -cx '{} --version | head -n 2'
+ /usr/local/subversion/bin/svn --version
+ head -n 2
svn, version 1.10.6 (r1863367)
   compiled Jul 26 2020, 17:05:56 on x86_64-apple-darwin18.7.0
+ /opt/subversion/bin/svn --version
+ head -n 2
svn, version 1.10.6 (r1863367)
   compiled Aug 20 2019, 12:18:38 on x86_64-apple-darwin18.2.0
+ /usr/bin/svn --version
+ head -n 2
svn, version 1.10.4 (r1850624)
   compiled Dec 13 2019, 19:47:45 on x86_64-apple-darwin18.0.0

------------------------------------------------------------
【分散型のソフトウェア構成管理(SCM:リポジトリ)であるGit(ギット)のバージョンを調べるコマンド
$ git --version
git version 2.39.3 (Apple Git-146)

------------------------------------------------------------
以上になります。

$ hash -r ; バージョンを確かめるコマンド

ここで(お釈迦さんに対して説法する…:蛇足かもしれませぬが…)、バージョンを確かめるコマンドを実行する直前に、hashコマンドに-rオプションをつけて実行することを説明しておきましょう。以降の文章を読む際に、どうかbashとhashを(bとhを)混同しないように注意してください。コマンドインタプリタbashには、すでに実行したことがあるコマンドの実行ファイル(たとえば、lsという名ならば、/bin/lsという実体:ファイルポインタ)を覚えておくハッシュ辞書(キャッシュテーブル)があります。実行を要請されたコマンド名をたよりに、毎回毎回いちいちコマンドサーチパス(これは「echo $PATH」で確認できます)を引いて、コマンドの実行ファイルを見つけ出しているのではないのです。

1回目の実行で判明したコマンドの実行ファイルを、コマンド名と実行ファイルのペアにしてキャッシュテーブルに記憶しておきます。そして、2回目以降では、まずコマンド名でキャッシュテーブルを引き、見つかれば記憶しておいた実行ファイルをすぐに実行します。見つからないときに限り、コマンドサーチパスを探します。つまり、bashにはコマンドを高速に見つけ出して実行する仕組み(メカニズム)が組み込まれているのです。組み込みコマンドhashに-rオプションをつけて実行すると、当該のキャッシュテーブルをチャラに(クリア)してくれます。すなわち、必ずコマンドサーチパスを引いて、最新の実行ファイルを見つけ出すことを強制します。

バージョンアップしたときは、下図に示すように、以前の実行ファイル(old)と最新の実行ファイル(new)の2つがあるわけで、bashのキャッシュテーブルには以前の実行ファイルが記憶されており、コマンドサーチパスを引けば最新の実行ファイルが見つかる、という状況は困るわけですよね。ですから、バージョンを確かめる直前に、bashのキャッシュテーブルをhash -rでチャラすることは、とても理にかなっていますでしょ。

CacheTable

ちなみに、キャッシュテーブルはbash毎に用意されますので、新しいターミナルのウィンドウを開ければ、新たなbashが動き出し、当該のキャッシュテーブルは空の状態であり、必ずコマンドサーチパスを引きます。ゆえに、バージョンアップの際に、別のターミナルを開いて、バージョンを確かめることも、たいへん理にかなっていますよね。


Updated: 2024/03/27 (Created: 2008/04/20) KSU AokiHanko