最近尝试在ubuntu下安装YME,感觉踩了很多坑,写一篇博客记录一下过程。
安装前检测各种软件的版本,对不符合要求的软件进行升级,可以在后面的安装过程中省下很多功夫。
uname -a
可以看到我的linux是Ubuntu 16.04.6。使用20版本的Ubuntu可以省去很多麻烦。
vim --version
这里可以看到vim的版本是7.4,是比较低的,需要升级。同时如果vim版本够高,但是python3前没有+号也不行,需要重新安装。
此外,还需要查看编译vim的python的版本。进入vim,输入
:py3 print( __import__( 'sys' ).version )
如果低于3.5,说明编译vim8的python3版本太低了,需要使用源码重新编译安装vim8。这里建议直接到3.8。
python3 -V
可以看到python3过低,需要升级到3.8。
gcc -v
g++ -v
可以看到gcc的版本为5.4.0,太低了。YMC至少需要8.0以上的版本。
根据上面的检测情况,选择需要的软件进行升级。如果都需要,建议按照下面顺序来。
##### 2.1.1 添加安装源
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt install gcc-8
sudo apt install g++-8
g++-8 -v
gcc-8 -v
这时如果通过 gcc -v 查看会发现还是老版本,因为这是老版本和新版本都存在。链接还没有更改。
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 800 --slave /usr/bin/g++ g++ /usr/bin/g++-8
配置完成后,再通过 gcc -v 查看就会显示为高版本.
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install software-properties-common
sudo apt install python3.8
sudo apt install python3.8-dev
python3.8 -V
$ which python3.8 //查看python3.8的位置
/usr/bin/python3.8
$ sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1
$ which python3.5 //查看python3.5的位置
/usr/bin/python3.5
$ sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 2
$ sudo update-alternatives --config python3
There are 2 choices for the alternative python3 (providing /usr/bin/python3).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/python3.5 2 auto mode
1 /usr/bin/python3.5 2 manual mode
2 /usr/bin/python3.8 1 manual mode
Press to keep the current choice[*], or type selection number: 2
这里选择python3.8, 输入2,回车。
由于YCM的需要,要使用3.5以上版本的python编译安装vim8。
sudo add-apt-repository ppa:jonathonf/vim
这里如果报错,可能是因为python3的版本问题。
ubuntu No module named 'apt_pkg'
可以通过修改脚本文件 add-apt-repository
来解决
sudo vi /usr/bin/apt-add-repository
把第一行的
#! /usr/bin/python3
改为:
#! /usr/bin/python3.5
注:这里不一定要改为3.5,根据自己原始python的版本。
再运行就可以了。
需要注意的是在Ubuntu16.04中Lua应该为liblua5.1-dev,而在其它版本中应为lua5.1-dev
sudo apt install libncurses5-dev libgtk2.0-dev libatk1.0-dev \
libcairo2-dev libx11-dev libxpm-dev libxt-dev python2-dev \
python3-dev ruby-dev lua5.2 liblua5.2-dev libperl-dev git
sudo apt remove vim vim-runtime gvim
sudo apt remove vim-tiny vim-common vim-gui-common vim-nox
如果没有git,要先装git。通过命令: sudo apt install git
cd ~
git clone https://github.com/vim/vim.git
cd vim
./configure --with-features=huge \
--enable-multibyte \
--enable-rubyinterp=yes \
--enable-python3interp=yes \
--with-python3-config-dir=/usr/lib/python3.8/config-3.8-x86_64-linux-gnu \
--enable-perlinterp=yes \
--enable-luainterp=yes \
--enable-gui=gtk2 \
--enable-cscope \
--prefix=/usr/local
make VIMRUNTIMEDIR=/usr/local/share/vim/vim82
cd ~/vim
sudo make install
sudo update-alternatives --install /usr/bin/editor editor /usr/local/bin/vim 1vim
sudo update-alternatives --set editor /usr/local/bin/vim
sudo update-alternatives --install /usr/bin/vi vi /usr/local/bin/vim 1
sudo update-alternatives --set vi /usr/local/bin/vim
vim --version
curl -fLo ~/.vim/autoload/plug.vim --create-dirs \
https://raw.githubusercontent.com/junegunn/vimplug/master/plug.vim
如果出现以下错误:
编辑 /etc/hosts,增加一项 199.232.28.133 raw.githubusercontent.com,如果还是不行,从这里再选一个试试。
vi /etc/hosts
编辑 .vimrc文件。
sudo vi ~/.vimrc
加入以下内容:
call plug#begin('~/.vim/plugged')
Plug 'mhinz/vim-startify'
call plug#end()
进入vim,输入命令 :PlugInstall
PlugInstall [name …],安装插件,如不写name则表示安装所有写在配置文件的插件。
PlugUpdate [name …],更新插件,
PlugClean,删除插件。删除配置文件没有列出的插件,默认删除会有提示。如果加上了!,则不会有提示。
PlugStatus,查看插件安装状态。
Plugin 'Valloric/YouCompleteMe'
vim-plug 安装完成后,为了避免包缺失,在 ~/.vim/plugged/YouCompleteMe下运行命令。
git submodule update --init --recursive
./install.py --clang-completer
如果出现错误
先用 g++ -v 检查g++是否正确安装,且版本正确。如果有问题,见上面重新安装。如果没问题,输入以下命令:
sudo apt-get update
sudo apt-get install -y build-essential
进入vim,编辑一个c/c++,就会有自动补全功能。
输入命令:
./install.py --clang-completer
如果提示错误:
Searching Python 3.8 libraries...
ERROR: Python headers are missing in /usr/include/python3.8.
则需要输入:
sudo apt-get install python3.8-dev
如果安装YCM后,进入vim后提示
SyntaxError: invalid syntax when import vimsupport #3732
在vim中输入
:py3 print( __import__( 'sys' ).version )
如果显示的版本号,小于3.5。说明编译vim8的python3版本太低了,需要使用源码重新编译安装vim8。
添加安装源时,例如:
sudo add-apt-repository ppa:jonathonf/vim
此时如果我们升级了python3的版本,可能会报错:[具体原因](ubuntu No module named ‘apt_pkg’ - 简书 (jianshu.com))
ubuntu No module named 'apt_pkg'
可以通过修改脚本文件 add-apt-repository
来解决
sudo vi /usr/bin/apt-add-repository
把第一行的
#! /usr/bin/python3
改为:
#! /usr/bin/python3.5
再运行就可以了。最后记得改回来。