このエントリーをはてなブックマークに追加


update-alternativesの対象一覧を確認する

update-alternativesコマンドでデフォルトとして使用するものを決定したり、変更したりすることができますね。
しかし、--configなどで渡す対象となるキーワードが分からない場合などは、以下の操作により確認することができます。


alternatives設定のありか

alternatives設定は、以下のディレクトリにあります。

  • Debian/Ubuntu
    /var/lib/dpkg/alternatives
  • CentOS
    /var/lib/alternatives
  • openSUSE
    /var/lib/rpm/alternatives

上記のディレクトリ内にあるファイルはテキストなので、エディタを使えば設定を見ることができます。

Debian8の出力例

sakura@debian:~$ lsb_release -d
Description:	Debian GNU/Linux 8.6 (jessie)
sakura@debian:~$ ls -l /var/lib/dpkg/alternatives/
合計 456
-rw-r--r-- 1 root root  200 11月 25 22:39 appletviewer
-rw-r--r-- 1 root root 1024 11月 25 20:59 aptitude
-rw-r--r-- 1 root root  207 11月 25 20:20 awk
-rw-r--r-- 1 root root   83 11月 25 20:20 builtins.7.gz
-rw-r--r-- 1 root root   36 11月 25 21:21 c++
-rw-r--r-- 1 root root  111 11月 25 21:21 c89
-rw-r--r-- 1 root root  111 11月 25 21:21 c99
-rw-r--r-- 1 root root   35 11月 25 21:21 cc
-rw-r--r-- 1 root root   32 11月 25 21:00 cpp
<snip>
-rw-r--r-- 1 root root  160 11月 25 22:39 idlj
-rw-r--r-- 1 root root  129 11月 25 21:00 infobrowser
-rw-r--r-- 1 root root  155 11月 25 22:39 jar
-rw-r--r-- 1 root root  185 11月 25 22:39 jarsigner
-rw-r--r-- 1 root root  168 11月 25 21:02 java
-rw-r--r-- 1 root root  165 11月 25 22:39 javac
-rw-r--r-- 1 root root  175 11月 25 22:39 javadoc
-rw-r--r-- 1 root root  165 11月 25 22:39 javah
-rw-r--r-- 1 root root  165 11月 25 22:39 javap
-rw-r--r-- 1 root root  160 11月 25 22:39 jcmd
<snip>
-rw-r--r-- 1 root root  127 11月 25 21:00 www-browser
-rw-r--r-- 1 root root  171 11月 25 21:02 x-cursor-theme
-rw-r--r-- 1 root root  163 11月 25 21:01 x-session-manager
-rw-r--r-- 1 root root  389 11月 25 21:01 x-terminal-emulator
-rw-r--r-- 1 root root  146 11月 25 21:02 x-window-manager
-rw-r--r-- 1 root root  231 12月 14 09:50 x-www-browser
-rw-r--r-- 1 root root  155 11月 25 22:39 xjc

alternativesの対象

alternativesの対象を確認したい場合は、以下のディレクトリをlsすればよいでしょう。

/etc/alternatives/

Debian8の出力例

sakura@debian:~$ lsb_release -d
Description:	Debian GNU/Linux 8.6 (jessie)
sakura@debian:~$ ls -l /etc/alternatives/
合計 28
lrwxrwxrwx 1 root root  18 11月 25 21:00 Mail -> /usr/bin/bsd-mailx
lrwxrwxrwx 1 root root  34 11月 25 21:00 Mail.1.gz -> /usr/share/man/man1/bsd-mailx.1.gz
-rw-r--r-- 1 root root 100  5月  3  2016 README
lrwxrwxrwx 1 root root  49 11月 25 22:39 appletviewer -> /usr/lib/jvm/java-7-openjdk-i386/bin/appletviewer
lrwxrwxrwx 1 root root  59 11月 25 22:39 appletviewer.1.gz -> /usr/lib/jvm/java-7-openjdk-i386/man/man1/appletviewer.1.gz
lrwxrwxrwx 1 root root  24 11月 25 20:59 aptitude -> /usr/bin/aptitude-curses
lrwxrwxrwx 1 root root  40 11月 25 20:59 aptitude.8.gz -> /usr/share/man/man8/aptitude-curses.8.gz
lrwxrwxrwx 1 root root  43 11月 25 20:59 aptitude.cs.8.gz -> /usr/share/man/cs/man8/aptitude-curses.8.gz
lrwxrwxrwx 1 root root  43 11月 25 20:59 aptitude.de.8.gz -> /usr/share/man/de/man8/aptitude-curses.8.gz
lrwxrwxrwx 1 root root  43 11月 25 20:59 aptitude.es.8.gz -> /usr/share/man/es/man8/aptitude-curses.8.gz
lrwxrwxrwx 1 root root  43 11月 25 20:59 aptitude.fi.8.gz -> /usr/share/man/fi/man8/aptitude-curses.8.gz
lrwxrwxrwx 1 root root  43 11月 25 20:59 aptitude.fr.8.gz -> /usr/share/man/fr/man8/aptitude-curses.8.gz
lrwxrwxrwx 1 root root  43 11月 25 20:59 aptitude.gl.8.gz -> /usr/share/man/gl/man8/aptitude-curses.8.gz
lrwxrwxrwx 1 root root  43 11月 25 20:59 aptitude.it.8.gz -> /usr/share/man/it/man8/aptitude-curses.8.gz
lrwxrwxrwx 1 root root  43 11月 25 20:59 aptitude.ja.8.gz -> /usr/share/man/ja/man8/aptitude-curses.8.gz
lrwxrwxrwx 1 root root  43 11月 25 20:59 aptitude.pl.8.gz -> /usr/share/man/pl/man8/aptitude-curses.8.gz
lrwxrwxrwx 1 root root  13 11月 25 20:19 awk -> /usr/bin/mawk
lrwxrwxrwx 1 root root  29 11月 25 20:19 awk.1.gz -> /usr/share/man/man1/mawk.1.gz
lrwxrwxrwx 1 root root  38 11月 25 20:20 builtins.7.gz -> /usr/share/man/man7/bash-builtins.7.gz
lrwxrwxrwx 1 root root  12 11月 25 21:21 c++ -> /usr/bin/g++
lrwxrwxrwx 1 root root  16 11月 25 21:21 c89 -> /usr/bin/c89-gcc
lrwxrwxrwx 1 root root  32 11月 25 21:21 c89.1.gz -> /usr/share/man/man1/c89-gcc.1.gz
lrwxrwxrwx 1 root root  16 11月 25 21:21 c99 -> /usr/bin/c99-gcc
lrwxrwxrwx 1 root root  32 11月 25 21:21 c99.1.gz -> /usr/share/man/man1/c99-gcc.1.gz
lrwxrwxrwx 1 root root  12 11月 25 21:21 cc -> /usr/bin/gcc
lrwxrwxrwx 1 root root  12 11月 25 21:00 cpp -> /usr/bin/cpp
lrwxrwxrwx 1 root root  60 11月 25 20:58 desktop-background -> /usr/share/images/desktop-base/lines-wallpaper_1920x1080.svg
lrwxrwxrwx 1 root root  40 11月 25 20:58 desktop-background.xml -> /usr/share/images/desktop-base/lines.xml
lrwxrwxrwx 1 root root  45 11月 25 20:58 desktop-grub -> /usr/share/images/desktop-base/lines-grub.png
lrwxrwxrwx 1 root root  50 11月 25 20:58 desktop-splash -> /usr/share/images/desktop-base/spacefun-splash.svg
lrwxrwxrwx 1 root root   9 11月 25 20:20 editor -> /bin/nano
lrwxrwxrwx 1 root root  29 11月 25 20:20 editor.1.gz -> /usr/share/man/man1/nano.1.gz
lrwxrwxrwx 1 root root  16 11月 25 22:09 ex -> /usr/bin/vim.nox
<snip>

出力を見るとシンボリックリンクで切り替えているのが確認できますね。

実際に ls /etc/alternatives/ で出力されたものをピックアップして update-alternatives --config してみます。

  • x-www-browser (デフォルトブラウザの設定)
    sakura@debian:~$ sudo update-alternatives --config x-www-browser
    [sudo] password for sakura: 
    alternative x-www-browser (/usr/bin/x-www-browser を提供) には 3 個の選択肢があります。
    
      選択肢    パス                   優先度  状態
    ------------------------------------------------------------
      0            /usr/bin/vivaldi-stable   200       自動モード
      1            /usr/bin/firefox-esr      70        手動モード
    * 2            /usr/bin/midori           39        手動モード
      3            /usr/bin/vivaldi-stable   200       手動モード
  • cppの設定
    sakura@debian:~$ sudo update-alternatives --config cpp
    リンクグループ cpp に 1 つの alternative のみがあります (/lib/cpp が提供): /usr/bin/cpp
    設定は行いません。

alternativesの仕組み

例えばjavaコマンドとかはどうなっているか確認してみます。

~$ which java
/usr/bin/java
~$ ls -l `which java`
lrwxrwxrwx 1 root root 22 10月 26 00:50 /usr/bin/java -> /etc/alternatives/java
~$ ls -l /etc/alternatives/java
lrwxrwxrwx 1 root root 41 10月 25 17:05 /etc/alternatives/java -> /usr/lib64/jvm/jre-1.7.0-openjdk/bin/java

上記の出力をみればわかる通り、
/usr/bin/javaは/etc/alternatives/javaで、/etc/alternatives/javaは/usr/lib64/jvm/jre-1.7.0-openjdk/bin/java(実体)であることがわかります。
update-alternativesコマンドでシンボリックリンクを切り替えているのです。

以上、update-alternativesコマンドについての資料でした。



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2016-12-14 (水) 13:06:27