1e41f4b71Sopenharmony_ci# Environment Setup
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci
4e41f4b71Sopenharmony_ci## Mini and Small Systems
5e41f4b71Sopenharmony_ci
6e41f4b71Sopenharmony_ci### hb Installation
7e41f4b71Sopenharmony_ci
8e41f4b71Sopenharmony_ci#### Garbled Characters and Segmentation Faults
9e41f4b71Sopenharmony_ci
10e41f4b71Sopenharmony_ci- **Symptom**
11e41f4b71Sopenharmony_ci
12e41f4b71Sopenharmony_ci  After the **python3 -m pip install --user ohos-build** command is executed, garbled characters and segmentation faults occur.
13e41f4b71Sopenharmony_ci
14e41f4b71Sopenharmony_ci
15e41f4b71Sopenharmony_ci- **Possible Causes**
16e41f4b71Sopenharmony_ci
17e41f4b71Sopenharmony_ci  The pip version does not meet requirements. 
18e41f4b71Sopenharmony_ci
19e41f4b71Sopenharmony_ci- **Solution**
20e41f4b71Sopenharmony_ci
21e41f4b71Sopenharmony_ci  Run the following command to upgrade pip:
22e41f4b71Sopenharmony_ci
23e41f4b71Sopenharmony_ci  ```
24e41f4b71Sopenharmony_ci  python3 -m pip install -U pip
25e41f4b71Sopenharmony_ci  ```
26e41f4b71Sopenharmony_ci
27e41f4b71Sopenharmony_ci
28e41f4b71Sopenharmony_ci#### "cannot import 'sysconfig' from 'distutils'"
29e41f4b71Sopenharmony_ci
30e41f4b71Sopenharmony_ci- **Symptom**
31e41f4b71Sopenharmony_ci
32e41f4b71Sopenharmony_ci  During the execution of **python3 -m pip install --user ohos-build**, the following information is displayed:<br>cannot import 'sysconfig' from 'distutils'
33e41f4b71Sopenharmony_ci
34e41f4b71Sopenharmony_ci
35e41f4b71Sopenharmony_ci- **Possible Causes**
36e41f4b71Sopenharmony_ci
37e41f4b71Sopenharmony_ci  The **distutils** module is unavailable.
38e41f4b71Sopenharmony_ci
39e41f4b71Sopenharmony_ci- **Solution**
40e41f4b71Sopenharmony_ci
41e41f4b71Sopenharmony_ci  Run the following command to install **distutils**:
42e41f4b71Sopenharmony_ci
43e41f4b71Sopenharmony_ci  ```
44e41f4b71Sopenharmony_ci  sudo apt-get install python3.8-distutils
45e41f4b71Sopenharmony_ci  ```
46e41f4b71Sopenharmony_ci
47e41f4b71Sopenharmony_ci
48e41f4b71Sopenharmony_ci#### "module 'platform' has no attribute 'linux_distribution'"
49e41f4b71Sopenharmony_ci
50e41f4b71Sopenharmony_ci- **Symptom**
51e41f4b71Sopenharmony_ci
52e41f4b71Sopenharmony_ci  During the execution of **python3 -m pip install --user ohos-build**, the following information is displayed:<br>module 'platform' has no attribute 'linux\_distribution'
53e41f4b71Sopenharmony_ci
54e41f4b71Sopenharmony_ci
55e41f4b71Sopenharmony_ci- **Possible Causes**
56e41f4b71Sopenharmony_ci
57e41f4b71Sopenharmony_ci  There is a compatibility issue of python3-pip.
58e41f4b71Sopenharmony_ci
59e41f4b71Sopenharmony_ci- **Solution**
60e41f4b71Sopenharmony_ci
61e41f4b71Sopenharmony_ci  Reinstall pip.
62e41f4b71Sopenharmony_ci
63e41f4b71Sopenharmony_ci  ```
64e41f4b71Sopenharmony_ci  sudo apt remove python3-pip
65e41f4b71Sopenharmony_ci  curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
66e41f4b71Sopenharmony_ci  python get-pip.py
67e41f4b71Sopenharmony_ci  ```
68e41f4b71Sopenharmony_ci
69e41f4b71Sopenharmony_ci
70e41f4b71Sopenharmony_ci#### "Could not find a version that satisfies the requirement ohos-build"
71e41f4b71Sopenharmony_ci
72e41f4b71Sopenharmony_ci- **Symptom**
73e41f4b71Sopenharmony_ci
74e41f4b71Sopenharmony_ci  During the execution of **python3 -m pip install --user ohos-build**, the following information is displayed:<br>Could not find a version that satisfies the requirement ohos-build
75e41f4b71Sopenharmony_ci
76e41f4b71Sopenharmony_ci
77e41f4b71Sopenharmony_ci- **Possible Causes**
78e41f4b71Sopenharmony_ci
79e41f4b71Sopenharmony_ci  The installation fails due to poor network connectivity.
80e41f4b71Sopenharmony_ci
81e41f4b71Sopenharmony_ci- **Solution**
82e41f4b71Sopenharmony_ci  
83e41f4b71Sopenharmony_ci  1. Check that your computer has a good network connection. If the network connection is unstable, rectify the network fault and reinstall hb.
84e41f4b71Sopenharmony_ci
85e41f4b71Sopenharmony_ci  2. If the network is functional, run the following commands to install hb by specifying a temporary PyPI source:
86e41f4b71Sopenharmony_ci
87e41f4b71Sopenharmony_ci     ```
88e41f4b71Sopenharmony_ci     python3 -m pip install -i https://pypi.tuna.tsinghua.edu.cn/simple ohos-build
89e41f4b71Sopenharmony_ci     ```
90e41f4b71Sopenharmony_ci
91e41f4b71Sopenharmony_ci### Python 3 Installation
92e41f4b71Sopenharmony_ci
93e41f4b71Sopenharmony_ci#### "configure: error: no acceptable C compiler found in $PATH"
94e41f4b71Sopenharmony_ci
95e41f4b71Sopenharmony_ci- **Symptom**
96e41f4b71Sopenharmony_ci
97e41f4b71Sopenharmony_ci  The following informaton is displayed during the Python 3 installation process:
98e41f4b71Sopenharmony_ci
99e41f4b71Sopenharmony_ci  ```
100e41f4b71Sopenharmony_ci  configure: error: no acceptable C compiler found in $PATH. See 'config.log' for more details
101e41f4b71Sopenharmony_ci  ```
102e41f4b71Sopenharmony_ci
103e41f4b71Sopenharmony_ci- **Possible Causes**
104e41f4b71Sopenharmony_ci
105e41f4b71Sopenharmony_ci  GCC is not installed.
106e41f4b71Sopenharmony_ci
107e41f4b71Sopenharmony_ci- **Solution**
108e41f4b71Sopenharmony_ci
109e41f4b71Sopenharmony_ci  1. Run the **apt-get install gcc** command to install GCC online.
110e41f4b71Sopenharmony_ci
111e41f4b71Sopenharmony_ci  2. Install Python 3.
112e41f4b71Sopenharmony_ci
113e41f4b71Sopenharmony_ci
114e41f4b71Sopenharmony_ci#### "-bash: make: command not found"
115e41f4b71Sopenharmony_ci
116e41f4b71Sopenharmony_ci- **Symptom**
117e41f4b71Sopenharmony_ci
118e41f4b71Sopenharmony_ci  The following information is displayed during the Python 3 installation process:
119e41f4b71Sopenharmony_ci
120e41f4b71Sopenharmony_ci  ```
121e41f4b71Sopenharmony_ci  -bash: make: command not found
122e41f4b71Sopenharmony_ci  ```
123e41f4b71Sopenharmony_ci
124e41f4b71Sopenharmony_ci- **Possible Causes**
125e41f4b71Sopenharmony_ci
126e41f4b71Sopenharmony_ci  make is not installed.
127e41f4b71Sopenharmony_ci
128e41f4b71Sopenharmony_ci- **Solution**
129e41f4b71Sopenharmony_ci
130e41f4b71Sopenharmony_ci  1. Run the **apt-get install make** command to install make online.
131e41f4b71Sopenharmony_ci
132e41f4b71Sopenharmony_ci  2. Install Python 3.
133e41f4b71Sopenharmony_ci
134e41f4b71Sopenharmony_ci
135e41f4b71Sopenharmony_ci#### "zlib not available"
136e41f4b71Sopenharmony_ci
137e41f4b71Sopenharmony_ci- **Symptom**
138e41f4b71Sopenharmony_ci
139e41f4b71Sopenharmony_ci  The following information is displayed during the Python 3 installation process:
140e41f4b71Sopenharmony_ci
141e41f4b71Sopenharmony_ci  ```
142e41f4b71Sopenharmony_ci  zipimport.ZipImportError: can't decompress data; zlib not available
143e41f4b71Sopenharmony_ci  ```
144e41f4b71Sopenharmony_ci
145e41f4b71Sopenharmony_ci- **Possible Causes**
146e41f4b71Sopenharmony_ci
147e41f4b71Sopenharmony_ci  **zlib** is not installed.
148e41f4b71Sopenharmony_ci
149e41f4b71Sopenharmony_ci- **Solution**
150e41f4b71Sopenharmony_ci
151e41f4b71Sopenharmony_ci  1. Install zlib online or offline.
152e41f4b71Sopenharmony_ci
153e41f4b71Sopenharmony_ci     Online installation:
154e41f4b71Sopenharmony_ci
155e41f4b71Sopenharmony_ci     Run the **apt-get install zlib** command to install zlib online.
156e41f4b71Sopenharmony_ci
157e41f4b71Sopenharmony_ci     Offline installation:
158e41f4b71Sopenharmony_ci
159e41f4b71Sopenharmony_ci     1. Download zlib from http://www.zlib.net/.
160e41f4b71Sopenharmony_ci  
161e41f4b71Sopenharmony_ci        ![](figures/download-zlib.png)
162e41f4b71Sopenharmony_ci  
163e41f4b71Sopenharmony_ci     2. Run the following command to install zlib:
164e41f4b71Sopenharmony_ci  
165e41f4b71Sopenharmony_ci        ```
166e41f4b71Sopenharmony_ci         # tar xvf zlib-1.2.11.tar.gz
167e41f4b71Sopenharmony_ci           # cd zlib-1.2.11
168e41f4b71Sopenharmony_ci           # ./configure
169e41f4b71Sopenharmony_ci           # make && make install
170e41f4b71Sopenharmony_ci        ```
171e41f4b71Sopenharmony_ci  
172e41f4b71Sopenharmony_ci173e41f4b71Sopenharmony_ci  
174e41f4b71Sopenharmony_ci  2. Install Python 3.
175e41f4b71Sopenharmony_ci
176e41f4b71Sopenharmony_ci
177e41f4b71Sopenharmony_ci#### "No module named '_ctypes'"
178e41f4b71Sopenharmony_ci
179e41f4b71Sopenharmony_ci- **Symptom**
180e41f4b71Sopenharmony_ci
181e41f4b71Sopenharmony_ci  The following information is displayed during the Python 3 installation process:
182e41f4b71Sopenharmony_ci
183e41f4b71Sopenharmony_ci  ```
184e41f4b71Sopenharmony_ci  ModuleNotFoundError: No module named '_ctypes'
185e41f4b71Sopenharmony_ci  ```
186e41f4b71Sopenharmony_ci
187e41f4b71Sopenharmony_ci
188e41f4b71Sopenharmony_ci- **Possible Causes**
189e41f4b71Sopenharmony_ci
190e41f4b71Sopenharmony_ci  libffi and libffi-devel are not installed.
191e41f4b71Sopenharmony_ci
192e41f4b71Sopenharmony_ci
193e41f4b71Sopenharmony_ci- **Solution**
194e41f4b71Sopenharmony_ci
195e41f4b71Sopenharmony_ci  1. Run the **apt-get install libffi\* -y** command to install libffi and libffi-devel online.
196e41f4b71Sopenharmony_ci
197e41f4b71Sopenharmony_ci  2. Install Python 3.
198e41f4b71Sopenharmony_ci
199e41f4b71Sopenharmony_ci
200e41f4b71Sopenharmony_ci### lsb_release Error During kconfiglib Installation
201e41f4b71Sopenharmony_ci
202e41f4b71Sopenharmony_ci- **Symptom**
203e41f4b71Sopenharmony_ci
204e41f4b71Sopenharmony_ci  The following information is displayed during the **kconfiglib** installation process:
205e41f4b71Sopenharmony_ci
206e41f4b71Sopenharmony_ci  ```
207e41f4b71Sopenharmony_ci  subprocess.CalledProcessError: Command '('lsb_release', '-a')' returned non-zero exit status 1.
208e41f4b71Sopenharmony_ci  ```
209e41f4b71Sopenharmony_ci
210e41f4b71Sopenharmony_ci- **Possible Causes**
211e41f4b71Sopenharmony_ci
212e41f4b71Sopenharmony_ci  The Python version in use does not match the Python version on which the lsb_release module depends.
213e41f4b71Sopenharmony_ci
214e41f4b71Sopenharmony_ci- **Solution**
215e41f4b71Sopenharmony_ci
216e41f4b71Sopenharmony_ci  Run **find / -name lsb_release** to locate lsb_release, and delete it, for example, run **sudo rm -rf /usr/bin/lsb_release**.
217e41f4b71Sopenharmony_ci
218e41f4b71Sopenharmony_ci
219e41f4b71Sopenharmony_ci### "ImportError: No module named apt_pkg"
220e41f4b71Sopenharmony_ci
221e41f4b71Sopenharmony_ci- **Symptom**
222e41f4b71Sopenharmony_ci
223e41f4b71Sopenharmony_ci  When an unidentifiable command is executed on the Linux server, the following information is displayed:<br>ImportError: No module named apt_pkg
224e41f4b71Sopenharmony_ci
225e41f4b71Sopenharmony_ci
226e41f4b71Sopenharmony_ci- **Possible Causes**
227e41f4b71Sopenharmony_ci
228e41f4b71Sopenharmony_ci  There is a compatibility issue of python3-apt.
229e41f4b71Sopenharmony_ci
230e41f4b71Sopenharmony_ci- **Solution**
231e41f4b71Sopenharmony_ci
232e41f4b71Sopenharmony_ci  Reinstall python3-apt.
233e41f4b71Sopenharmony_ci
234e41f4b71Sopenharmony_ci  ```
235e41f4b71Sopenharmony_ci  sudo apt-get remove  python3-apt
236e41f4b71Sopenharmony_ci  sudo apt-get install python3-apt
237e41f4b71Sopenharmony_ci  ```
238e41f4b71Sopenharmony_ci
239e41f4b71Sopenharmony_ci### Updating Source Code
240e41f4b71Sopenharmony_ci- **Scenario**
241e41f4b71Sopenharmony_ci
242e41f4b71Sopenharmony_ci  Update the OpenHarmony source code downloaded to the branch (for example, Master) source code.
243e41f4b71Sopenharmony_ci
244e41f4b71Sopenharmony_ci- **Solution**
245e41f4b71Sopenharmony_ci
246e41f4b71Sopenharmony_ci  1. Go to the OpenHarmony root directory.
247e41f4b71Sopenharmony_ci  
248e41f4b71Sopenharmony_ci     Check that the root directory has a **.repo** folder, which is usually hidden. If the **.repo** folder does not exist, decompress the obtained source code package again to obtain complete source code.
249e41f4b71Sopenharmony_ci  
250e41f4b71Sopenharmony_ci  2. Run the **repo init** command to initialize the source code repository information.
251e41f4b71Sopenharmony_ci
252e41f4b71Sopenharmony_ci     In the command, *branch* indicates the branch name, for example, **master** or **OpenHarmony-3.2-Beta3**.
253e41f4b71Sopenharmony_ci     ```shell
254e41f4b71Sopenharmony_ci     repo init -u https://gitee.com/openharmony/manifest -b branch --no-repo-verify
255e41f4b71Sopenharmony_ci     ```
256e41f4b71Sopenharmony_ci
257e41f4b71Sopenharmony_ci  3. Download and update the source code file.
258e41f4b71Sopenharmony_ci
259e41f4b71Sopenharmony_ci     ```shell
260e41f4b71Sopenharmony_ci     repo sync -c
261e41f4b71Sopenharmony_ci     repo forall -c 'pwd;git lfs pull'
262e41f4b71Sopenharmony_ci     ```
263e41f4b71Sopenharmony_ci     To keep the working directory clean, run the following command:
264e41f4b71Sopenharmony_ci  
265e41f4b71Sopenharmony_ci     >![icon-note.gif](public_sys-resources/icon-caution.gif) **CAUTION**<br>
266e41f4b71Sopenharmony_ci     >This command will reset the local workspace and delete files or directories that are not managed by gitee. Exercise caution when performing this operation.
267e41f4b71Sopenharmony_ci     ```shell
268e41f4b71Sopenharmony_ci     repo forall -c 'git reset --hard;git clean -fdx'
269e41f4b71Sopenharmony_ci     ```
270e41f4b71Sopenharmony_ci
271e41f4b71Sopenharmony_ci  4. Run the prebuilts script to install the compiler and binary tool.
272e41f4b71Sopenharmony_ci
273e41f4b71Sopenharmony_ci     ```shell
274e41f4b71Sopenharmony_ci     bash build/prebuilts_download.sh
275e41f4b71Sopenharmony_ci     ```
276e41f4b71Sopenharmony_ci  
277e41f4b71Sopenharmony_ci   
278