安装YouCompleteMe编译的依赖-升级conda及其python

本教程是针对JUN集群的。其它场景仅供参考。

JUN集群中已经升级到节点

已经完成:cpu1-5, gpu1-11, gpu14-38

正在进行:

有待完成:gpu16

坏了的机器:gpu16

安装Youcomplete所需的依赖

以下方法适用于Linux系统

在g[x]:

conda -V
python -V
cmake --version
g++-8 --version

升级python和升级conda

conda install -y python=3.10
python -V

conda update conda
conda -V

如果上述升级过程遇到报错,请按照下文的操作细节去安装。

安装JUN集群上所需要的pip包

pip install -U pip
pip install pretty_errors && python -m pretty_errors -s -p
pretty_errors_config="$(python -m pretty_errors -f | grep pretty_errors.pth)"
[ -f "$pretty_errors_config" ] && ln -sf $shareENV/app_config/pretty_errors.pth "$pretty_errors_config"
pip install jupyter
pip install jupyterthemes
pip install shadowsocks
mkdir /home/${USER}/ENV/localENV/log/{polipo,shadowsocks}
pip install pynvim # 在python>=3.7上,使用pynvim而不是neovim

Ubuntu18.04中手动安装cmake3.22

参考:

https://juejin.cn/post/7279346112317259831

https://blogca.cn/2022/07/13/ubuntu18-sheng-ji-an-zhuang-cmake-chao-xiang-xi-qin-ce-cheng-gong-2022-nian-7-yue-13-ri/

sudo apt remove -y cmake
# 下载、解压
# 去https://cmake.org/files/下载所需版本的源码。也可以使用wget下载,例如:
cd /home/$USER
wget https://cmake.org/files/v3.22/cmake-3.22.1.tar.gz
tar -xvzf cmake-3.22.1.tar.gz
rm cmake-3.22.1.tar.gz
sudo mv cmake-3.22.1 /usr/local/bin/cmake

# 手动编译
cd /usr/local/bin/cmake
sudo ./bootstrap
# 使用-j4参数以加快编译速度,数字4表示同时使用4个核心
sudo make -j4
sudo make install
sudo ln -sf /usr/local/bin/cmake/bin/* /usr/bin/
cmake --version

若 sudo ./bootstrap 报错:

“CMake Error at Utilities/cmcurl/CMakeLists.txt:562 (message):
Could not find OpenSSL. Install an OpenSSL development package or
configure CMake with -DCMAKE_USE_OPENSSL=OFF to build without OpenSSL.“

则执行

sudo apt-get install -y libssl-dev

然后执行上述的手动编译的命令。

用conda安装cmake (不推荐)

不推荐用conda安装cmake,因为前文方法安装的cmake可以给所有用户用,而用conda安装的cmake只能给本用户用。

conda install cmake=3.14 # 但是,只有本用户可用,故不用
conda install gxx_linux-64 # 但是,会显示成haoyu@x86_64-conda-linux-gnu,故不用
cmake --version
gxx --version
python ~/.vim/plugged/YouCompleteMe/install.py

安装g+±8

参考 Your C++ compiler does NOT fully support C17,升级gcc到支持c17

sudo apt-get install -y g++-8
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 700 --slave /usr/bin/g++ g++ /usr/bin/g++-7
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-8 800 --slave /usr/bin/g++ g++ /usr/bin/g++-8

确认所安装软件的版本

conda -V
python -V
cmake --version
g++-8 --version

which python cmake g++-8

返回如下(gpu36,Ubuntu 18.04.5 LTS,2023-12-21执行)

conda 23.11.0
Python 3.10.13
cmake version 3.22.1

CMake suite maintained and supported by Kitware (kitware.com/cmake).
g++-8 (Ubuntu 8.4.0-1ubuntu1~18.04) 8.4.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

/home/haoyu/ENV/localENV/anaconda3/bin/python
/usr/bin/cmake
/usr/bin/g++-8

编译YouCompleteMe

在g[x]:

sudo rm -rf $HOME/.vim/plugged/*

若有无法更新的包,则执行

rm -rf $HOME/.vim/plugged/<包的名字>
ivp

在已经成功下载YouCompleteMe及其子包的节点上(比如g49):

ts /home/haoyu/.ssh g[xx]:.
ts /home/haoyu/ENV/localENV/app_config/vim_plug/YouCompleteMe g[x]:/home/haoyu/ENV/localENV/app_config/vim_plug/
# 其它包同理:
ts /home/haoyu/ENV/localENV/app_config/vim_plug/<未安装的包名字> g[x]:/home/haoyu/ENV/localENV/app_config/vim_plug/

在g[x]:

uvp
python $HOME/.vim/plugged/YouCompleteMe/install.py
vv
# 测试一下vim是否能启用YouCompleteMe的自动补全

升级conda及其中的python

升级conda

# 查看conda版本
conda -V

# 首先更新 conda 到最新,测试中如果当前处在 conda activate 状态下,需要更新 conda 两次
conda update conda
conda -V

# 如果遇到更新失败,可尝试强制更新
conda update --force conda
conda -V

解决错误

若conda升级失败,可尝试先升级python

若直接升级conda失败,可以尝试先升级conda下的python,再升级conda

# 查看python版本
python -V
# 升级python到最新版本
conda update python
# 或升级python到指定版本
conda install python=3.10
python -V

# 升级conda
conda update conda

此方法,会重新安装一个新版本的 python 在$HOME/miniconda/lib/python3.10 中,并把 base 使用的 python 指向新版本python。

但是,新版本的 python 3.10 文件夹下没有就版本安装的第三方依赖(即pip包),需要重新安装。

旧 python 仍然在$HOME/miniconda/lib/python3.7中,这里面有旧版本python的基础文件和pip包。用上述命令安装新版本python时,不会自动删除这个目录。如果不需要使用旧版本的python,可以在新版本python安装好后,删掉这个目录,即

rm -rf $HOME/miniconda/lib/python3.7

因此,一般情况下不建议升级。可以通过conda create env -n new python=3.10创建新的虚拟环境。

RemoveError: ‘setuptools’ is a dependency of conda

报错

RemoveError: ‘setuptools’ is a dependency of conda and cannot be removed from conda’s operating environme

则执行

conda install --force -c anaconda git
conda update -n base -c defaults setuptools

WARNING: A newer version of conda exists.

报错

==> WARNING: A newer version of conda exists. <==
current version: 4.7.10
latest version: 23.10.0
Please update conda by running
$ conda update -n base -c defaults conda

则执行

conda update -n base -c defaults conda

如果还是没能升级

则执行

conda install -n base -c defaults conda=23.9.0

The environment is inconsistent

报错

The environment is inconsistent, please check the package plan carefully. The following packages are causing the inconsistency.

则执行

conda activate base
conda update anaconda # 如果安装的是miniconds,则不要执行此命令
conda update --all

上述错误解决后,需要重新升级conda

conda update conda