一、update-alternatives是什么?

            update-alternatives是ubuntu系统中专门维护系统命令链接符的工具,通过它可以很方便的设置系统默认使用哪个命令、哪个软件的版本。


二、update-alternatives的选项--install用法

        比如,我们在系统中同时安装了open jdk和sun jdk两个版本,而我们又希望系统默认使用的是sun jdk,那怎么办呢?

        通过update-alternatives就可以很方便的实现了。命令如下: 

        sudo   update-alternatives    --install     /usr/bin/java    java    /opt/java/jdk1.6.0_27/bin/java     1062    设置系统使用jdk1.6中的java命令。

        其中1062 为alternative更改后的优先级,新更改的优先级需要大于open jdk当前的优先级。

        通过update-alternatives --display java 可以查看系统使用的是哪个路径下的java命令的详细信息如下:

                 java - auto mode

                     link currently points to /opt/java/jdk1.6.0_27/bin/java

               /opt/java/jdk1.6.0_27/bin/java - priority 1062

               /usr/lib/jvm/java-6-openjdk/jre/bin/java - priority 1061

                    slave java.1.gz: /usr/lib/jvm/java-6-openjdk/jre/man/man1/java.1.gz

               Current 'best' version is '/opt/java/jdk1.6.0_27/bin/java'.


三、update-alternatives其他几个主要选项的用法

        现在开始分别介绍一下 update-alternatives 命令中的几个主要选项,diplay、install、remove、config。

 

       1、display选项:查看一个命令链接组的所有信息,包括链接命令的模式(自动还是手动)、链接命令priority(优先级)值、所有可 用的链接命令等等。

            使用语法如下:

                 update-alternatives --display name 

                 其中name为命令链接命令名称,如editor。

            例如:update-alternatives --display editor   查看系统默认使用的是哪个路径下的编辑器:

                          editor - auto mode
                              link currently points to /bin/nano
                          /bin/ed - priority -100
                             slave editor.1.gz: /usr/share/man/man1/ed.1.gz
                         /bin/nano - priority 40
                            slave editor.1.gz: /usr/share/man/man1/nano.1.gz
                         /usr/bin/vim.tiny - priority 10
                            slave editor.1.gz: /usr/share/man/man1/vim.1.gz
                            slave editor.fr.1.gz: /usr/share/man/fr/man1/vim.1.gz
                            slave editor.it.1.gz: /usr/share/man/it/man1/vim.1.gz
                            slave editor.pl.1.gz: /usr/share/man/pl/man1/vim.1.gz
                            slave editor.ru.1.gz: /usr/share/man/ru/man1/vim.1.gz
                        Current 'best' version is '/bin/nano'.

 

     2、remove选项:删除一个alternative及相关从alternative。

            使用语法如下:

                 update-alternatives --remove name path 

                 其中name与path与install中的一致。

                 如果所删除的链接组中还有其他链接的话,系统将会自动从其他中选择一个priority高的链接作为默认为链接。

            例如:sudo update-alternatives --remove editor /bin/nano    删除链接组中的某一个链接。

                     验证是否被删除:update-alternatives --display editor    显示详细信息如下:

                           editor - auto mode

                               link currently points to /usr/bin/vim.tiny
                           /bin/ed - priority -100
                               slave editor.1.gz: /usr/share/man/man1/ed.1.gz
                          /usr/bin/vim.tiny - priority 10
                              slave editor.1.gz: /usr/share/man/man1/vim.1.gz
                              slave editor.fr.1.gz: /usr/share/man/fr/man1/vim.1.gz
                              slave editor.it.1.gz: /usr/share/man/it/man1/vim.1.gz
                              slave editor.pl.1.gz: /usr/share/man/pl/man1/vim.1.gz
                              slave editor.ru.1.gz: /usr/share/man/ru/man1/vim.1.gz
                          Current 'best' version is '/usr/bin/vim.tiny'.

 

       3、install选项:增加一组新的系统命令链接符。

           使用语法如下:

                update-alternatives --install   link   name   path    priority [--slave link name path]...

                其中link为系统中功能相同软件的公共链接目录,比如/usr/bin/java(需绝对目录)。

                name为命令链接符名称,如editor。

                path为你所要使用新命令、新软件的所在目录,如/bin/nano。

                priority为优先级,当默认命令链接已存在时,指定新的默认链接命令符需高于当前值。

                因为当alternative为自动模式时,系统默认启用priority高的链接; --slave为从alternative。

          例如: sudo update-alternatives  --install /usr/bin/editor editor /bin/nano 40    执行命令后会自动启用priority高的链接。

                    若没有自动启用,则可以执行sudoupdate-alternatives --config editor  从链接组中启用priority高的链接。

                    验证新增的链接符是否成功:update-alternatives --display editor

                          editor - auto mode
                              link currently points to /bin/nano
                          /bin/ed - priority -100
                             slave editor.1.gz: /usr/share/man/man1/ed.1.gz
                         /bin/nano - priority 40
                            slave editor.1.gz: /usr/share/man/man1/nano.1.gz
                         /usr/bin/vim.tiny - priority 10
                            slave editor.1.gz: /usr/share/man/man1/vim.1.gz
                            slave editor.fr.1.gz: /usr/share/man/fr/man1/vim.1.gz
                            slave editor.it.1.gz: /usr/share/man/it/man1/vim.1.gz
                            slave editor.pl.1.gz: /usr/share/man/pl/man1/vim.1.gz
                            slave editor.ru.1.gz: /usr/share/man/ru/man1/vim.1.gz
                        Current 'best' version is '/bin/nano'.

       4、config选项:为在现有的命令链接符选择一个作为系统默认的。

            使用语法如下:

                 update-alternatives --config name

                 其中name与install中的一致。

 例如:执行sudo update-alternatives --config editor,将会列出可选择的链接符,输入编号,即可将某个链接符作为系统默认的:


                            There are 3 choices for the alternative editor (providing /usr/bin/editor).

                               Selection    Path               Priority   Status

                           ------------------------------------------------------------
                               * 0            /bin/nano           40       auto mode
                                 1            /bin/ed            -100       manual mode
                                 2            /bin/nano           40       manual mode
                                 3            /usr/bin/vim.tiny   10     manual mode

                          Press enter to keep the current choice[*], or type selection number: 1

                          update-alternatives: using /bin/ed to provide /usr/bin/editor (editor) in manual mode.    说明执行命令成功。

    注意: alternative有两种模式:auto和manual,默认都为auto模式,因为大多数情况下update-alternatives命令都被postinst (configure)

                      or prerm (install)调用的,如果将其更改成手动的话安装脚本将不会更新它了。

                     若是某个链接组的模式为manual,则想改为自动的模式的话,执行命令: update-alternatives --auto name即可,如  update-alternatives --auto  editor

        几种主要的选项就将这几个了,若想看其他选项的用法,可使用update-alternatives --help  或 man update-alternatives .