【Linux】Ubuntu16.04配置repo

Ubuntu16.04配置repo失败


在学习韦东山Linux嵌入式开发过程中,使用repo获取内核及工具链:
git clone https://e.coding.net/codebug8/repo.gitmkdir -p 100ask_imx6ull-sdk && cd 100ask_imx6ull-sdk../repo/repo init -u https://gitee.com/weidongshan/manifests.git -b linux-sdk -m imx6ull/100ask_imx6ull_linux4.9.88_release.xml --no-repo-verify../repo/repo sync -j4

结果失败,错误提示:

repo: warning: Python 2 is no longer supported; Please upgrade to Python 3.6+.No module named requests

找到repo文件夹,打开repo文件,我的repo文件夹在家目录:

vim ~/repo/repo
def check_python_version():"""Make sure the active Python version is recent enough."""def reexec(prog):exec_command([prog] + sys.argv)MIN_PYTHON_VERSION = (3, 6)ver = sys.version_infomajor = ver.majorminor = ver.minor

原因分析:

Ubuntu16系统自带python2.7和python3.5,默认的python版本是python2.7,且没有装requests。而repo init时指定的repo仓库里的脚本需要python3.6版本解释器,那在repo init运行的时候肯定会出问题。

python --version   #查看python默认版本python2 --version   #查看python2安装版本python3 --version   #查看python3安装版本python3.5 --version   #查看python3.5安装版本python3.8 --version   #查看python3.8安装版本

记住这里用 pip install requests 也并没有什么用,因为ubuntu16.04 默认的python版本就是 python2.7 和 python3.5,pip还是会将包安装到默认的python版本下,导致出现问题。


请注意,根据别人的血泪经验,系统自带的python千万不能卸载!正确做法,安装高版本的python,这里我选择直接安装python3.8。 参考链接:

ubuntu下repo遇到的环境问题




Ubuntu16.04下完美安装python高版本及对应版本的pip


方法一:直接用命令安装python3.6(但我没安装成功)

好像是因为Ubuntu16.04的软件仓库(源)中python的最高版本就是python3.5,所以无法直接用apt来安装

#方法一
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt-get update
sudo apt-get install python3.6
#方法二
sudo add-apt-repository ppa:jonathonf/python-3.6
sudo apt-get update
sudo apt-get install python3.6

参考链接:
ubuntu16.04,卸载系统自带的python3.5引发了一宗惨案,好在最终完美解决

Ubuntu16.04下完美安装python3.6.x(以3.6.9为例)及对应版本的pip


方法二:用源码安装,这里装python3.8.11
 wget https://www.python.org/ftp/python/3.8.11/Python-3.8.11.tgz
#解压,用xfz命令,不推荐用-zxvf 权限问题,不深究
tar xfz Python-3.8.11.tgz
cd Python-3.8.11
./configure --with-ssl
make
sudo make install

注意:python3.8.11会自动安装到/usr/local/bin下,你可以用update-alternatives来控制python版本,好用!

在python3.6安装好后,你还需要安装对应版本的pip。可以采用如下指令查看python版本对应的pip有没有安装

pip -Vpip2 -V
pip3 -V
pip3.8 -V
pip3.5 -V

如果安装了:

pip 21.1.1 from /usr/local/lib/python3.8/site-packages/pip (python 3.8)

如果没有安装,可以采用如下指令。不行的话,就百度查查,不难。

sudo apt-get install python3-pip #装pip3

或者

sudo apt install -y python3-pip

这是一个Linux命令,它的作用是安装Python 3的包管理工具pip。其中,sudo是Linux中的一个命令,用于以超级管理员身份来执行某个命令。apt是Ubuntu和Debian等Linux发行版中用于管理软件包的工具。install是apt的一个子命令,用于安装软件包。-y参数表示在安装时不需要人工确认。在这里,我们通过使用apt来安装Python 3的包管理工具pip,以便在之后使用pip来安装Python包。

apt 和 apt-get功能差不多。在专业人士看来,选择apt 是值得的,因为它提供了软件包管理的所有必需功能,并且更快,更友好且易于使用。




使用 update-alternatives设置python优先级


update-alternatives 本质上就是管理软链接,但提供了更规范安全的操作接口。这里只是为了建一个简单的版本管理,只需要用到一两个指令,其他功能不予深究。 首先,看一下是不是已经配置过了:
sudo update-alternatives --config python

以上指令中,sudo 是因为涉及到配置 /usr/bin 下的软链接,需要 sudo 权限;
–config 后跟所谓的服务名,此处即 python,也就是你配置的这一套版本管理的指代名称

如果显示“无候选项”,或者不完善,说明在“python”的这个版本系列里,你还没有设置优先级。

优先级示例设置:

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 2

以上指令中,
/usr/bin/python 是要创建的软链接的名字,是几个版本共用的;
后面的 python 即服务名,添加的版本会加入到名叫“python”的这个版本系列里,如果之前不存在(“无候选项”)则创建;
接下来的 /usr/bin/python2 就是软件的实际位置
最后的数字是优先级,后续可以选择自动模式和手动模式,自动模式下就会自动选择优先级值最大的一个版本。


注意,我的python3.8.11会被安装到/usr/local/bin下,因此正确做法如下:

调整Python3的优先级,使得3.8优先级较高

sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.5 1 sudo update-alternatives --install /usr/bin/python3 python3 /usr/local/bin/python3.8 2

现在系统python默认为Python2,需要修改为Python3

sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 100 sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 150

结果查询:

在这里插入图片描述

在这里插入图片描述




移除链接,

sudo update-alternatives --remove name path

这里我们移除python3里的python3.8:

sudo update-alternatives --remove python3 /usr/local/bin/python3.8

参考链接:
ubuntu16.04安装python3
Linux命令之update-alternatives




subprocess.CalledProcessError: Command ‘(‘lsb_release’, ‘-a’)’ returned non-zero exit status 1


原因:python路径下缺少 'lsb_release.py' 模块。

在这里插入图片描述


解决方案:

1、查找到lsb_release模块所在的目录
sudo find / -name 'lsb_release.py'2、将其复制到设置python3.8的系统模块加载位置,也就是报错处subprocess.py所在的目录
sudo cp  /usr/lib/python3/dist-packages/lsb_release.py /usr/local/python/lib/python3.8/

在这里插入图片描述


注意,我这里根据自己的路径调整为:

sudo cp  /usr/lib/python3/dist-packages/lsb_release.py /usr/local/lib/python3.8/

参考链接:

subprocess.CalledProcessError: Command ‘(‘lsb_release‘, ‘-a‘)‘ returned non-zero exit status 1




解决python urllib3 v2.0 only supports OpenSSL 1.1.1+, currently


卸载
pip3 uninstall urllib3

重新安装

pip install urllib3==1.23 -i https://pypi.tuna.tsinghua.edu.cn/simple

还是不行尝试 升级openssl




配置交叉编译工具链时的问题

export ARCH=arm
export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
export PATH=$PATH:/home/book/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin

注意直接这样写是错的,要把book换成自己的用户名:

export ARCH=arm
export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
export PATH=$PATH:/home/yugong/100ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin




本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/175126.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Animate 2024 for mac动画制作软件

Animate 2024是一款由Adobe公司开发的强大动画制作软件,它能帮助用户轻松制作出各种精美的动画作品。Animate 2024拥有强大而直观的设计工作流程,能够让用户自由地构建动画场景、绘制精美的图形,并轻松添加动态效果。无论是传统手绘风格还是骨…

springboot+maven多环境动态配置,以及编译失败的解决方案

一、前言 在我们的项目开发过程中一般会有多套的环境,比如比较常见的会有三套: dev (研发环境),test(测试环境),prod(生产环境)。 application.yml 是主配置文件,当在不…

第一篇 《随机点名答题系统》简介及设计流程图(类抽奖系统、在线答题系统、线上答题系统、在线点名系统、线上点名系统、在线考试系统、线上考试系统)

专栏目录 第一篇 《随机点名答题系统》简介及设计流程图(类抽奖系统、在线答题系统、线上答题系统、在线点名系统、线上点名系统、在线考试系统、线上考试系统)-CSDN博客 第二篇 《随机点名答题系统》——题库管理详解(类抽奖系统、在线答题…

gin索引 btree索引 gist索引比较

创建例子数据 postgres# create table t_hash as select id,md5(id::text) from generate_series(1,5000000) as id; SELECT 5000000postgres# vacuum ANALYZE t_hash; VACUUMpostgres# \timing Timing is on. postgres# select * from t_hash limit 10;id | …

VEX —— Half-edges

目录 一,概述 二,等效 三,函数 四,案例 Dual Mesh Mesh Subdividsion Mesh Bevel 在一些VEX函数,可将边看成为每个面非共享的半边; 一,概述 在houdini,边通常被视为面之间无方…

LLM App ≈ 数据ETL管线

虽然现有的 LLM 应用程序工具(例如 LangChain 和 LlamaIndex)对于构建 LLM 应用程序非常有用,但在初始实验之外不建议使用它们的数据加载功能。 当我构建和测试我的LLM应用程序管道时,我能够感受到一些尚未开发和破解的方面的痛苦…

微服务的注册发现和微服务架构下的负载均衡

文章目录 微服务注册模型服务注册与发现怎么保证高可用【1. 服务端崩溃检测】【2. 客户端容错】【3. 注册中心选型】 微服务架构下的负载均衡【1.轮询与加权轮询】【2.随机与加权随机】【3.哈希与一致性哈希】【4.最少连接数】【5.最少活跃数】【6.最快响应时间】【总结】 负载…

DNA甲基化的相关知识

目录 1. DNA甲基化简介 2. 原理 3. 酶分类 4. DNA甲基化类型 5.机制 6. 十大DNA甲基化研究核心问题 6.1 植物中的甲基化 6.2 植物中DNA甲基化的主要功能 6.3 DNA甲基化作为生物标志物的潜力 6.4 DNA甲基化检测方法 1. DNA甲基化简介 DNA甲基化(DNA methy…

基于FPGA的图像RGB转HLS实现,包含testbench和MATLAB辅助验证程序

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1计算最大值和最小值 4.2计算亮度L 4.3计算饱和度S 4.4计算色调H 5.算法完整程序工程 1.算法运行效果图预览 将FPGA结果导入到MATLAB显示效果: 2.算法运行软件版本 Vivado…

LeetCode(14)加油站【数组/字符串】【中等】

目录 1.题目2.答案3.提交结果截图 链接: 134. 加油站 1.题目 在一条环路上有 n 个加油站,其中第 i 个加油站有汽油 gas[i] 升。 你有一辆油箱容量无限的的汽车,从第 i 个加油站开往第 i1 个加油站需要消耗汽油 cost[i] 升。你从其中的一个加…

「Verilog学习笔记」用优先编码器①实现键盘编码电路

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网 分析 用此编码器实现键盘的编码电路。 注意:编码器的输出是低电平有效,而键盘编码电路输出的是正常的8421BCD码,是高电平有效。因此将编…

opencv车牌识别<一>

目录 一、概述 二、ANPR简介 一、概述 本文将介绍创建自动车牌识别(Automatic Number Plate Recognition,ANPR)所需的步骤。对于不同的情形,实现自动车牌识别会用不同的方法和技术,例如,IR 摄像机、固定汽车位置、光照条件等…