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

Alf*_*ulu 5 ubuntu apt package-management alternatives

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

在我得知我选择使用以下命令安装完整版 vim 后:

sudo apt-get install vim
Run Code Online (Sandbox Code Playgroud)

在我这样做之后,我开始对一些事情感到好奇:

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

我正在使用 Ubuntu Server 12.04 LTS。

der*_*ert 7

在 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
Run Code Online (Sandbox Code Playgroud)

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

您可以直接作为运行它们vim.tinyvim.fullvim.gnome,等。

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

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