在 Ubuntu 20.04 上安装 Xilinx Petalinux 时出现 python 错误
Posted
技术标签:
【中文标题】在 Ubuntu 20.04 上安装 Xilinx Petalinux 时出现 python 错误【英文标题】:python error when installing Xilinx Petalinux on Ubuntu 20.04 【发布时间】:2020-11-08 19:42:09 【问题描述】:我尝试在 Ubuntu 20.04 上安装 Xilinx Petalinux 时遇到此错误
dpkg-query:未安装包“python”并且没有可用信息 使用 dpkg --info (= dpkg-deb --info) 检查存档文件 错误:您的工具不符合版本要求: - 检测到的python版本低于预期的2.7.3
我重装了几次python,还是不行。
【问题讨论】:
Xilinx 说:' - Ubuntu Linux 工作站/服务器 16.04.5、16.04.6、18.04.1、18.04.2、18.04.3、18.04.4(64 位)'。见 UG1144。有点奇怪,他们没有完成单词重置所做的工作以继续使用 Python3。 【参考方案1】:我在 Ubuntu 20.04 上安装了 petalinux
我遇到了和你描述的一样的问题。问题是 petalinux 安装程序如何使用 dpkg 检查 python 版本并将包 python 重命名为 python2.7
我通过确保我安装了 python2 来解决问题,例如 sudo apt-get install python2.7-minimal:i386 要么 sudo apt-get install python2.7-minimal:amd64 (我都错了!) 然后我通过复制名为 Package: python2.7 的部分欺骗 dpkg 认为“python”已安装 并重命名为:- 包:蟒蛇 在文件 /var/lib/dpkg/status
此“hack”使 dpkg 能够报告已安装 python2.7 的已安装 python 版本
petalinux安装程序,在查询python版本时,现在成功,安装继续进行。
然而有一个关于脚本如何使用 sed 的报告问题,所以最后一个技巧是使用 sed shim,正如 xilinx 论坛“PetaLinux 2018.1 Install Fails on Debian Stretch”中所报告的那样
好的。说服安装程序不要过早地失败是一个小技巧。如果有更优雅的解决方案,我有兴趣了解它们。
【讨论】:
/usr/bin/python 符号链接必须指向 /usr/bin/python2.7【参考方案2】:这里的根本原因是 Petalinux(至少从 2018.3 开始)使用 dpkg-query
检查包 python
,期望找到 python2.7,但 Ubuntu 20.04 只有包 python2
和 python3
.没有名为 python
的包。修复很简单,但不是很漂亮:如果您还没有 python2 包,请先安装它:
sudo apt install python2
然后手动将python
的条目添加到/var/lib/dpkg/status
。 在执行此操作之前备份文件。如果你弄乱了这个文件,你将度过糟糕的一天。此条目将起作用:
Package: python
Status: install ok installed
Maintainer: Fake Entry <fake@example.com>
Architecture: all
Version: 2.7.17
Description: fake package for petalinux
这是python2
条目的副本,删除了不必要的字段,并更新了说明。该文件似乎是按字母顺序排序的,所以我在应该按字母顺序的地方添加了这个条目。
感谢Jon Oldroyd's answer,它基本上包含了所有这些信息,但没有明确的说明。在 Ubuntu 20.04 和 Petalinux 2018.3 中,我不需要他提到的 sed
修复。
【讨论】:
这个答案对我有帮助,但我也必须apt remove python-is-python2
否则不会安装任何新软件包。不过,对此持保留态度:我正在运行一个虚拟机,如果出现任何严重错误,我可以毫无问题地丢弃它。尝试在 Ubuntu 21.10 上安装和运行 Petalinux 2019.1。【参考方案3】:
我的脚本适用于 Ubuntu 和 Windows 10 WSL2
sudo dpkg --add-architecture i386 && sudo apt update && sudo apt-get -y install tofrodos iproute2 gawk make net-tools libncurses5-dev tftpd zlib1g:i386 libssl-dev flex bison libselinux1 gnupg wget diffstat chrpath socat xterm autoconf libtool tar unzip texinfo zlib1g-dev gcc-multilib build-essential screen pax gzip python2-minimal && \
export lin=`grep -n "Package: python2-minimal" /var/lib/dpkg/status | cut -f1 -d:` && \
sudo sed -i "$lini\Package: python\nStatus: install ok installed\nMaintainer: Fake Entry \nArchitecture: all\nVersion: 2.7.17\nDescription: fake package for petalinux\n" /var/lib/dpkg/status
你可以
bash petalinux-*.run ~/petalinux
【讨论】:
sed 命令可以使用正则表达式地址而不是行号,因此不需要 grep:sudo sed -i "/^Package: python2-minimal/i\Package: python\nStatus: install ok installed\nMaintainer: Fake Entry \nArchitecture: all\nVersion: 2.7.17\nDescription: fake package for petalinux\n" /var/lib/dpkg/status
【参考方案4】:
我怀疑你需要安装python2,而ubuntu 20.04默认有python3。 (并且没有安装 python2,因为它自 2020 年 1 月起就生命结束了)
可以通过运行确认:
python2 --version
如果它给你一个版本的正常消息,那么我的回答是完全错误的。
现在如果它给你一个错误,那么你可以尝试安装 python2 看看它是否修复它:
sudo apt install python2
info about install python2 in ubuntu
【讨论】:
这是一个很好的猜测,但不幸的是,这不是正确的答案。 Petalinux 检查已安装 Python 版本的方式已损坏。它应该只运行python --version
,但它运行 dpkg-query
,这在较新版本的 Ubuntu 上不起作用。以上是关于在 Ubuntu 20.04 上安装 Xilinx Petalinux 时出现 python 错误的主要内容,如果未能解决你的问题,请参考以下文章
无法在 Ubuntu 20.04 上安装 ROS Melodic
在 Ubuntu 20.04 LTS(Vmware)上安装 docker 失败
如何在 Ubuntu 20.04 上安装 OpenModelica 1.9.5?