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

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

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

--- 青木淳@2021/09/21

------------------------------------------------------------
【Mac OS X(macOS)のバージョンを調べるコマンド参照:アップデート情報
$ # macOS 11.6 (Big Sur)
$ sw_vers
ProductName:    macOS
ProductVersion: 11.6
BuildVersion:   20G165

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-darwin20)
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(コマンドラインツール)のバージョンを調べるコマンド】
$ # macOS 11.6 (Big Sur)
$ xcodebuild -version
Xcode 13.0
Build version 13A233

$ # 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 11.6 (Big Sur)
$ pkgutil --pkg-info=com.apple.pkg.CLTools_Executables | grep version
version: 13.0.0.0.1.1630607135

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

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

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

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

$ gcc --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/c++/4.2.1
Apple clang version 13.0.0 (clang-1300.0.29.3)
Target: x86_64-apple-darwin20.6.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

$ clang --version
Apple clang version 13.0.0 (clang-1300.0.29.3)
Target: x86_64-apple-darwin20.6.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 "17"` ; java -version ; javac -version)
    $ (export JAVA_HOME=`java_home-v "17"` ; java -version ; javac -version)
Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
java version "17" 2021-09-14 LTS
Java(TM) SE Runtime Environment (build 17+35-LTS-2724)
Java HotSpot(TM) 64-Bit Server VM (build 17+35-LTS-2724, mixed mode, sharing)
Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
javac 17

このバージョン以上でないと脆弱性があることが判明しています。
このバージョン未満の場合は、下記のページ(学内からのみ)を参考にしてバージョンアップしてください。
$ 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

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

$ (export JAVA_HOME=`/usr/libexec/java_home -v "16"` ; java -version ; javac -version)
    $ (export JAVA_HOME=`java_home-v "16"` ; java -version ; javac -version)
Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
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)
Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
javac 16.0.2

$ (export JAVA_HOME=`/usr/libexec/java_home -v "11"` ; java -version ; javac -version)
    $ (export JAVA_HOME=`java_home-v "11"` ; java -version ; javac -version)
Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
java version "11.0.12" 2021-07-20 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.12+8-LTS-237)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.12+8-LTS-237, mixed mode)
Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
javac 11.0.12

$ (export JAVA_HOME=`/usr/libexec/java_home -v "1.8"` ; java -version ; javac -version)
    $ (export JAVA_HOME=`java_home-v "8"` ; java -version ; javac -version)
Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
java version "1.8.0_301"
Java(TM) SE Runtime Environment (build 1.8.0_301-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.301-b09, mixed mode)
Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
javac 1.8.0_301

$ (export JAVA_HOME=`/usr/libexec/java_home -v "15"` ; java -version ; javac -version)
Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
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)
Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
javac 15.0.2

$ (export JAVA_HOME=`/usr/libexec/java_home -v "14"` ; java -version ; javac -version)
Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
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)
Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
javac 14.0.2

$ (export JAVA_HOME=`/usr/libexec/java_home -v "13"` ; java -version ; javac -version)
Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
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)
Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
javac 13.0.2

$ (export JAVA_HOME=`/usr/libexec/java_home -v "12"` ; java -version ; javac -version)
Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
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)
Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
javac 12.0.2

$ (export JAVA_HOME=`/usr/libexec/java_home -v "10"` ; java -version ; javac -version)
Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
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)
Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
javac 10.0.2

$ (export JAVA_HOME=`/usr/libexec/java_home -v "9"` ; java -version ; javac -version)
Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
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)
Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
javac 9.0.4

------------------------------------------------------------
【Javaプログラムのビルドを行うantのバージョンを調べるコマンド】
$ ant -version
Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
Apache Ant(TM) version 1.10.11 compiled on July 10 2021

おそらくインストールされていないと思われますので、
以下の「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処理系のバージョンを調べるコマンド】
$ python3 --version
Python 3.8.2

$ python --version
Python 2.7.16

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 1.2.21-5-gdb939bbc

$ python --version
Python 3.9.1

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

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

$ pyenv install --list | grep -E '^\ *3.8.[0-9]*$'
  3.8.0
  3.8.1
  3.8.2
  3.8.3
  3.8.4
  3.8.5
  3.8.6

$ 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.37.2

$ node --version
v14.15.3

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

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.23.0   (Latest LTS: Dubnium)
       v12.20.0   (Latest LTS: Erbium)
->     v14.15.3   (Latest LTS: Fermium)

------------------------------------------------------------
【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.1.2-36-g60c9339

$ ruby --version
ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-darwin20]

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

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

$ rbenv install --list-all | grep -E '^\ *2.6.[0-9]*$'
2.6.0
2.6.1
2.6.2
2.6.3
2.6.4
2.6.5
2.6.6

$ rbenv install --list-all | grep -E '^\ *2.5.[0-9]*$'
2.5.0
2.5.1
2.5.2
2.5.3
2.5.4
2.5.5
2.5.6
2.5.7
2.5.8

$ rbenv install --list-all | grep -E '^\ *2.4.[0-9]*$'
2.4.0
2.4.1
2.4.2
2.4.3
2.4.4
2.4.5
2.4.6
2.4.7
2.4.8
2.4.9
2.4.10

------------------------------------------------------------
【集中型のソフトウェア構成管理(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.30.1 (Apple Git-130)

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

$ 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: 2021/09/21 (Created: 2008/04/01) KSU AokiHanko