Ubuntu 18.04 上无法安装 python2 包的问题

Ubuntu 18.04 上无法安装 python2 包的问题

最后更新

已报告类似问题这里

话语公告:启用 ros-testing 存储库后构建/CI 会失败吗?


更新2

实际上,在我的案例中,ROS Melodic 安​​装最终失败了:

Errors were encountered while processing:
 /tmp/apt-dpkg-install-lRVV2P/0767-python-catkin-pkg-modules_0.4.22-1_all.deb
 /tmp/apt-dpkg-install-lRVV2P/0794-python-rospkg-modules_1.2.8-1_all.deb
 /tmp/apt-dpkg-install-lRVV2P/0796-python-rosdistro-modules_0.8.2-1_all.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

更多日志:

Selecting previously unselected package python-catkin-pkg-modules.
Preparing to unpack .../0767-python-catkin-pkg-modules_0.4.22-1_all.deb ...
Unpacking python-catkin-pkg-modules (0.4.22-1) ...
dpkg: error processing archive /tmp/apt-dpkg-install-lRVV2P/0767-python-catkin-pkg-modules_0.4.22-1_all.deb (--unpack):
 trying to overwrite '/usr/lib/python2.7/dist-packages/catkin_pkg/__init__.py', which is also in package python-catkin-pkg 0.3.9-1
Selecting previously unselected package python-rospkg-modules.
Preparing to unpack .../0794-python-rospkg-modules_1.2.8-1_all.deb ...
Unpacking python-rospkg-modules (1.2.8-1) ...
dpkg: error processing archive /tmp/apt-dpkg-install-lRVV2P/0794-python-rospkg-modules_1.2.8-1_all.deb (--unpack):
 trying to overwrite '/usr/lib/python2.7/dist-packages/rospkg/__init__.py', which is also in package python-rospkg 1.1.4-1
Selecting previously unselected package python-rosdistro-modules.
Preparing to unpack .../0796-python-rosdistro-modules_0.8.2-1_all.deb ...
Unpacking python-rosdistro-modules (0.8.2-1) ...
dpkg: error processing archive /tmp/apt-dpkg-install-lRVV2P/0796-python-rosdistro-modules_0.8.2-1_all.deb (--unpack):
 trying to overwrite '/usr/lib/python2.7/dist-packages/rosdistro/__init__.py', which is also in package python-rosdistro 0.6.6-1


更新

出现故障时:

The following packages have unmet dependencies:
 python-rosinstall-generator : Depends: python-catkin-pkg (>= 0.1.28) but it is not going to be installed
                               Depends: python-pkg-resources but it is not going to be installed
                               Depends: python-rosdistro (>= 0.7.3) but it is not going to be installed
                               Depends: python-rospkg but it is not going to be installed
                               Depends: python-yaml but it is not going to be installed
                               Depends: python2 (< 2.8) but it is not installable
                               Depends: python2 (>= 2.7) but it is not installable
                               Depends: python2:any (>= 2.6.6-7~) but it is not installable
E: Unable to correct problems, you have held broken packages.
apt-cache policy python-rosinstall-generator
python-rosinstall-generator:
  Installed: (none)
  Candidate: 0.1.20-1
  Version table:
     0.1.20-1 500
        500 http://packages.ros.org/ros/ubuntu bionic/main amd64 Packages
        500 http://packages.ros.org/ros/ubuntu bionic/main i386 Packages
     0.1.13-3 500
        500 http://archive.ubuntu.com/ubuntu bionic/universe amd64 Packages
        500 http://archive.ubuntu.com/ubuntu bionic/universe i386 Packages
apt-cache policy python3-rosinstall-generator
python3-rosinstall-generator:
  Installed: (none)
  Candidate: 0.1.20-1
  Version table:
     0.1.20-1 500
        500 http://packages.ros.org/ros/ubuntu bionic/main amd64 Packages
        500 http://packages.ros.org/ros/ubuntu bionic/main i386 Packages
     0.1.13-3 500
        500 http://archive.ubuntu.com/ubuntu bionic/universe amd64 Packages
        500 http://archive.ubuntu.com/ubuntu bionic/universe i386 Packages

python-rosinstall-generator我在 Ubuntu 18.04 上安装以下软件包时遇到一些问题apt

Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 python-rosinstall-generator : Depends: python2 (< 2.8) but it is not installable
                               Depends: python2 (>= 2.7) but it is not installable
                               Depends: python2:any (>= 2.6.6-7~) but it is not installable
E: Unable to correct problems, you have held broken packages.

python-rosinstall-generator由于我使用的是 Docker,因此我有一个已成功安装的旧映像apt install python-rosinstall-generator

apt-cache depends python-rosinstall-generator
python-rosinstall-generator
  Depends: python
  Depends: python
  Depends: python-catkin-pkg
  Depends: python-pkg-resources
  Depends: python-rosdistro
  Depends: python-rospkg
  Depends: python-yaml
  Depends: <python:any>
    python:i386
    python
  Depends: <python-argparse>
    libpython2.7-stdlib
  Conflicts: python3-rosinstall-generator

在 Docker 中执行之后apt update,现在给出:

apt-cache depends python-rosinstall-generator
python-rosinstall-generator
  Depends: python-catkin-pkg
  Depends: python-pkg-resources
  Depends: python-rosdistro
  Depends: python-rospkg
  Depends: python-yaml
  Depends: <python2>
  Depends: <python2>
  Depends: <python2:any>
  Depends: <python-argparse>
    libpython2.7-stdlib
  Conflicts: python3-rosinstall-generator

并且python2无法安装包:

apt install python2
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Package python2 is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'python2' has no installation candidate

看起来最近的更新破坏了某些东西,并引入了python2包依赖关系。


docker文件

FROM ubuntu:18.04

ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install --yes \
    build-essential \
    software-properties-common \
    pkg-config \
    cmake \
    g++

RUN add-apt-repository "deb http://archive.ubuntu.com/ubuntu $(lsb_release -sc) main universe restricted multiverse"

RUN echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list
RUN apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654
RUN apt-get update && apt-get install --yes python-rosinstall-generator

答案1

看起来像这样软件包.ros.org存储库提供的python3-rosinstall-generator包与 Ubuntu 18.04 LTS 不兼容。

使用没有此类存储库的 Dockerfile 创建容器成功:

FROM ubuntu:18.04

ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install --yes \
    build-essential \
    software-properties-common \
    pkg-config \
    cmake \
    g++

RUN apt-get update && apt-get install --yes python-rosinstall-generator

但是使用您原始的 Dockerfile 安装ros-melodic-desktop-full已经成功结束。

答案2

解决此问题的一种方法可能是使用 pip 包管理器进行安装。由于您使用的是 ROS 的 python2,请尝试以下操作:

sudo apt install python-pip
sudo pip install -U rosdep rosinstall_generator vcstool rosinstall

这对我有用。希望这对你有帮助。

相关内容