【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.mzph.cn/news/145266.shtml

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

相关文章

万能在线答题考试小程序源码系统 既能刷题 又能考试 带完整的搭建教程

现如今,线上学习和考试已经成为一种趋势。近年来,移动端的普及以及微信小程序的兴起,使得在线答题考试系统变得更加便捷和高效。今天罗峰就来给大家介绍一款万能在线答题考试小程序源码系统,既能刷题,又能考试&#xf…

MySQL数据库管理--- mysql数据库迁移-v查看报错sql

默认情况下:每个客户端连接都会在服务器进程中拥有一个线程。 每个线程相当于一个LOCALNO的oracle远程链接。 1 该连接的查询只会在这个单独的线程中执行,该线程驻留在一个内核或者CPU上,服务器维护一个 缓冲区,用于存放已就绪的线…

LeetCode 2760. 最长奇偶子数组:模拟(使用一个变量记录状态)

【LetMeFly】2760.最长奇偶子数组:模拟(使用一个变量记录状态) 力扣题目链接:https://leetcode.cn/problems/longest-even-odd-subarray-with-threshold/ 给你一个下标从 0 开始的整数数组 nums 和一个整数 threshold 。 请你从…

微信小程序中复制文本

在微信小程序中,可以使用wx.setClipboardData()方法来实现复制文本内容的功能。以下是一个示例代码: // 点击按钮触发复制事件 copyText: function() {var that this;wx.setClipboardData({data: 要复制的文本内容,success: function(res) {wx.showToa…

Tosca 2023x 新功能介绍

Tosca/Structure的功能增强 热优化功能增强 在优化过程中,支持将对流边界条件转移至新创建的表面,方便更加真实地模拟传热行为。支持恒定传导。多物理场优化能力增强。通过使用多个输入面板对热和结构荷载进行分别输入,以支持同时对热和结构…

多表之间存在父子级关系:根据某一级,查询所有子级 构建树结构数据

表park_project、park_project_sub 、building 、building_floor 、building_floor_room 存在父子级关系,并且确定是4层。 多表之间存在父子级关系,根据某一级,查询所有子级 现需要根据某一级,查询这一级下的所有子级&#xff0…

​软考-高级-系统架构设计师教程(清华第2版)【第10章 软件架构的演化和维护(P345~382)-思维导图】​

软考-高级-系统架构设计师教程(清华第2版)【第10章 软件架构的演化和维护(P345~382)-思维导图】 课本里章节里所有蓝色字体的思维导图

Matlab 方位角计算之二

文章目录 一、简介二、实现代码三、实现效果一、简介 我们总是说降维打击,这种思路尤其在一些问题上显现的尤为突出,就比如方位角这个问题,如果我们局限于二维这个空间,那么很多时候就需要判断方向向量落在了那个象限,之后再一个个情况逐一分析,虽然这样做并不复杂,但总…

【k8s集群搭建(二):基于虚拟机的linux的k8s集群搭建_超详细_可视化界面Dashboard安装_记录全过程踩坑记录及解决方法】

在 master 执行 # 根据 在线配置文件 创建资源 kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.3.1/aio/deploy/recommended.yaml设置访问端口 # 修改配置文件 找到 type,将 ClusterIP 改成 NodePort kubectl edit svc kubernetes-…

Scala---迭代器模式+Trait特质特性

Scala迭代器模式处理数据 scala中创建集合需要内存,集合与集合之间的转换时,每次转换生成新的集合时,新的集合也需要内存。如果有一个非常大的初始集合,需要经过多次转换,每次转换都生成一个新的集合,才能…

sqlite3简单使用

为什么要使用sqlite3? sqlite3轻量简介,无需单独的数据库服务,只需访问磁盘上的.db的文件。在某些情况下很有用。 下面是一些简单的使用代码: import sqlite3 from uuid import uuid1# 连接数据库文件,如果不存在会创建 with…

2023年中国冲击波治疗仪市场发展趋势分析:未来市场增长空间更大[图]

冲击波在临床医学领域最早应用于体外冲击波碎石,在二十世纪八十年代末期,体外冲击波碎石技术开始被运用到骨科及康复理疗领域,经过十余年的临床研究,冲击波疗法日益完善,应用范围也日益扩大。冲击波作为一种介于保守疗…

【入门篇】1.7 Redis 之 codis 入门介绍

文章目录 1. 简介2. Codis的安装与配置下载编译源码安装1. 安装 Go 运行环境2. 设置编译环境3. 下载 Codis 源代码4. 编译 Codis 源代码 Docker 部署 3. Codis的架构Codis的架构图和组件Codis的工作流程 4. Codis的核心特性自动数据分片数据迁移高可用性全面支持Redis命令分布式…

Android中eBPF使用原理以及 kprobe dmabuf_setup实例

目录 eBPF in Android Android eBPF kprobe dma代码 定义一个MAP 定义一个 PROG bpfprogs/Android.bp 测试程序 bpfprogs/memstats/Android.bp bpfprogs/memstats/MemStats.h bpfprogs/memstats/MemStats.cpp bpfprogs/memstats/MemStatsMain.cpp 编译运行 结果分析…

android 13.0 删除连接wifi的配置信息

1.前言 在13.0的系统rom产品定制化开发中,对于wifi的功能定制需求功能也是挺多的,目前对于wifi模块有这么个需求,要求在 提供接口实现删除已连接wifi的需求,所以需要了解wifi相关的配置情况,然后移除wifi即可,接下来就来实现相关的功能 2.删除连接wifi的配置信息的核心类…

C 语言 sizeof运算符

C 语言 sizeof运算符 sizeof运算符在C语言中使用时,它决定表达式的大小或在char大小的存储单元数量中指定的数据类型。sizeof运算符包含一个操作数,该操作数可以是表达式,也可以是数据类型转换,其中转换是用括号括起来的数据类型…

【fbtft】如何添加fbtft驱动

获取lcd ic的datasheet,或者直接找到其他平台(linux,stm32,esp32)的驱动 我用的是合宙的esp32驱动,注意是c语言的,合宙上层用lua封装了,需要找到sdk源码。 源码路径: …

File类和IO流

我是南城余!阿里云开发者平台专家博士证书获得者! 欢迎关注我的博客!一同成长! 一名从事运维开发的worker,记录分享学习。 专注于AI,运维开发,windows Linux 系统领域的分享! 本…

设置chunk自动扩展到多大

1. 设置chunk自动扩展 execute function task(modify chunk extendable on,8); 2. 设置dbs扩展到多大合适 execute function task(modify space sp sizes,testdb1024,1024,10240) testdb 初始1MB 下次扩1MB 最大10MB

appium+python自动化测试

获取APP的包名 1、aapt即Android Asset Packaging Tool,在SDK的build-tools目录下。该工具可以查看apk包名和launcherActivity 2、在android-sdk里面双击SDK-manager,下载buidl-tools 3、勾选build-tools,随便选一个版本,我这里选的是24的版…