CentOS Arm系统
环境要求
开发套件包、Python、开发辅助工具、应用程序编译需要安装以下软件或依赖。
类别 |
版本要求 |
---|---|
Python |
3.7.5 |
cmake |
3.5.1+ |
protobuf |
3.11.3+ |
numpy |
1.13.3+ |
gcc |
用户可以在操作系统上使用gcc --version命令查询gcc版本,如果gcc版本低于7.3.0可以获取gcc4.8.5的开发套件包,如果gcc版本等于或高于7.3.0可以获取gcc7.3.0的开发套件包。开发环境和运行环境安装的软件包需要gcc版本一致,如果不一致会导致开发环境编译后的应用程序在运行环境上运行失败。 |
gcc-c++ |
|
make unzip zlib-devel libffi-devel openssl-devel sqlite-devel blas-devel lapack-devel openblas-devel pciutils net-tools attrs psutil decorator scipy sympy cffi grpcio grpcio-tools requests |
无版本要求,安装的版本以操作系统自带的源为准。 |
检查root用户的umask
以root用户登录安装环境。
检查root用户的umask值。
umask
如果umask不等于0022,请执行如下操作配置,在该文件的最后一行添加umask 0022后保存。
vi ~/.bashrc source ~/.bashrc
创建安装及运行用户
驱动固件、CANN软件使用的安装和运行用户如表3-5所示。
- 若使用root用户安装
可以使用root用户进行安装,但安装完之后要求使用非root用户运行(运行用户不能为root用户属组),所以安装前需要先创建运行用户。
- 如果创建的用户是HwHiAiUser,安装软件包时可以直接使用该运行用户,默认即为HwHiAiUser。
- 如果创建的用户是非HwHiAiUser,安装软件包时需要指定运行用户(通过--install-username=username --install-usergroup=usergroup参数指定),请参见如下方法创建。
- 若使用非root用户安装
该场景下安装及运行用户必须相同。
- 若已有非root用户,则无需再次创建。
- 若想使用新的非root用户,则需要先创建该用户,请参见如下方法创建。
- 创建非root用户。
groupadd usergroup useradd -g usergroup -d /home/username -m username
- 设置非root用户密码。
passwd username
- CANN软件包如果使用非root用户安装,用户所属的属组必须和Driver运行用户所属属组相同;如果不同,请用户自行添加到Driver运行用户属组。
- 创建的运行用户不能为root用户属组。
- 创建完HwHiAiUser用户后, 请勿关闭该用户的登录认证功能。
- 密码有效期为90天,您可以在/etc/login.defs文件中修改有效期的天数,或者通过chage命令来设置用户的有效期,详情请参见设置用户有效期。
配置安装用户权限(可选)
当用户使用非root用户安装时,需要操作该章节,否则请忽略。
- 打开“/etc/sudoers”文件:
chmod u+w /etc/sudoers vi /etc/sudoers
- 在该文件“root ALL=(ALL) ALL”下面增加如下内容:
username ALL=(ALL:ALL) NOPASSWD:SETENV:/usr/bin/yum, /usr/bin/pip, /bin/tar, /bin/mkdir, /bin/rm, /bin/sh, /bin/cp, /bin/bash, /usr/bin/make install, /bin/ln -s /usr/local/python3.7.5/bin/python3 /usr/bin/python3.7, /bin/ln -s /usr/local/python3.7.5/bin/pip3 /usr/bin/pip3.7, /bin/ln -s /usr/local/python3.7.5/bin/python3 /usr/bin/python3.7.5, /bin/ln -s /usr/local/python3.7.5/bin/pip3 /usr/bin/pip3.7.5
“username”为执行安装脚本的普通用户名。
请确保“/etc/sudoers”文件的最后一行为“#includedir /etc/sudoers.d”,如果没有该信息,请手动添加。
- 添加完成后,执行:wq!保存文件。
- 执行以下命令取消“/etc/sudoers”文件的写权限:
chmod u-w /etc/sudoers
配置源
yum makecache
如果命令执行报错或者后续安装依赖时等待时间过长甚至报错,则检查网络是否连接或者把“/etc/yum.repos.d/CentOS-Base.repo”文件中的源更换为可用的源或使用镜像源。如需配置网络代理,请参见配置系统网络代理。
安装依赖
- 检查系统是否安装python依赖以及gcc等软件。分别使用如下命令检查是否安装gcc,make以及python依赖软件等。
gcc --version gcc-c++ --version make --version cmake --version rpm -qa|grep gcc-c++ rpm -qa |grep unzip rpm -qa |grep zlib-devel rpm -qa |grep libffi-devel rpm -qa |grep openssl-devel rpm -qa |grep sqlite-devel rpm -qa |grep blas-devel rpm -qa |grep lapack-devel rpm -qa |grep openblas-devel rpm -qa |grep pciutils rpm -qa |grep net-tools
若分别返回类似如下信息(版本号以现场操作系统实际显示为准)则说明已经安装,进入下一步。
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39) gcc-c++-4.8.5 GNU Make 4.1 cmake version 3.5.1 unzip-6.0-21.el7.aarch64 zlib-devel-1.2.7-18.el7.aarch64 libffi-devel-3.0.13-18.el7.aarch64 openssl-devel-1.0.2k-19.el7.aarch64 sqlite-devel-3.7.17-8.el7_7.1.aarch64 blas-devel-3.4.2-8.el7.aarch64 lapack-devel-3.4.2-8.el7.aarch64 openblas-devel-0.3.3-2.el7.aarch64 pciutils-3.5.1-3.el7.aarch64 net-tools-2.0-0.24.20131004git.el7.aarch64
否则请执行如下安装命令(如果只有部分软件未安装,则如下命令修改为只安装还未安装的软件即可):sudo yum install -y gcc gcc-c++ make cmake unzip zlib-devel libffi-devel openssl-devel sqlite-devel blas-devel lapack-devel openblas-devel pciutils net-tools
上述步骤中,若安装openblas-devel时报“No package libopenblas available”的错误,需要安装企业版Linux的扩展包后重新安装。扩展包安装命令如下:sudo yum install epel-release
如果通过上述方式安装的cmake版本低于3.5.1,则请参见安装3.5.2版本cmake解决。
- 检查系统是否安装python开发环境。
开发套件包依赖python环境,分别使用命令python3.7.5 --version、pip3.7.5 --version检查是否已经安装,如果返回如下信息则说明已经安装,进入下一步。
Python 3.7.5 pip 19.2.3 from /usr/local/python3.7.5/lib/python3.7/site-packages/pip (python 3.7)
否则请根据如下方式安装python3.7.5。
- 使用wget下载python3.7.5源码包,可以下载到安装环境的任意目录,命令为:
wget https://www.python.org/ftp/python/3.7.5/Python-3.7.5.tgz
- 进入下载后的目录,解压源码包,命令为:
tar -zxvf Python-3.7.5.tgz
- 进入解压后的文件夹,执行配置、编译和安装命令:
cd Python-3.7.5 ./configure --prefix=/usr/local/python3.7.5 --enable-shared make sudo make install
其中“--prefix”参数用于指定python安装路径,用户根据实际情况进行修改。“--enable-shared”参数用于编译出libpython3.7m.so.1.0动态库。
本手册以--prefix=/usr/local/python3.7.5路径为例进行说明。执行配置、编译和安装命令后,安装包在“/usr/local/python3.7.5”路径,libpython3.7m.so.1.0动态库在“/usr/local/python3.7.5/lib/libpython3.7m.so.1.0”路径。
- 查询“/usr/lib64”或“/usr/lib”下是否有libpython3.7m.so.1.0,若有则跳过此步骤或将系统自带的libpython3.7m.so.1.0文件备份后执行如下命令:将编译后的文件libpython3.7m.so.1.0复制到“/usr/lib64”。
sudo cp /usr/local/python3.7.5/lib/libpython3.7m.so.1.0 /usr/lib64
当出现如下显示,则输入y,表示覆盖系统自带的libpython3.7m.so.1.0文件。
cp: overwrite 'libpython3.7m.so.1.0'?y
如果环境上没有“/usr/lib64”,则复制到“/usr/lib”目录:
sudo cp /usr/local/python3.7.5/lib/libpython3.7m.so.1.0 /usr/lib
libpython3.7m.so.1.0文件所在路径请根据实际情况进行替换。
- 执行如下命令设置软链接:
sudo ln -s /usr/local/python3.7.5/bin/python3 /usr/bin/python3.7 sudo ln -s /usr/local/python3.7.5/bin/pip3 /usr/bin/pip3.7 sudo ln -s /usr/local/python3.7.5/bin/python3 /usr/bin/python3.7.5 sudo ln -s /usr/local/python3.7.5/bin/pip3 /usr/bin/pip3.7.5
执行上述软链接时如果提示链接已经存在,则可以先执行如下命令删除原有链接然后重新执行。
sudo rm -rf /usr/bin/python3.7.5 sudo rm -rf /usr/bin/pip3.7.5 sudo rm -rf /usr/bin/python3.7 sudo rm -rf /usr/bin/pip3.7
- 安装完成之后,执行如下命令查看安装版本,如果返回相关版本信息,则说明安装成功。
python3.7.5 --version pip3.7.5 --version
- 使用wget下载python3.7.5源码包,可以下载到安装环境的任意目录,命令为:
- 安装 Python3开发环境。
安装前请先使用pip3.7.5 list命令检查是否安装相关依赖,若已经安装,则请跳过该步骤;若未安装,则安装命令如下(如果只有部分软件未安装,则如下命令修改为只安装还未安装的软件即可)。
如果使用非root用户安装Python及其依赖,用户需要在本步骤中的每句命令结尾加上--user,保证安装的正常进行。命令示例为:pip3.7.5 install attrs --userpip3.7.5 install attrs pip3.7.5 install psutil pip3.7.5 install decorator pip3.7.5 install numpy==1.17.2 pip3.7.5 install protobuf==3.11.3 pip3.7.5 install scipy pip3.7.5 install sympy pip3.7.5 install cffi pip3.7.5 install grpcio==1.32.0 pip3.7.5 install grpcio-tools==1.32.0 pip3.7.5 install requests
如果执行上述命令时无法连接网络,且提示“Could not find a version that satisfies the requirement xxx”,请参见使用pip3.7.5 install软件时提示" Could not find a version that satisfies the requirement xxx"解决。
如果安装numpy报错,请参考pip3.7.5 install numpy报错解决。