Skip to content

install_ubuntu.sh安装失败,是否应该改成使用虚拟环境? #257

Open
@jswyll

Description

@jswyll

问题复现

在Ubuntu 24.04.2 LTS系统,bash运行安装命令:

jswyll@jswyll:~/code/stm32f407-atk-explorer-v5.2.0$ wget https://gitee.com/RT-Thread-Mirror/env/raw/master/install_ubuntu.sh
chmod 777 install_ubuntu.sh
./install_ubuntu.sh --gitee
rm install_ubuntu.sh
https://gitee.com/RT-Thread-Mirror/env/raw/master/install_ubuntu.sh
正在解析主机 gitee.com (gitee.com)... 180.76.198.225, 180.76.199.13, 180.76.198.77
正在连接 gitee.com (gitee.com)|180.76.198.225|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度: 430 [text/plain]
正在保存至: ‘install_ubuntu.sh’

install_ubuntu.sh.1                                    100%[============================================================================================================================>]     430  --.-KB/s    用时 0s    

(141 MB/s) - 已保存 ‘install_ubuntu.sh’ [430/430])
正在读取软件包列表... 完成
error: externally-managed-environment

× This environment is externally managed
╰─> To install Python packages system-wide, try apt install
    python3-xyz, where xyz is the package you are trying to
    install.
    
    If you wish to install a non-Debian-packaged Python package,
    create a virtual environment using python3 -m venv path/to/venv.
    Then use path/to/venv/bin/python and path/to/venv/bin/pip. Make
    sure you have python3-full installed.
    
    If you wish to install a non-Debian packaged Python application,
    it may be easiest to use pipx install xyz, which will manage a
    virtual environment for you. Make sure you have pipx installed.
    
    See /usr/share/doc/python3.12/README.venv for more information.

note: If you believe this is a mistake, please contact your Python installation or OS distribution provider. You can override this, at the risk of breaking your Python installation or OS, by passing --break-system-packages.
hint: See PEP 668 for the detailed specification.

https://gitee.com/RT-Thread-Mirror/env/raw/master/touch_env.sh
...

我的尝试

把install_ubuntu.sh脚本改为:

#!/usr/bin/env bash

sudo apt-get update
sudo apt-get -qq install python3 python3-venv gcc git libncurses5-dev -y

url=https://raw.githubusercontent.com/RT-Thread/env/master/touch_env.sh
if [ $1 ] && [ $1 = --gitee ]; then
    url=https://gitee.com/RT-Thread-Mirror/env/raw/master/touch_env.sh
fi

wget $url -O touch_env.sh
chmod 777 touch_env.sh
./touch_env.sh $@
rm touch_env.sh

python3 -m venv ~/.env/.venv
source ~/.env/.venv/bin/activate
pip install scons requests tqdm kconfiglib pyyaml

运行:

./install_ubuntu.sh --gitee
正在读取软件包列表... 完成
https://gitee.com/RT-Thread-Mirror/env/raw/master/touch_env.sh
正在解析主机 gitee.com (gitee.com)... 180.76.198.225, 180.76.198.77, 180.76.199.13
正在连接 gitee.com (gitee.com)|180.76.198.225|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度: 1231 (1.2K) [text/plain]
正在保存至: ‘touch_env.sh’

touch_env.sh                                           100%[============================================================================================================================>]   1.20K  --.-KB/s    用时 0s    

(1.42 GB/s) - 已保存 ‘touch_env.sh’ [1231/1231])

.env directory already exists. Would you like to remove and recreate .env directory? (Y/N) Y
正克隆到 '/home/jswyll/.env/packages/packages'...
remote: Enumerating objects: 2363, done.
remote: Counting objects: 100% (2363/2363), done.
remote: Compressing objects: 100% (1881/1881), done.
remote: Total 2363 (delta 709), reused 1541 (delta 421), pack-reused 0 (from 0)
接收对象中: 100% (2363/2363), 789.96 KiB | 449.00 KiB/s, 完成.
处理 delta 中: 100% (709/709), 完成.
正克隆到 '/home/jswyll/.env/packages/sdk'...
remote: Enumerating objects: 26, done.
remote: Counting objects: 100% (26/26), done.
remote: Compressing objects: 100% (17/17), done.
remote: Total 26 (delta 8), reused 25 (delta 8), pack-reused 0 (from 0)
接收对象中: 100% (26/26), 8.13 KiB | 8.13 MiB/s, 完成.
处理 delta 中: 100% (8/8), 完成.
正克隆到 '/home/jswyll/.env/tools/scripts'...
remote: Enumerating objects: 45, done.
remote: Counting objects: 100% (45/45), done.
remote: Compressing objects: 100% (42/42), done.
remote: Total 45 (delta 7), reused 15 (delta 1), pack-reused 0 (from 0)
接收对象中: 100% (45/45), 2.06 MiB | 655.00 KiB/s, 完成.
处理 delta 中: 100% (7/7), 完成.
Collecting scons
  Using cached scons-4.9.0-py3-none-any.whl.metadata (9.0 kB)
Collecting requests
  Using cached requests-2.32.3-py3-none-any.whl.metadata (4.6 kB)
Collecting tqdm
  Using cached tqdm-4.67.1-py3-none-any.whl.metadata (57 kB)
Collecting kconfiglib
  Using cached kconfiglib-14.1.0-py2.py3-none-any.whl.metadata (39 kB)
Collecting pyyaml
  Using cached PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (2.1 kB)
Collecting charset-normalizer<4,>=2 (from requests)
  Using cached charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.metadata (35 kB)
Collecting idna<4,>=2.5 (from requests)
  Using cached idna-3.10-py3-none-any.whl.metadata (10 kB)
Collecting urllib3<3,>=1.21.1 (from requests)
  Using cached urllib3-2.3.0-py3-none-any.whl.metadata (6.5 kB)
Collecting certifi>=2017.4.17 (from requests)
  Using cached certifi-2025.1.31-py3-none-any.whl.metadata (2.5 kB)
Using cached scons-4.9.0-py3-none-any.whl (4.1 MB)
Using cached requests-2.32.3-py3-none-any.whl (64 kB)
Using cached tqdm-4.67.1-py3-none-any.whl (78 kB)
Using cached kconfiglib-14.1.0-py2.py3-none-any.whl (145 kB)
Using cached PyYAML-6.0.2-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (767 kB)
Using cached certifi-2025.1.31-py3-none-any.whl (166 kB)
Using cached charset_normalizer-3.4.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (145 kB)
Using cached idna-3.10-py3-none-any.whl (70 kB)
Using cached urllib3-2.3.0-py3-none-any.whl (128 kB)
Installing collected packages: urllib3, tqdm, scons, pyyaml, kconfiglib, idna, charset-normalizer, certifi, requests
Successfully installed certifi-2025.1.31 charset-normalizer-3.4.1 idna-3.10 kconfiglib-14.1.0 pyyaml-6.0.2 requests-2.32.3 scons-4.9.0 tqdm-4.67.1 urllib3-2.3.0

然后可以正常使用scons、pkgs、menuconfig命令。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions