Debian 下编译安装同时支持 python2 与 python3 的 vim
由于 python 相比 vim 原来的那个脚本实在是强太多,我转到用 python 来写 vim 代码了,并且是坚定的 python3.
而有两个我想用的 vim 插件却是 python2 的,自己改成 python3 版本的话工作量太大,而且升级的时候又得操 心。
以前在 Debian 下编译的 vim 无论怎么都没法做到同时支持 python2 与 python3. 最好的情况是,编译好后 同时有 +python/dyn 与 +python3/dyn 特性,但只要执行了其中一个 python 版本的命令,另一个 python 版本的命令便无法执行。
后来发现是 Debian 自带的那个 python 的问题,具体问题我忘了。
既然系统自带的那个有问题,解决的办法就是自己安装一个没问题的 python 了。但系统的 python 不能 随便换,否则遇到的麻烦接连不断。那就编译一个 vim 专用的 python 吧,不放在 $PATH 当中,也不影响 系统原来的 python 和其它程序。
编译 vim 专用 python, 安装目录当然就放在 vim 的目录之来了。下载 python2 与 python3 的源代码,并 如此
./configure --prefix=/usr/local/share/vim/usr --enable-shared
定义 ./configure 时的选项。这样安装时就自动安装到 vim 所属的目录下面了,并且其共享库也编译好了。
然后就是编译 vim 了。经试验,改如下两个环境变量
PATH=/usr/local/share/vim/usr/bin:$PATH
LD_RUN_PATH=/usr/local/share/vim/usr/lib
export PATH LD_RUN_PATH
之后,再进行 ./configure $PATH 环境变量,决定 vim 找到的 python 的位置。而 $LD_RUN_PATH 环境变量,则是链接 vim 时所需 要的,可以让 vim 找到 python 的 so 文件的位置。有了这个之后便不再需要 $LD_LIBRARY_PATH 变量了。
./configure \
--with-features=huge \
--enable-python3interp \
--enable-pythoninterp
接着 make 完成后测试 ./src/vim 不出问题的话,就可以成功了。
需要注意的是,每次成功编译后,需要执行
make clean && make distclean
否则不能编译成功。
安装好后再看两个 python 所占大小,才区区 202MB ,想一下可以不费劲地用现有的 python2 的插件了,真是很 划得来啊。