Vim 版本更改无需打开新终端,无需重新启动计算机。简单来说,第二天我的电脑就采用了 repo 版本,之前已经被 apt 删除了。
我从源代码编译了 vim,因为我需要一些选项,而这些选项在 repo 版本中没有编译。我之前已经做过几次了,但现在在 XUbuntu 18.04LTS 上,系统忘记了编译的 vim,并且以某种方式拉回了 repo 版本,即我删除的内容,至少我是这么认为的。在不确定我是否正确进行编译和编译后设置后,我遵循这个链接。我还使用过 checkinstall,上次我使用 来拉回 vim8.2 dpkg -i deb_name
,其中 deb_name 是 checkinstall 创建的 deb 文件的名称。
我注意到,当编译后的 vim 版本无法识别时,它的安装位置也不可用:
~ $ sudo update-alternatives --install /usr/bin/editor editor /usr/local/bin/vim 1
update-alternatives: error: alternative path /usr/local/bin/vim doesn't exist
~ $ ls -l /usr/local/bin/ | grep vi
lrwxrwxrwx 1 root root 3 Mär 13 2018 ex -> vim
-rwxr-xr-x 1 root root 216 Feb 15 2019 pyvisa-info
-rwxr-xr-x 1 root root 218 Feb 15 2019 pyvisa-shell
lrwxrwxrwx 1 root root 3 Mär 13 2018 rview -> vim
lrwxrwxrwx 1 root root 3 Mär 13 2018 rvim -> vim
lrwxrwxrwx 1 root root 3 Mär 13 2018 view -> vim
lrwxrwxrwx 1 root root 3 Mär 13 2018 vimdiff -> vim
这真的很奇怪,因为我需要执行这个命令来告诉我的系统,vim 是在哪里编译的。
该位置位于本地驱动器上,整体/usr
是一个逻辑卷,因此无法断开连接。
我sudo apt remove vim vim-runtime gvim vim-common
在编译之前已经用 e 删除了 vim 。dpkg -l | grep vim
已确认我没有安装 vim 软件包。 shell 还告诉我,Command 'vim' not found
.尽管过了一段时间——第二天——vim 又从仓库中出现了:
~ $ dpkg -l vim
Desired=Unknown/Install/Remove/Purge/Hold
| Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend
|/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad)
||/ Name Version Architecture Description
+++-====================================-=======================-=======================-========================================================
ii vim 2:8.0.1453-1ubuntu1.4 amd64 Vi IMproved - enhanced vi editor
安装 checkinstall 创建的 deb 解决了大约一天的问题:
~/git_repos/vim $ sudo dpkg -i vim_20201104-1_amd64.deb
[sudo] password for tibenszky:
dpkg: warning: downgrading vim from 2:8.0.1453-1ubuntu1.4 to 20201104-1
(Reading database ... 487461 files and directories currently installed.)
Preparing to unpack vim_20201104-1_amd64.deb ...
Unpacking vim (20201104-1) over (2:8.0.1453-1ubuntu1.4) ...
Setting up vim (20201104-1) ...
Processing triggers for man-db (2.8.3-2ubuntu0.1) ...
我不知道什么可能导致这个问题,或者我如何调试和解决这个问题。任何帮助表示赞赏。
更新: 好像 apt 的日常升级覆盖了我的 vim 版本。所以问题变成了“我如何告诉 apt 我想使用我的编译版本,而不是 repo 版本?”。我刚刚发出了命令sudo apt-mark hold vim
,希望明天 vim 不会再次更新。我在这里找到了这个命令问题。
答案1
请运行grep -i apt /var/log/syslog
并检查是否有自动作业为您更新系统。如果存在,那么它可以解释为什么您自己的二进制文件在子系统中被替换alternatives
。想必您想阻止这种情况发生
update-alternatives --config editor 0<&-; echo
There are 4 choices for the alternative editor (providing /usr/bin/editor).
Selection Path Priority Status
------------------------------------------------------------
* 0 /bin/nano 40 auto mode
1 /bin/ed -100 manual mode
2 /bin/nano 40 manual mode
3 /usr/bin/vim.nox 40 manual mode
4 /usr/bin/vim.tiny 15 manual mode
Press <enter> to keep the current choice[*], or type selection number:
如果您还没有这样做,请将您自己的二进制文件安装到配置集中
update-alternatives --install /usr/bin/editor editor /usr/local/bin/vim 1
但是,如果您重新运行--config
命令(上面),您会发现您尚未切换到您自己的二进制文件。执行此操作,替代子系统将看到一个manual
选择,并且应该停止更改您下面的设置。我认为这可能是您错过的步骤
update-alternatives --set editor /usr/local/bin/vim