在 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 只有包 python2python3 .没有名为 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 上安装 MySQL 5.6

无法在 Ubuntu 20.04 上安装 ROS Melodic

在 Ubuntu 20.04 LTS(Vmware)上安装 docker 失败

如何在 Ubuntu 20.04 上安装 OpenModelica 1.9.5?

在 ubuntu 20.04LTS 上安装 pygame 的问题

我应该如何在 Ubuntu 20.04 LTS 上安装 Django