美文网首页Android开发
update-alternatives详解

update-alternatives详解

作者: 凯恩_Kane | 来源:发表于2019-08-06 15:16 被阅读3次

update-alternatives 可以创建、删除、修复、软连接,还能显示出已存在软连接的信息,而所有的这些就构成了备选方案系统(alternatives system)。

命令格式:

update-alternatives [options] command

[root@xxj ~]$ update-alternatives
alternatives(备用)版本 1.3.61 - 版权 (C) 2001 红帽公司
在 GNU 公共许可条款下,本软件可被自由地重发行。

用法:alternatives --install <链接> <名称> <路径> <优先度>
[--initscript <服务>]
[--slave <链接> <名称> <路径>]*
alternatives --remove <名称> <路径>
alternatives --auto <名称>
alternatives --config <名称>
alternatives --display <名称>
alternatives --set <名称> <路径>
alternatives --list

公用选项:--verbose --test --help --usage --version
--altdir <目录> --admindir <目录>
install选项
install选项的功能就是增加一组新的系统命令链接符了

使用语法:
update-alternatives --install link name path priority [--slave link name path]...

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

name为命令链接符名称,如java;

path为你所要使用新命令、新软件的所在目录;

priority为优先级,当命令链接已存在时,需高于当前值,因为当alternative为自动模式时,系统默认启用priority高的链接;

--slave为从alternative。

alternative有两种模式:auto和manual,默认都为auto模式,因为大多数情况下update-alternatives命令都被postinst (configure) or prerm (install)调用的,如果将其更改成手动的话安装脚本将不会更新它了。

例如:

update-alternatives --install /usr/bin/java java /usr/local/lib/java/jdk1.7.0_67 17067

/usr/bin/java java link所在的路径

java 创建link的名称

/usr/local/lib/java/jdk1.7.0_67 java链接指向的路径

17067 根据版本号设置的优先级(更改的优先级需要大于当前的)

注意:

     这里,你不需要再/etc/alternatives/下面建立任何你想设置的链接名称,因为这完全可以通过update-alternative  --install命令来实现;而且你也不需要在/usr/bin/目录下建立相关链接名称,理由同上。你只需要确定这几个功能类似的软件的源目的地,然后执行如下命令:(以gcc为例)

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-3.3 100(这个优先级100必须键入)

sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.1 90

sudo update-alternatives --install /usr/bin/gcc gcc /ur/bing/gcc-4.2 80

remove选项
remove选项的功能是删除一个alternative及相关从alternative

使用语法:

update-alternatives --remove name path

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

例如:update-alternatives --remove java /usr/local/lib/java/jdk1.7.0_67

auto选项
auto选项用于修改命令的模式,

语法如下:

update-alternatives --auto name #只有两个auto和manual模式,默认都为auto模式

config选项
config选项功能为在现有的命令链接选择一个作为系统默认的

使用语法为:

  update-alternatives --config name

[root@localhost yxkong]# update-alternatives --config java
共有 2 个提供“java”的程序。
选项 命令


*+ 1 /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.51-2.4.5.5.el7.x86_64/jre/bin/java
2 /usr/local/lib/java/jdk1.7.0_67/bin/java
按 Enter 保留当前选项[+],或者键入选项编号:2
这里才是配置版本的重点,当系统中有多个版本时,可以通过该命令设置默认版本,类似于默认程序

星号表示当前系统使用的,加号表示优先级最高的。输入数值可修改默认配置,直接按回车保持原来状态。

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

使用语法:

 update-alternatives --display name

[yxkong@localhost ~]$ update-alternatives --display java
java - 状态为手工。
链接当前指向 /usr/local/lib/java/jdk1.7.0_67/bin/java
/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.51-2.4.5.5.el7.x86_64/jre/bin/java - 优先度 170051
....
当前“最佳”版本是 /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.51-2.4.5.5.el7.x86_64/jre/bin/java。
[root@SC4303 ~]# alternatives --display mta
mta - status is auto.
link currently points to /usr/sbin/sendmail.postfix
/usr/sbin/sendmail.postfix - priority 30
slave mta-mailq: /usr/bin/mailq.postfix
slave mta-newaliases: /usr/bin/newaliases.postfix
slave mta-pam: /etc/pam.d/smtp.postfix
slave mta-rmail: /usr/bin/rmail.postfix
slave mta-sendmail: /usr/lib/sendmail.postfix
slave mta-mailqman: /usr/share/man/man1/mailq.postfix.1.gz
slave mta-newaliasesman: /usr/share/man/man1/newaliases.postfix.1.gz
slave mta-sendmailman: /usr/share/man/man1/sendmail.postfix.1.gz
slave mta-aliasesman: /usr/share/man/man5/aliases.postfix.5.gz
Current `best‘ version is /usr/sbin/sendmail.postfix.
[root@xj alternatives]# update-alternatives --display mta
mta - 状态是自动。
链接目前指向 /usr/sbin/sendmail.postfix
/usr/sbin/sendmail.postfix - 优先度 30
从 mta-mailq:/usr/bin/mailq.postfix
从 mta-newaliases:/usr/bin/newaliases.postfix
从 mta-pam:/etc/pam.d/smtp.postfix
从 mta-rmail:/usr/bin/rmail.postfix
从 mta-sendmail:/usr/lib/sendmail.postfix
从 mta-mailqman:/usr/share/man/man1/mailq.postfix.1.gz
从 mta-newaliasesman:/usr/share/man/man1/newaliases.postfix.1.gz
从 mta-sendmailman:/usr/share/man/man1/sendmail.postfix.1.gz
从 mta-aliasesman:/usr/share/man/man5/aliases.postfix.5.gz
当前“最佳”版本是 /usr/sbin/sendmail.postfix。

欢迎扫码加入QQ群一起学习讨论。【QQ群:930039263】

相关文章

网友评论

    本文标题:update-alternatives详解

    本文链接:https://www.haomeiwen.com/subject/qixwdctx.html