ubuntu update-alternatives学习(软连接管理)

update-alternatives    ——管理软连接/字符链接(symbolic links)

命令格式

update-alternatives [options] command

详细描述

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

很多时候我们会将拥有相同或相似功能的不同应用程序安装在同一个操作系统上,例如同一个操作系统上的不同文本编辑器。这给了这个系统的用户在编辑文本时有了更多的选择,如果用户愿意他们可以自由选择任意一个来使用。但是假如用户没有指定他想用哪一个编辑器,那么会怎样呢?对于程序来说它很尴尬,因为它没有人一样的意愿去做出一个所谓“好”的选择。

不过Debian的alternatives系统的出现解决了这个问题。文件系统中的一个共用名(generic name)被那些拥有可交换功能的文件所共享,而备选方案系统和系统管理员共同决定具体是哪一个文件被这个共用名所指定(就是说备选方案系统并不能彻底地帮助用户来管理软连接,毕竟以人为本嘛)。举个例子,如果文本编辑器ed(1)和nvi(1)被安装在一个系统里,并且假定备选系统方案让共用名(/usr/bin/editor)默认指向/usr/bin/nvi,那么系统管理员就可以废除这个指定并且让共用名指向/usr/bin/ed,之后除非有特别明确的必要,否则备选方案系统不会改变这个设定。

其实,共用名并不是直接指向已选定程序(命令)的软连接,而是指向备选方案目录(alternatives directory)中的一个名字。这个名字也是一个软连接,它才是直接指向已选定程序(命令)。这种机制的目的是将管理员所做的更改限定在/etc目录下的相应配置文件中:FHS可以很好地给出这样做的好处。

当任意一个提供特定功能的文件(程序/包)被安装、删除或者更改,update-alternatives都会被调用以更新备选方案中相应文件的信息。update-alternatives经常被Debian包中psstinst(配置)或prerm(安装)脚本调用。

那些为了更好地发挥作用而被同步的多个备选方案被称作组;例如,当多个版本的vi编辑器都被安装时,被/usr/share/man/man1/vi.1指定的man page就应该跟当前被/usr/bin/vi指定的vi版本相对应(不同版本的vi都有各自的man,我们要做的就是要man的时候显示的man page与我们正在使用的vi编辑器对应)。

每一个链接组(link group)都有两种不同的模式:自动模式和手动模式,任一给定时刻一个组都是而且只能是其中的一种模式。如果一个组处于自动模式,当包被安装或删除时,备选方案系统会自己决定是否和如何来更新相应链接(links)。如果处于手动模式,备选方案系统会保留原先管理员所做的选择并且避免改变链接(除非发生broken)。

当第一次被安装到系统时链接组被分配为自动模式;如果之后系统管理员对模式的设置做出更改,这个组会被自动转换为手动模式。

备选方案都有自己的级别(priority);当一个链接组处于自动模式时,它的成员会指向级别高的备选方案。

当使用--config选项时,update-alternatives 会列出所有链接组的主链接名,当前被选择的组会以*号标出。可以在提示下对链接指向做出改变,不过这会将模式变为手动。如果想回复自动模式,你可以使用--auto选项,或者--config重新选择标为自动的组。

如果你不想用--config提供的交互模式,你也可以使用--set选项(下面有更详细介绍)。

 提供相同文件的不同包需要进行同步,换句话说,update-alternatives的使用是对所用牵连的包起作用的。

术语

因为update-alternatives的机制很复杂,所以下面的一些术语可以帮助来理解。

generic name(or alternative link)

这是一个名称,形如/usr/bin/editor,它通过alternatives system指向一系列具有相似功能的包。

alternative name

这是指/etc/alternatives目录下的所有软连接的名称。

alternative(or alternative path)

可以被软连接指定的存于文件系统里的文件(程序)。

alternatives directory

默认是/etc/slternatives。

administrative directory

默认是/var/lib/dpkg/alternatives,它包含了update-alternatives的状态信息。

link group

一系列存在内部关系的,能同时改变的软连接。

master link

一个链接组中决定其他相关链接的主链接。

slave link

被主链接控制的软连接。

命令

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。