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

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

--- 青木淳@2018/10/16

------------------------------------------------------------
【Mac OS X(macOS)のバージョンを調べるコマンド】
$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.14
BuildVersion:   18A391

------------------------------------------------------------
【Cコンパイラのバージョンを調べるコマンド】
$ cc --version
Apple LLVM version 10.0.0 (clang-1000.11.45.2)
Target: x86_64-apple-darwin17.7.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=/usr/include/c++/4.2.1
Apple LLVM version 10.0.0 (clang-1000.11.45.2)
Target: x86_64-apple-darwin17.7.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

$ clang --version
Apple LLVM version 10.0.0 (clang-1000.11.45.2)
Target: x86_64-apple-darwin17.7.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

------------------------------------------------------------
【Xcode(コマンドラインツール)のバージョンを調べるコマンド】
$ xcodebuild -version
Xcode 10.0
Build version 10A255

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

$ pkgutil --pkg-info=com.apple.pkg.CLTools_Executables | grep version
version: 10.0.0.0.1.1535735448

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

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

------------------------------------------------------------
【Java仮想マシンのバージョンを調べるコマンド】
$ (export JAVA_HOME=`/usr/libexec/java_home -v "1.8"`; java -version)
Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
java version "1.8.0_192"
Java(TM) SE Runtime Environment (build 1.8.0_192-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.192-b12, mixed mode)

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

なお、最新のJava仮想マシンは「java version "11.0.1" 2018-10-16 LTS」になります。
「8」と「9」と「10」と「11」の間の相異を、サードパーティ製Javaライブラリなどが払拭できていないという現状です。
それゆえ、当分の間は「8」と「9」と「10」と「11」の併用でゆきます。

$ (export JAVA_HOME=`/usr/libexec/java_home -v "9"`; java -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)

$ (export JAVA_HOME=`/usr/libexec/java_home -v "10"`; java -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)

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

------------------------------------------------------------
【Javaコンパイラのバージョンを調べるコマンド】
$ (export JAVA_HOME=`/usr/libexec/java_home -v "1.8"`; javac -version)
Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
javac 1.8.0_192

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

なお、最新のJavaコンパイラは「javac 11.0.1」になります。
「8」と「9」と「10」と「11」の間の相異を、サードパーティ製Javaライブラリなどが払拭できていないという現状です。
それゆえ、当分の間は「8」と「9」と「10」と「11」の併用でゆきます。

$ (export JAVA_HOME=`/usr/libexec/java_home -v "9"`; javac -version)
Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
javac 9.0.4

$ (export JAVA_HOME=`/usr/libexec/java_home -v "10"`; javac -version)
Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
javac 10.0.2

$ (export JAVA_HOME=`/usr/libexec/java_home -v "11"`; javac -version)
Picked up _JAVA_OPTIONS: -Dfile.encoding=UTF-8
javac 11.0.1

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

おそらくインストールされていないと思われますので、
以下の「Apache Ant」のページ(学内からのみ)を参照し、インストールしてください。
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)

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

------------------------------------------------------------
【Python処理系のバージョンを調べるコマンド】
$ python --version
Python 2.7.10

------------------------------------------------------------
【集中型のソフトウェア構成管理(SCM:リポジトリ)であるSubversionのバージョンを調べるコマンド】
$ svn --version
svn, version 1.10.0 (r1827917)
   compiled Aug 14 2018, 02:37:13 on x86_64-apple-darwin17.0.0

Copyright (C) 2018 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 /Users/aoki/.subversion
* GPG-Agent
* Mac OS X Keychain

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

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

$ 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: 2018/10/16 (Created: 2008/04/01) KSU AokiHanko