最近想装一个vim来用,安装插件遇到很多,我折腾了一个周末一天多时间,很苦逼,遇到的问题 网上帖子都找遍了都没很好的解决问题。
老系统centos6.x系列 python是老版本,导致最新的vim不支持ycm插件,需要先手动安装Python3, 装了无数个版本 (后面ycm插件由于遇到_socket.cpython-38-x86_64-linux-gnu.so: undefined symbol: PyFloat_Type错误,看到网上说的是与ycm无关 与vim 无关的误导 我怀疑python版本问题 装了多个版本还是爆那错, 后面确认 3.7系列 3.8系列 3.9系列 都可以正常使用。最后使用的Python3.9.5版本)
1、下载源码包:
wget https://www.python.org/ftp/python/3.9.5/Python-3.9.5.tgz
tar -zxvf Python-3.9.5.tgz
cd Python-3.9.5
安装所需包 不然会很多模块是装不上报错如 _uuid _ctypes _thinker 。。。
yum install -y gcc patch libffi-devel python-devel zlib-devel bzip2-devel uuid-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel
openssl很老 就要手动去安装openssl 目前最新 openssl-1.1.1k,
wget https://www.openssl.org/source/openssl-1.1.1k.tar.gz
解压后安装:
./configure --prefix=/usr/local/openssl
make
make install
mv /usr/bin/openssl /usr/bin/openssl.bak
mv /usr/include/openssl /usr/include/openssl.bak
ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/openssl/include/openssl /usr/include/openssl
echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
ldconfig -v
报错[openssl: error while loading shared libraries: libssl.so.1.1: cannot open shared object file: No such file or directory]
处理方法:
ln -s /usr/local/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
ln -s /usr/local/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
检查版本:
[root@localhost Python-3.9.5]# openssl version
OpenSSL 1.1.1k 25 Mar 2021
编译安装Python
./configure --prefix=/usr/local/python39 --enable-shared --with-openssl=/usr/local/openssl
make -j4
make install
在make 完成后要去日志看看有啥模块没编译成功,要做相应的处理,不然后面会做很多无用的,注意在每次进行了更改后建议都要make distclean来清理一下 不然会被坑。
编译没毛病就是做指向了(已经安装了老版本的python3 可以 从/usr/bin里面移出 python3 pip3这两个文件 后建立连接)
ln -s /usr/local/python39/bin/python3.9 /usr/bin/python3
ln -s /usr/local/python39/bin/pip3 /usr/bin/pip3
执行下面为vim 插件准备
pip3 install typing
重点复制 libpython3.9.so.1.0 到时编译vim出来的 不支持Python3
cp /usr/local/python39/lib/libpython3.9.so.1.0 /usr/lib/
cp /usr/local/python39/lib/libpython3.9.so.1.0 /usr/lib64/
vim需要的模块环境
yum install ruby ruby-devel lua lua-devel luajit \
luajit-devel ctags git python python-devel \
tcl-devel perl perl-devel perl-ExtUtils-CBuilder \
perl-ExtUtils-Embed libX* ncurses-devel
卸载vim老版本
注意不要用 yum -y remove vim 这个去卸载 到时会惹很多事来。
正确的方式
rpm -qa|grep vim|xargs rpm -ev --allmatches --nodeps
whereis vim|xargs rm -frv
获取最新vim 源码代码:
wget https://hub.fastgit.org/vim/vim/archive/refs/tags/v8.2.3070.tar.gz
编译配置: 需要支持python3
比较新版本的vim python支持 的编译配置有改变,不是网上很多那样的. with-python3-config-dir=....
./configure --prefix=/usr/local/vim --with-features=huge --enable-multibyte --enable-gui=gnome2 --enable-luainterp=yes --enable-mzschemeinterp --enable-perlinterp=yes --enable-python3interp=yes --enable-tclinterp=yes --enable-rubyinterp=yes --enable-cscope --enable-terminal --enable-autoservername --enable-multibyte --enable-xim --enable-fontset --with-modified-by=clive --with-compiledby=clive --with-python3-command=python3
执行完成要检查找到python3的模块没有,不然编译出来不支持python3 去日志里找有没有这些
假如忘记复制libpython3.9.so.1.0 到/usr/lib 下面 会提示没找到不到文件。
checking Python's install prefix... /usr/local/python39
checking Python's execution prefix... /usr/local/python39
checking Python's configuration directory... /usr/local/python39/lib/python3.9/config-3.9-x86_64-linux-gnu
checking Python3's dll name... libpython3.9.so.1.0
编译
make -j4
make install
检查有支持python3模块
root@localhost vim]# ./src/vim --version|grep python
+cmdline_hist +langmap -python +visual
+cmdline_info +libcall +python3 +visualextra
看到python3前面有个+号表示支持python3了。
建议软件连接到 /usr/bin里
ln -s /usr/local/vim/bin/vim /usr/bin/vim
ln -s /usr/local/vim/bin/vim /usr/bin/vi
插件安装参考
https://github.com/ckelsel/vim-init
将项目克隆到你喜欢的目录内,比如 ~/.vim 内:
mkdir ~/.vim
cd ~/.vim
git clone https://github.com/ckelsel/vim-init.git
cp ~/.vim/vim-init/.vimrc ~
安装插件
然后打开Vim,按键盘上的 :号 在命令行运行PlugInstall
安装依赖插件。
但是由于网络原因的是很难装上的,速度很慢,通过我的研究,可以快速装上
进行改进 可以快速安装好插件 ,下载下面的文件解压去/root/.vim/vim-init/autoload
替换plug.vim文件,覆盖plug.vim文件
https://download.csdn.net/download/clive_hua/19869496
用改进后的plug.vim
再执行 按键盘上的 :号 在命令行运行PlugInstall
可以快速安装好依赖插件。
手动安装YouCompleteMe
yum install cmake
cd ~/.vim/bundles
git clone https://gitee.com/zhuixixi/YouCompleteMe.git --depth=1
cd ~/.vim/bundles/YouCompleteMe
python3 install.py --clang-completer
安装插件需要的第三方工具
yum install clang
yum install the_silver_searcher ctags
基本安装完成。
中途遇到的问题很多,插件不进行修改很难装上,使用vim 跳出 undefined symbol: PyFloat_Type 这个问题到处看到的资料,说的与ycm 和python无关,实际上不是这样的 我编译安装多次python的多个版本也能正常,说的与能正常导入不出错就不会出现undefined symbol: PyFloat_Type,
import _ctypes
实际还是会跳出错误,后面经过摸索 需要重新编译按上面的vim configure,后面才成功。整个过程搞了快两天。网上能找到的资料就那些 ,很多是很老的版本下的操作改个名字就来 导致浪费很多时间。写这篇文章供后面的人参考。