EulerOS Arm系统
环境要求
开发套件包、Python、开发辅助工具、应用程序编译需要安装以下软件或依赖。
类别 |
版本要求 |
---|---|
Python |
3.7.5 |
cmake |
3.5.1+ |
protobuf |
3.11.3+ |
gcc |
7.3.0及以上 |
gcc-c++ |
7.3.0及以上 |
make unzip zlib-devel libffi-devel openssl-devel sqlite-devel pciutils net-tools lapack lapack-devel blas blas-devel gcc-gfortran attrs psutil decorator numpy scipy sympy cffi grpcio grpcio-tools requests |
无版本要求,安装的版本以操作系统自带的源为准。 |
检查root用户的umask
以root用户登录安装环境。
检查root用户的umask值。
umask
如果umask不等于0022,请执行如下操作配置,在该文件的最后一行添加umask 0022后保存。
vi ~/.bashrc source ~/.bashrc
创建安装及运行用户
驱动固件、CANN软件使用的安装和运行用户如表3-9所示。
- 若使用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
检查源
安装过程需要下载相关依赖,请确保安装环境能够连接网络。
请在root用户下执行如下命令检查源是否可用。
yum repolist
如果命令执行报错或者后续安装依赖时等待时间过长甚至报错,则检查网络是否连接或者把"/etc/yum.repos.d/xxxx.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 unzip rpm -qa |grep pciutils rpm -qa |grep net-tools rpm -qa |grep lapack rpm -qa |grep lapack-devel rpm -qa |grep blas rpm -qa |grep blas-devel rpm -qa |grep gcc-gfortran
若分别返回如下信息则说明已经安装,进入下一步。
gcc (GCC) 7.3.0 gcc-c++-7.3.0 GNU Make 4.2.1 cmake version 3.12.1 unzip-6.0-40.eulerosv2r8.aarch64 zlib-devel-1.2.11-14.eulerosv2r8.aarch64 libffi-devel-3.1-18.h3.eulerosv2r8.aarch64 openssl-devel-1.1.1-3.h7.eulerosv2r8.aarch64 sqlite-devel-3.24.0-2.h4.eulerosv2r8.aarch64 unzip-6.0-40.eulerosv2r8.aarch64 pciutils-3.5.1-3.el7.aarch64 net-tools-2.0-0.24.20131004git.el7.aarch64 lapack-3.8.0-10.eulerosv2r8.aarch64 lapack-devel-3.8.0-10.eulerosv2r8.aarch64 blas-3.8.0-10.eulerosv2r8.aarch64 blas-devel-3.8.0-10.eulerosv2r8.aarch64 gcc-gfortran-7.3.0-20190804.h22.eulerosv2r8.aarch64
否则请执行如下安装命令(如果只有部分软件未安装,则如下命令修改为只安装还未安装的软件即可):
sudo yum install -y gcc gcc-c++ make cmake unzip zlib-devel libffi-devel openssl-devel sqlite-devel pciutils net-tools lapack lapack-devel blas blas-devel gcc-gfortran
- 检查系统是否安装python开发环境。
开发套件包依赖python环境,分别使用命令python --version、pip --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 mkdir /usr/local/python3.7.5 ./configure --prefix=/usr/local/python3.7.5 --enable-loadable-sqlite-extensions --enable-shared make && make install
--enable-shared参数用于编译出libpython3.7m.so.1.0动态库。
- 执行如下命令复制libpython3.7m.so.1.0动态库:
- 由于yum工具强依赖于系统自带的libpython3.7m.so.1.0文件,因此需要备份系统自带的libpython3.7m.so.1.0文件。请执行如下命令:
cd /usr/lib64 cp libpython3.7m.so.1.0 libpython3.7m.so.1.0.bak
如果环境上没有“/usr/lib64”,则以实际路径为准。
- 将编译后的文件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'?
如果环境上没有“/usr/lib64”,则复制到“/usr/lib”目录:
sudo cp /usr/local/python3.7.5/lib/libpython3.7m.so.1.0 /usr/lib
libpython3.7m.so.1.0文件所在路径请根据实际情况进行替换。
- 当需要使用yum工具时,需要执行如下命令将a备份的文件libpython3.7m.so.1.0.bak恢复。
mv libpython3.7m.so.1.0.bak libpython3.7m.so.1.0
- 由于yum工具强依赖于系统自带的libpython3.7m.so.1.0文件,因此需要备份系统自带的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 sudo rm -rf /usr/bin/pip3.7 sudo rm -rf /usr/bin/python3.7.5 sudo rm -rf /usr/bin/pip3.7.5
- 安装完成之后,执行如下命令查看安装版本,如果返回相关版本信息,则说明安装成功。
python3.7 --version pip3.7 --version 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 --user
pip3.7.5 install attrs pip3.7.5 install psutil pip3.7.5 install decorator pip3.7.5 install numpy 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"解决。