APT如何处理同名的不同程序?

APT如何处理同名的不同程序?

我最终决定学习 vi,当我这样做时,我意识到 vi 的行为并不像我预期的那样。我从另一篇文章中了解到,这是因为在 Ubuntu 上默认安装了 vim-tiny。

当我了解到后,我选择使用以下命令安装完整版的vim:

sudo apt-get install vim

这样做之后,我对很多事情感到好奇:

  1. 我注意到 vi 和 vim 命令现在与完整版本的 vim 相关联,而不是与 vim-tiny 相关联。这是怎么发生的? (即名称查找是如何工作的?)
  2. 如何显式执行 vim-tiny 或满的维姆?
  3. Linux/Ubuntu/apt 如何管理名称冲突的库和可执行文件?不同版本又如何呢?

我正在使用 Ubuntu Server 12.04 LTS。

答案1

在 Debian 衍生品上,它是通过替代系统处理的:

$ ls -l /usr/bin/vim
lrwxrwxrwx 1 root root 21 Jun 11  2010 /usr/bin/vim -> /etc/alternatives/vim
$ ls -l /etc/alternatives/vim
lrwxrwxrwx 1 root root 18 Jun 11  2010 /etc/alternatives/vim -> /usr/bin/vim.gnome

软件包安装后脚本(当 dpkg 说“配置软件包 X”时运行的脚本)告诉替代系统有关 vim 的新替代方案。新的替代方案具有更高的优先级,因此被选中。

您可以直接运行它们vim.tiny,如vim.fullvim.gnome、 等。

您可以使用该命令覆盖默认值update-alternatives

(实际上,我认为 vim.tiny 在某种程度上是一种特殊情况,因为除非空间非常宝贵,否则它并不真正打算使用。至少,它在这里没有显示为替代方案。)

相关内容