DAY2-Open Harmony PC 命令行适配指南(Windows版)-Tree命令行工具下载篇

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,优先级不影响)。
补充说明
  1. 适用范围 :仅适用于Debian、Ubuntu、Linux Mint、Kali Linux等基于APT包管理器的发行版;CentOS/RHEL/Fedora等用yum/dnf的系统不适用(需替换为yum install python3 python3-pip,且update-alternatives语法一致)。
  2. 验证效果 :执行完两个命令后,输入python --version,会显示Python 3的版本(而非Python 2);输入pip --version(或pip3 --version)会显示pip3的版本。
  3. 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路径,拆解如下:

  1. 解压所在的父目录native-linux-x64-6.0.0.46-Beta1.zip 是在 ~/ohos-sdk/linux 目录下执行解压的,因此这个"父目录"就是 /home/用户名/ohos-sdk/linux(绝对路径)。
    1. 示例:如果当前用户是ubuntu,则完整路径为 /home/ubuntu/ohos-sdk/linux;如果是goblinrs,则是 /home/goblinrs/ohos-sdk/linux
  2. 为什么这个路径重要

OpenHarmony原生开发(Native/C/C++)、编译构建、IDE配置(如DevEco Studio)时,需要指定OHOS_SDK_PATH环境变量,这个变量必须指向该父目录(/home/xxx/ohos-sdk/linux),否则开发工具无法找到SDK的头文件、工具链、库文件等核心资源。

四、补充注意事项
  1. 下载失败处理

wget下载超时/失败,可能是网络问题或URL失效:

  • 检查网络:确保能访问OpenHarmony官方源;
  • 替换URL:前往OpenHarmony官网获取最新的SDK下载链接;
  • 备选:用curl -O 链接替代wget(需先安装curlsudo apt install curl)。
  1. 解压报错处理
    1. tar报错"文件损坏":重新下载SDK包(可能下载不完整);
    2. unzip报错"找不到文件":检查native-linux-x64-6.0.0.46-Beta1.zip是否存在于~/ohos-sdk/linux目录(解压主SDK包后需确认该zip包是否被正确解压到该目录)。
  2. 路径验证

执行完所有命令后,通过以下命令验证路径:

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的问题

相关推荐
嘴贱欠吻!1 小时前
开源鸿蒙-基于Flutter搭建GitCode口袋工具-2
flutter·华为·开源·harmonyos·gitcode
遇到困难睡大觉哈哈1 小时前
Harmony os——ArkTS 语言笔记(七):注解(Annotation)实战理解
java·笔记·ubuntu·harmonyos·鸿蒙
晚霞的不甘1 小时前
Flutter 与开源鸿蒙(OpenHarmony)扩展开发指南:自定义插件、系统能力封装与生态工具链建设
flutter·开源·harmonyos
晚霞的不甘1 小时前
Flutter 与开源鸿蒙(OpenHarmony)实战:构建下一代跨平台应用的完整指南
flutter·开源·harmonyos
xiaocao_10232 小时前
在鸿蒙手机上有哪些比较高效的待办清单记事软件?
华为·智能手机·harmonyos
威哥爱编程14 小时前
【鸿蒙开发案例篇】快速掌握使用NAPI调用C标准库的功能
harmonyos·arkts·arkui
威哥爱编程14 小时前
【鸿蒙开发案例篇】传说中的跨设备丝滑协同服务
harmonyos·arkts·arkui
HMSCore16 小时前
超越常规扫码:鸿蒙扫码如何实现复杂、远距二维码的快速精准捕捉
harmonyos
HarmonyOS_SDK16 小时前
超越常规扫码:鸿蒙扫码如何实现复杂、远距二维码的快速精准捕捉
harmonyos