/etc/alternatives
読み:スラ-エトセ-スラ-オルタネイティヴス
外語:/etc/alternatives
Linuxで、alternativeディレクトリとして使用されるディレクトリ。
概要
Linuxでは、バージョン間、あるいは互換品の使用などにおいて、仕様差や互換性問題が生じるようなものを中心に、alternativeディレクトリが使用されている。
この手法では、コマンドを直接実行させるのではなく、一旦alternativeディレクトリへのシンボリックリンクを介し、ここから実際の実行ファイルへのシンボリックリンクを介して実行させる。
こうすることで、alternativeディレクトリへのシンボリックリンクを編集することで簡単に実行ファイルを切り替えることができる。
特徴
vimの例
例えば、vi互換のエディター「Vim」は、概ね次のようになっている。
$ file /usr/bin/vi
/usr/bin/vi: symbolic link to `/etc/alternatives/vi'
/etc/alternatives/vi もまたシンボリックリンクである。
$ file /etc/alternatives/vi
/etc/alternatives/vi: symbolic link to `/usr/bin/vim.basic'
つまり、次のようにして動作する。
/usr/bin/vi → /etc/alternatives/vim → /usr/bin/vim.basic
viだけでなく、exやviewなどのコマンドも同様の経路でvim.basicまたはvim.tinyが実行されるようになっている。
Javaの例
Javaは色々なバージョンがあり、頻繁に互換性問題を起こすため、alternativeディレクトリを介して結ばれているようである。
- /usr/bin/java → /etc/alternatives/java → /usr/lib/jvm/jdk1.6.0_45/bin/java
- /usr/bin/javac → /etc/alternatives/javac → /usr/lib/jvm/jdk1.6.0_45/bin/javac
GNUソフトウェアの場合
この他、gから始まるGNUソフトウェアも、gの無い従来名からalternativeディレクトリを介して結ばれる傾向にある。
例えば次のようになる。
- /usr/bin/awk → /etc/alternatives/awk → /usr/bin/gawk
- /usr/bin/c++ → /etc/alternatives/c++ → /usr/bin/g++
- /usr/bin/cc → /etc/alternatives/cc → /usr/bin/gcc
ccやc++のリンク先をclangやclang++に変えれば、コンパイラーをclang/LLVMに変更できることになる。
再検索