设为首页 收藏本站
查看: 1087|回复: 0

[经验分享] Debian alternatives system: update

[复制链接]

尚未签到

发表于 2018-5-14 12:23:29 | 显示全部楼层 |阅读模式
  一言以蔽之,工具 update-alternatives 的作用是管理系统下相似功能程序的符号链接,采取的方式是对具有相似功能的程序,不是直接调用该程序,而是用一个统一符号链接来调用,至于该符号链接
  指向相似功能程序中的哪一个,则由工具update-alternatives来配置和管理。
  说的很抽象,我们来举个例子,看过后自然就明白了。Ubuntu系统内置了一个阉割版的vim编辑器,
  这时我们又安装了一个功能完全的vim编辑器,这时系统上就有了2个功能相似的vim编辑器,但注意,它
  们不是同一个程序。那这和我们的工具update-alternatives又有什么关系呢?原来,Ubuntu系统对系统
  内置vim的调用是通过名为vi的符号链接来完成的,而不是直接调用vim。
DSC0000.png

  从上面的输出可知,vi最终链接到/usr/bin/vim.tiny,也就是vim的Ubuntu阉割版。
  是的,update-alternatives机制是通过2级跳来完成了实际的程序调用。我想,大家一定很好奇这个
  update-alternatives是怎么知道哪些程序具有相似功能呢?又怎么管理它们的呢?让我们通过vi的例子
  来试着回答这些问题。我是不知道怎么回答这两个问题的,所以只有求助于帮助系统man,通过man的帮
  助,发现了有两个update-alternatives的相关目录:
  /etc/alternatives:目录下存放有第二级符号链接,指向实际的程序。还有实际程序关联的文件(如帮
  助文档)的符号链接。
  /var/lib/dpkg/alternatives:目录下存放的大概就是相似程序及其相关联文件(如帮助文档)的管理
  文件。
  对于上面两个目录的说明,是我的推断,我们还需要证明推断的正确性。目录/etc/alternatives的
  作用很明显,可以通过ls -l命令看到如下输出:
DSC0001.png

  上图中用红线框中的文件除了一个是对vim.tiny的链接外,其他是vim相关的帮助文档的符号链接。
  接着,我们来验证我们对/var/lib/dpkg/alternatives作用的推断,并更进一步的了解该目录的作
  用。在安装完整版的vim之前,先来看一下文件/var/lib/dpkg/alternatives/vi这个可能的管理文件:
DSC0002.png

  对上面的文件,我稍微编辑了一下,基于我的理解添加了两个空行,按空行我们把文件分为4部分。第一
  部分的auto从帮助文档可知是update-alternatives的运行模式;第二部分的/usr/bin/vi是第一级接;
  第3部分的每两行为一个整体,而且发现每两行的第一行都和/etc/alternatives目录下的一个vim帮助文
  档符号连接同名,而第二行则对应到实际链接的帮助文档;第4部分的第一行是最终被链接的程序,第二
  行数字从帮助文档可知是一个优先级,当有多个类似程序可选时,该优先级决定了程序显示在
  update-alternatives给出的可选程序列表的位置,优先级越高的程序显示在越前面。好,再看一下我们
  通过 update-alternatives --query vi 命令得到的vi链接的信息:
DSC0003.png

  应该可以断定,至少update-alternatives --query vi命令是在查询/var/lib/dpkg/alternatives/vi文
  件得到信息的。
  接下来我们安装完整版的来观察后update-alternatives相关目录和文件的变化。用命令:
sudo apt-get install vim  来安装vim完整版。安装完成后,先来观察一下/usr/bin/vi的链接指向:
DSC0004.png

  vi的链接已经被更新了,并最终指向了/usr/bin/vim.basic,也就是我们新安装的完整版的vim程序。再来
  看一下/etc/alternatives和/usr/bin目录:
DSC0005.png

  随着完整版的vim安装也生成了新的符号链接文件和新的程序文件。最后来看一下文件
  /var/lib/dpkg/alternatives/vi的变化:

DSC0006.png

  看工具比较的结果,红色部分是安装完整版vim后新增加的内容,作用是增加了一个新的可选择程序,从符
  号链接可以看出,现在默认选择了/usr/bin/vim.basic程序,即vim完整版。从上面也可以看出vim完整版的
  优先级30高于阉割版vim的10。看来我们的推断应该是正确的了。实际上update-alternatives是不知道哪些
  程序功能相似的,如果要做到这点,程序自己要通过update-alternatives提供的配置接口来告诉

  update-alternatives,即更新/var/lib/dpkg/alternatives目录下的文件或在该目录下创建下新的文件。
  你会发现下生成了一个新的文件/var/lib/dpkg/alternatives/vim。
  我们可以来一下运行vi命令到底是不是启动了我们完整的vim程序/usr/bin/vim.basic。在命令行敲入
  vi命令。然后通过ps命令获取vi的pid(进程id),如下:
DSC0007.png

  可以看到vi程序的pid是4971。接着我们可以利用proc文件系统来查看pid=4971对应的可执行程序文件完整
  路径,如下图:
DSC0008.png

  从图中得知,确实是运行的我们新安装的vim完整版。
  最后,如果你想更改vi对应的程序入口,可以用update-alternatives --config/--set命令来更改。至
  于新生成的/var/lib/dpkg/alternatives/vim文件应该是update-alternatives --install命令来完成的。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-459978-1-1.html 上篇帖子: Debian系统sudo命令安装 下篇帖子: Debian在vi编辑器里方向键变ABCD,退格键失效
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表