DAY2-Open Harmony PC 命令行适配指南(Windows版)-Tree命令行工具下载篇
本实验基于Windows中WSL环境,安装过程可以参考:
DAY1-Open Harmony PC 命令行适配指南(Windows版)环境准备篇
https://blog.csdn.net/m0_38139250/article/details/155377715
进入Ubuntu环境
通过wsl -l -v 列出所有已安装的Linux发行版及其详细信息
Bash
C:\Windows\System32>wsl -l -v
NAME STATE VERSION
* Ubuntu Running 2
通过wsl -d Ubuntu 运行指定名称的Linux子系统
Bash
C:\Users\zhangjun>wsl -d Ubuntu
Welcome to Ubuntu 22.04.1 LTS (GNU/Linux 5.15.167.4-microsoft-standard-WSL2 x86_64)
* Documentation: https://help.ubuntu.com
* Management: https://landscape.canonical.com
* Support: https://ubuntu.com/advantage
This message is shown once a day. To disable it please create the
/home/ubuntu/.hushlogin file.
ubuntu@zjpc:/mnt/c/Users/zhangjun$
替换为你的用户名(原Ubuntu的用户名) ubuntu config --default-user ubuntu
这里已经设置默认使用Ubuntu用户名
密码为ubuntu
安装python和SDK
更新源
Bash
sudo apt-get update
sudo apt-get upgrade -y
安装Python
Bash
sudo apt install python3 python3-pip
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 1
这两个命令是Debian/Ubuntu系Linux系统中配置Python 3环境的核心操作,以下逐行拆解说明:
第一行:sudo apt install python3 python3-pip
核心作用:以管理员权限安装Python 3运行环境和Python 3的包管理工具pip。
| 命令片段 | 含义说明 |
|---|---|
sudo |
临时获取超级用户(root)权限(安装软件需管理员权限,普通用户无此权限)。 |
apt |
Debian/Ubuntu专属的包管理工具(Advanced Package Tool),用于软件的安装/卸载/更新。 |
install |
apt的子命令,指定"安装软件包"的操作。 |
python3 |
要安装的软件包名:Python 3的基础运行环境(解释器、核心库等)。 |
python3-pip |
要安装的软件包名:Python 3的官方包管理工具(用于安装/升级第三方Python库,如requests、numpy等)。 |
第二行:sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 1
核心作用 :将系统默认的python命令指向python3(解决Linux中python默认指向python2的历史问题)。
| 命令片段 | 含义说明 |
|---|---|
sudo |
需管理员权限(修改系统级命令链接属于敏感操作)。 |
update-alternatives |
Linux系统的"命令替代项管理工具",用于为同一功能的命令(如python2/python3)设置默认版本。 |
--install |
该工具的子选项,含义是"添加一个新的命令替代项"。 |
/usr/bin/python |
【链接名】要创建的符号链接路径(用户输入python命令时,系统实际调用的是这个链接)。 |
python |
【替代项名称】为这个替代规则起的标识名(后续若要修改/删除该规则,需用这个名称)。 |
/usr/bin/python3 |
【目标路径】符号链接实际指向的可执行文件(即python3的真实安装路径)。 |
1 |
【优先级】数字越大,优先级越高。若系统同时配置了python2(如优先级2),则python会默认指向python2;此处设1是基础优先级(若仅配置python3,优先级不影响)。 |
补充说明
- 适用范围 :仅适用于Debian、Ubuntu、Linux Mint、Kali Linux等基于APT包管理器的发行版;CentOS/RHEL/Fedora等用
yum/dnf的系统不适用(需替换为yum install python3 python3-pip,且update-alternatives语法一致)。 - 验证效果 :执行完两个命令后,输入
python --version,会显示Python 3的版本(而非Python 2);输入pip --version(或pip3 --version)会显示pip3的版本。 - pip的兼容 :部分系统中
pip命令可能仍指向pip2,可额外执行sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1,将pip默认指向pip3。
提示错误 python3-distutils
ubuntu@zjpc:/mnt/c/Users/zhangjun$ sudo apt install python3 python3-pip
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 1
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
python3 is already the newest version (3.10.6-1~22.04).
python3 set to manually installed.
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
python3-distutils : Depends: python3:any (< 3.10)
Depends: python3-lib2to3 (= 3.8.10-0ubuntu1~20.04) but it is not going to be installed
python3-setuptools : Depends: python3-pkg-resources (= 45.2.0-1ubuntu0.3) but 59.6.0-1.2 is to be installed
E: Unable to correct problems, you have held broken packages.
update-alternatives: using /usr/bin/python3 to provide /usr/bin/python (python) in auto mode
解决办法
Bash
下载官方pip安装脚本
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
# 用python3执行脚本安装pip(会自动适配当前Python版本)
sudo python3 get-pip.py
# 删除临时脚本
rm get-pip.py
输出如下:
SQL
ubuntu@zjpc:/mnt/c/Users/zhangjun$ # 下载官方pip安装脚本
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
# 用python3执行脚本安装pip(会自动适配当前Python版本)
sudo python3 get-pip.py
# 删除临时脚本
rm get-pip.py
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 2131k 100 2131k 0 0 1310k 0 0:00:01 0:00:01 --:--:-- 1310k
Collecting pip
Downloading pip-25.3-py3-none-any.whl.metadata (4.7 kB)
Collecting setuptools
Downloading setuptools-80.9.0-py3-none-any.whl.metadata (6.6 kB)
Collecting wheel
Downloading wheel-0.45.1-py3-none-any.whl.metadata (2.3 kB)
Downloading pip-25.3-py3-none-any.whl (1.8 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.8/1.8 MB 2.3 MB/s 0:00:01
Downloading setuptools-80.9.0-py3-none-any.whl (1.2 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 1.2/1.2 MB 8.7 MB/s 0:00:00
Downloading wheel-0.45.1-py3-none-any.whl (72 kB)
WARNING: Error parsing dependencies of distro-info: Invalid version: '1.1build1'
Installing collected packages: wheel, setuptools, pip
Successfully installed pip-25.3 setuptools-80.9.0 wheel-0.45.1
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager, possibly rendering your system unusable. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv. Use the --root-user-action option if you know what you are doing and want to suppress this warning.
ubuntu@zjpc:/mnt/c/Users/zhangjun$ # 检查pip版本(python3-pip安装后,pip3是主命令,也可链接pip)
pip3 --version
# 可选:将pip命令也指向pip3(和之前python的配置对应)
sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1
# 验证pip命令
pip --version
pip 25.3 from /usr/local/lib/python3.10/dist-packages/pip (python 3.10)
update-alternatives: error: alternative path /usr/bin/pip3 doesn't exist
pip 25.3 from /usr/local/lib/python3.10/dist-packages/pip (python 3.10)
输出如下:
Markdown
ubuntu@zjpc:/mnt/c/Users/zhangjun$ # 检查pip版本(python3-pip安装后,pip3是主命令,也可链接pip)
pip3 --version
# 可选:将pip命令也指向pip3(和之前python的配置对应)
sudo update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1
# 验证pip命令
pip --version
pip 25.3 from /usr/local/lib/python3.10/dist-packages/pip (python 3.10)
update-alternatives: error: alternative path /usr/bin/pip3 doesn't exist
pip 25.3 from /usr/local/lib/python3.10/dist-packages/pip (python 3.10)
SDK准备
Bash
cd ~
wget https://cidownload.openharmony.cn/version/Master_Version/ohos-sdk-full_ohos/20250819_020817/version-Master_Version-ohos-sdk-full_ohos-20250819_020817-ohos-sdk-full_ohos.tar.gz
tar -zvxf version-Master_Version-ohos-sdk-full_ohos-20250819_020817-ohos-sdk-full_ohos.tar.gz
sudo apt install unzip # 需要安装
cd ~/ohos-sdk/linux
unzip native-linux-x64-6.0.0.46-Beta1.zip
unzip toolchains-linux-x64-6.0.0.46-Beta1.zip
其中native-linux-x64-6.0.0.46-Beta1.zip解压所在的父目录的全路径为 后续所需要的sdk路径,如:/home/goblinrs/ohos-sdk/linux
这组命令是在Linux系统(如Ubuntu)中下载并解压OpenHarmony(鸿蒙)完整SDK包,核心目的是获取OpenHarmony原生开发所需的Native组件和编译工具链,并明确后续开发需用到的SDK根路径。以下逐行拆解+关键信息分析:
一、整体作用
从OpenHarmony官方源下载完整SDK压缩包 → 解压到当前用户主目录 → 进入SDK的Linux版本子目录 → 解压原生开发(Native)和编译工具链组件 → 确定后续开发的核心SDK路径。
二、逐行命令解析
| 命令行 | 核心作用 & 细节说明 |
|---|---|
cd ~ |
切换到当前用户的主目录 (~ 是Linux中"主目录"的简写,Ubuntu下默认路径为 /home/用户名,比如你的环境是 /home/ubuntu)。 作用:将SDK下载/解压到主目录,方便后续统一管理,避免路径混乱。 |
wget https://xxx/ohos-sdk-full_ohos.tar.gz |
用wget工具从指定URL下载OpenHarmony完整SDK的tar.gz压缩包: - wget:Linux命令行下载工具,用于获取远程文件; - URL:OpenHarmony官方构建的Master版本SDK包(20250819时间戳、6.0.0.46-Beta1版本); - 文件名:包含版本、时间戳,标识SDK的完整包(full)。 |
tar -zvxf xxx-ohos-sdk-full_ohos.tar.gz |
解压上述tar.gz压缩包: - tar:Linux归档/解压工具; - 参数解析: z:解压gzip压缩的包(tar.gz格式必加); v:显示解压过程(可视化进度,可选,不加则静默解压); x:执行"解压"操作; f:指定要解压的文件(必须放在参数最后,后跟文件名); - 解压结果:会在主目录生成 ohos-sdk 目录(SDK的根目录)。 |
cd ~/ohos-sdk/linux |
进入SDK根目录下的linux子目录: OpenHarmony SDK按系统分目录(linux/windows/mac),此目录存放Linux系统下的SDK组件,是后续操作的核心目录。 |
unzip native-linux-x64-6.0.0.46-Beta1.zip |
解压Native开发组件包: - unzip:Linux解压zip格式文件的工具; - native-linux-x64-6.0.0.46-Beta1.zip:OpenHarmony原生开发(C/C++)所需的SDK组件(x64架构、Linux版本、6.0.0.46-Beta1测试版); - 解压结果:在~/ohos-sdk/linux下生成native子目录(包含头文件、库文件、编译配置等)。 |
unzip toolchains-linux-x64-6.0.0.46-Beta1.zip |
解压编译工具链包: - toolchains:OpenHarmony编译所需的工具链(如编译器、链接器、构建工具等); - 解压结果:在~/ohos-sdk/linux下生成toolchains子目录(支撑代码编译、构建)。 |
三、关键路径说明(核心重点)
命令注释中提到:native-linux-x64-6.0.0.46-Beta1.zip解压所在的父目录的全路径为后续所需要的sdk路径,拆解如下:
- 解压所在的父目录 :
native-linux-x64-6.0.0.46-Beta1.zip是在~/ohos-sdk/linux目录下执行解压的,因此这个"父目录"就是/home/用户名/ohos-sdk/linux(绝对路径)。- 示例:如果当前用户是
ubuntu,则完整路径为/home/ubuntu/ohos-sdk/linux;如果是goblinrs,则是/home/goblinrs/ohos-sdk/linux。
- 示例:如果当前用户是
- 为什么这个路径重要:
OpenHarmony原生开发(Native/C/C++)、编译构建、IDE配置(如DevEco Studio)时,需要指定OHOS_SDK_PATH环境变量,这个变量必须指向该父目录(/home/xxx/ohos-sdk/linux),否则开发工具无法找到SDK的头文件、工具链、库文件等核心资源。
四、补充注意事项
- 下载失败处理:
若wget下载超时/失败,可能是网络问题或URL失效:
- 检查网络:确保能访问OpenHarmony官方源;
- 替换URL:前往OpenHarmony官网获取最新的SDK下载链接;
- 备选:用
curl -O 链接替代wget(需先安装curl:sudo apt install curl)。
- 解压报错处理 :
- 若
tar报错"文件损坏":重新下载SDK包(可能下载不完整); - 若
unzip报错"找不到文件":检查native-linux-x64-6.0.0.46-Beta1.zip是否存在于~/ohos-sdk/linux目录(解压主SDK包后需确认该zip包是否被正确解压到该目录)。
- 若
- 路径验证:
执行完所有命令后,通过以下命令验证路径:
Bash
# 查看SDK路径是否存在
ubuntu@zjpc:~$ ls -l ~/ohos-sdk/linux/
# 输出应包含native、toolchains目录(解压后的结果)
total 1202896
-rw-r--r-- 1 ubuntu ubuntu 88169094 Aug 19 03:14 ets-linux-x64-6.0.0.46-Beta1.zip
-rw-r--r-- 1 ubuntu ubuntu 61570774 Aug 19 03:14 js-linux-x64-6.0.0.46-Beta1.zip
drwxr-xr-x 7 ubuntu ubuntu 4096 Dec 1 20:06 native
-rw-r--r-- 1 ubuntu ubuntu 830172932 Aug 19 03:14 native-linux-x64-6.0.0.46-Beta1.zip
-rw-r--r-- 1 ubuntu ubuntu 204735065 Aug 19 03:14 previewer-linux-x64-6.0.0.46-Beta1.zip
drwxr-xr-x 7 ubuntu ubuntu 4096 Dec 1 20:06 toolchains
-rw-r--r-- 1 ubuntu ubuntu 47098302 Aug 19 03:14 toolchains-linux-x64-6.0.0.46-Beta1.zip
查看ll ohos-sdk/
Bash
ubuntu@zjpc:~$ ll ohos-sdk/
total 20
drwxr-xr-x 5 ubuntu ubuntu 4096 Aug 19 03:14 ./
drwxr-x--- 3 ubuntu ubuntu 4096 Dec 1 20:01 ../
drwxr-xr-x 4 ubuntu ubuntu 4096 Dec 1 20:06 linux/
drwxr-xr-x 2 ubuntu ubuntu 4096 Aug 19 03:14 ohos/
drwxr-xr-x 2 ubuntu ubuntu 4096 Aug 19 03:14 windows/
安装目录设定
Plain
sudo mkdir -p /data/service/hnp
sudo chmod 777 -R /data/service/hnp
下载构建脚手架与代码
下载脚手架
Plain
cd ~
git clone git@gitcode.com:OpenHarmonyPCDeveloper/build.git
输出如下
Bash
cd ~
git clone git@gitcode.com:OpenHarmonyPCDeveloper/build.git
Cloning into 'build'...
The authenticity of host 'gitcode.com (116.205.2.91)' can't be established.
RSA key fingerprint is SHA256:aTlsy+4ARMC7nWyy5eKIqUkotk8yv7Jd+XXoP4EXj1Y.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'gitcode.com' (RSA) to the list of known hosts.
git@gitcode.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
采用如下方案
Bash
cd ~
git clone https://gitcode.com/OpenHarmonyPCDeveloper/build.git
输出如下:
Bash
ubuntu@zjpc:~$ cd ~
git clone https://gitcode.com/OpenHarmonyPCDeveloper/build.git
Cloning into 'build'...
remote: Enumerating objects: 93, done.
remote: Counting objects: 100% (77/77), done.
remote: Compressing objects: 100% (76/76), done.
remote: Total 93 (delta 46), reused 0 (delta 0), pack-reused 16 (from 1)
Receiving objects: 100% (93/93), 27.50 KiB | 1.53 MiB/s, done.
Resolving deltas: 100% (51/51), done.
查看build的目录
Bash
ubuntu@zjpc:~$ ll ~/build/
total 52
drwxr-xr-x 3 ubuntu ubuntu 4096 Dec 1 20:21 ./
drwxr-x--- 5 ubuntu ubuntu 4096 Dec 1 20:26 ../
drwxr-xr-x 8 ubuntu ubuntu 4096 Dec 1 20:21 .git/
-rw-r--r-- 1 ubuntu ubuntu 14 Dec 1 20:21 .gitignore
-rw-r--r-- 1 ubuntu ubuntu 9291 Dec 1 20:21 LICENSE
-rw-r--r-- 1 ubuntu ubuntu 4429 Dec 1 20:21 README.md
-rwxr-xr-x 1 ubuntu ubuntu 4752 Dec 1 20:21 build.sh*
-rwxr-xr-x 1 ubuntu ubuntu 2696 Dec 1 20:21 build_dependency.py*
-rw-r--r-- 1 ubuntu ubuntu 2036 Dec 1 20:21 dependency.json
本地下载代码(以tree举例,在脚手架工程中执行调试验证)
Plain
cd ~/build/code/
git clone git@gitcode.com:OpenHarmonyPCDeveloper/cmdtree.git -b master
输出如下
TypeScript
ubuntu@zjpc:~$ cd ~/build/code/
git clone git@gitcode.com:OpenHarmonyPCDeveloper/cmdtree.git -b master
-bash: cd: /home/ubuntu/build/code/: No such file or directory
Cloning into 'cmdtree'...
git@gitcode.com: Permission denied (publickey).
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
解决方案
收到创建目录
Bash
mkdir ~/build/code/
通过https来clone代码
Bash
cd ~/build/code/
git clone https://gitcode.com/OpenHarmonyPCDeveloper/cmdtree.git -b master
输出如下:
Bash
ubuntu@zjpc:~/build/code$
cd ~/build/code/
git clone https://gitcode.com/OpenHarmonyPCDeveloper/cmdtree.git -b master
Cloning into 'cmdtree'...
remote: Enumerating objects: 381, done.
remote: Counting objects: 100% (66/66), done.
remote: Compressing objects: 100% (23/23), done.
remote: Total 381 (delta 56), reused 43 (delta 43), pack-reused 315 (from 1)
Receiving objects: 100% (381/381), 198.33 KiB | 1.26 MiB/s, done.
Resolving deltas: 100% (257/257), done.
总结
本次主要完成python和SDK安装,并完成脚手架和代码的下载,同时解决了一些git的问题