先来了解ln和update-alternatvies命令。
ln链接
首先我们来说说linux的链接,它分为两种:符号链接(symbolic link)和硬链接(hard link)。
我们知道文件都有文件名与数据,这在 Linux 上被分成两个部分:用户数据 (user data) 与元数据 (metadata)。用户数据,即文件数据块 (data block),数据块是记录文件真实内容的地方;而元数据则是文件的附加属性,如文件大小、创建时间、所有者等信息。在 Linux 中,元数据中的 inode 号(inode 是文件元数据的一部分但其并不包含文件名,inode 号即索引节点号)才是文件的唯一标识而非文件名。文件名仅是为了方便人们的记忆和使用,系统或程序通过 inode 号寻找正确的文件数据块。下图展示了程序通过文件名获取文件内容的过程。
为解决文件的共享使用,Linux 系统引入了两种链接:硬链接 (hard link) 与软链接(又称符号链接,即 soft link 或 symbolic link)。链接为 Linux 系统解决了文件的共享使用,还带来了隐藏文件路径、增加权限安全及节省存储等好处。若一个 inode 号对应多个文件名,则称这些文件为硬链接。换言之,硬链接就是同一个文件使用了多个别名(下图hard link 就是 file 的一个别名,他们有共同的 inode)。而软链接与硬链接不同,若文件用户数据块中存放的内容是另一文件的路径名的指向,则该文件就是软连接。软链接就是一个普通文件,只是数据块内容有点特殊。软链接有着自己的 inode 号以及用户数据块。
Alternatives机制
Alternatives也称“替代品”机制,如下图
在/etc/alternatives下存在一些符号链接(替代品),一个替代品链接可以链接一组文件,而这一组文件具有优先权,根据优先权可以选择替代品链接真实链接的文件;
别的符号链接可以连接到替代品链接;
它的应用场景是这样的:比如现在流行的编辑器有Vim、nano、Emacs等,而debian里还自带了vim.tiny。如果系统了安装了这些编辑器,如何能使用一个友好的(符号)链接如editor映射到你最喜欢的编辑器呢?
使用Alternatives机制是这样的,在/etc/alternatives下建立一个editor符号链接指向Vim、nano、Emacs,当前的选择是vim;然后再在/usr/bin再建立一个符号链接editor链接到替代品链接editor,然后我们就可以使用editor来打开编辑器了,当想切换成Emacs的时候,使用命令update-alternatives --config editor可以选择别的编辑器。当然如果你不使用Alternatives机制也可以,只是想更换的时候手动做符号链接,这是我的理解。
安装Java
网上搜到的如何安装Java一般都是使用Alternatvies机制,其实手动直接创建符号链接我觉得也很方便,但可能考虑到多个Java版本吧。但不管怎么样,只要知道了上述理论就不能理解如何安装了。
首先到官网下载你需要的Java版本,我下载的是Java7 Server JRE,并解压至“/usr/lib/jvm//jdk1.7.0_60”中,然后使用下面的命令安装Alternatives
代码如下 | 复制代码 |
update-alternatives --install /usr/bin/java java /usr/lib/jvm/jdk1.7.0_60/bin/java 100 |
如果Alternatives的java不只指向一个java,需要使用下面的命令进行配置
代码如下 | 复制代码 |
update-alternatives --config java |
更多的update-alternateives命令选项可以使用使用--help查看。