ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange |
1 | initial version |
The issue seems to be in the ros-indigo-openni-camera package.
$ apt-cache depends ros-indigo-openni-camera
ros-indigo-openni-camera
Depends: libboost-system1.54.0
Depends: libboost-thread1.54.0
Depends: libc6
Depends: libconsole-bridge0.2
Depends: libgcc1
Depends: liblog4cxx10
Depends: libopenni0
Depends: libstdc++6
Depends: libusb-1.0-0
Depends: liblog4cxx10-dev
Depends: libopenni-dev
Depends: libopenni-sensor-primesense-dev
Depends: libusb-1.0-0-dev
Depends: ros-indigo-camera-info-manager
Depends: ros-indigo-dynamic-reconfigure
Depends: ros-indigo-image-transport
Depends: ros-indigo-nodelet
Depends: ros-indigo-roscpp
Depends: ros-indigo-sensor-msgs
Conflicts: ros-indigo-openni-camera:i386
As you can see that package depends on both libopenni-dev (which depends on libopenni0) as well as libopenni-sensor-primesense-dev. But libopenni0 lists both libopenni-sensor-primesense and libopenni-sensor-pointclouds0 as recommended packages (one or the other), installing libopenni-sensor-pointclouds0 as the default. This leads to the conflict.
ros-indigo-openni-camera needs to be smarter about how it handles conflicting packages to avoid having libopenni0 install libopenni-sensor-pointclouds0 instead of libopenni-sensor-primesense.
Just try installing ros-indigo-openni-camera on Ubuntu 14.04 to duplicate the issue.
2 | No.2 Revision |
The issue seems to be in the ros-indigo-openni-camera package.
$ apt-cache depends ros-indigo-openni-camera
ros-indigo-openni-camera
Depends: libboost-system1.54.0
Depends: libboost-thread1.54.0
Depends: libc6
Depends: libconsole-bridge0.2
Depends: libgcc1
Depends: liblog4cxx10
Depends: libopenni0
Depends: libstdc++6
Depends: libusb-1.0-0
Depends: liblog4cxx10-dev
Depends: libopenni-dev
Depends: libopenni-sensor-primesense-dev
Depends: libusb-1.0-0-dev
Depends: ros-indigo-camera-info-manager
Depends: ros-indigo-dynamic-reconfigure
Depends: ros-indigo-image-transport
Depends: ros-indigo-nodelet
Depends: ros-indigo-roscpp
Depends: ros-indigo-sensor-msgs
Conflicts: ros-indigo-openni-camera:i386
As you can see that package depends on both libopenni-dev (which depends on libopenni0) as well as libopenni-sensor-primesense-dev. But libopenni0 lists both libopenni-sensor-primesense and libopenni-sensor-pointclouds0 as recommended packages (one or the other), installing libopenni-sensor-pointclouds0 as the default. This leads to the conflict.
ros-indigo-openni-camera needs The reason apt can't resolve this is that the libopenni-sensor-primesense packages don't list the corresponding libopenni-sensor-pointclouds packages as conflicts
$ apt-cache depends libopenni-sensor-primesense0
libopenni-sensor-primesense0
Depends: libc6
Depends: libgcc1
Depends: libjpeg8
Depends: libopenni0
Depends: libstdc++6
Depends: openni-utils
Conflicts: libopenni-sensor-primesense0:i386
$ apt-cache depends libopenni-sensor-primesense-dev
libopenni-sensor-primesense-dev
Depends: libopenni-sensor-primesense0
Conflicts: libopenni-sensor-primesense-dev:i386
Likewise, the libopenni-sensor-pointclouds packages only list libopenni-sensor as a conflict, not libopenni-sensor-primesense-dev:
$ apt-cache depends libopenni-sensor-pointclouds0
libopenni-sensor-pointclouds0
Depends: libc6
Depends: libgcc1
Depends: libjpeg8
Depends: libopenni0
Depends: libstdc++6
Depends: openni-utils
Conflicts: <libopenni-sensor>
Conflicts: <libopenni-sensor:i386>
Replaces: <libopenni-sensor>
libopenni-sensor-pointclouds0
Replaces: <libopenni-sensor:i386>
libopenni-sensor-pointclouds0:i386
Conflicts: libopenni-sensor-pointclouds0:i386
$ apt-cache depends libopenni-sensor-pointclouds-dev
libopenni-sensor-pointclouds-dev
Depends: libopenni-sensor-pointclouds0
Conflicts: <libopenni-sensor-dev>
Conflicts: <libopenni-sensor-dev:i386>
Replaces: <libopenni-sensor-dev>
libopenni-sensor-pointclouds-dev
Replaces: <libopenni-sensor-dev:i386>
libopenni-sensor-pointclouds-dev:i386
Conflicts: libopenni-sensor-pointclouds-dev:i386
Thus, the two package don't actually conflict as far as apt is concerned, which is why apt doesn't realize there is an issue until it goes to try to overwrite the existing files at runtime.
Thus, this seems to be smarter about how it handles conflicting packages to avoid having libopenni0 install libopenni-sensor-pointclouds0 instead of libopenni-sensor-primesense.
Just try installing ros-indigo-openni-camera a bug in the conflict list for both the libopenni-sensor backends on Ubuntu 14.04 to duplicate the issue.
You can see others reporting the same issue at http://askubuntu.com/questions/502903/resolve-unmet-dependencies and at https://github.com/ros/rosdistro/issues/3986.
3 | No.3 Revision |
The issue seems to be in related to the ros-indigo-openni-camera package.package:
$ apt-cache depends ros-indigo-openni-camera
ros-indigo-openni-camera
Depends: libboost-system1.54.0
Depends: libboost-thread1.54.0
Depends: libc6
Depends: libconsole-bridge0.2
Depends: libgcc1
Depends: liblog4cxx10
Depends: libopenni0
Depends: libstdc++6
Depends: libusb-1.0-0
Depends: liblog4cxx10-dev
Depends: libopenni-dev
Depends: libopenni-sensor-primesense-dev
Depends: libusb-1.0-0-dev
Depends: ros-indigo-camera-info-manager
Depends: ros-indigo-dynamic-reconfigure
Depends: ros-indigo-image-transport
Depends: ros-indigo-nodelet
Depends: ros-indigo-roscpp
Depends: ros-indigo-sensor-msgs
Conflicts: ros-indigo-openni-camera:i386
As you can see that package depends on both libopenni-dev (which depends on libopenni0) as well as libopenni-sensor-primesense-dev. But libopenni0 lists both libopenni-sensor-primesense and libopenni-sensor-pointclouds0 as recommended packages (one or the other), installing libopenni-sensor-pointclouds0 as the default. This leads to the conflict.
The reason apt can't resolve this is that the libopenni-sensor-primesense packages don't doesn't list the corresponding libopenni-sensor-pointclouds packages as conflicts
$ apt-cache depends libopenni-sensor-primesense0
libopenni-sensor-primesense0
Depends: libc6
Depends: libgcc1
Depends: libjpeg8
Depends: libopenni0
Depends: libstdc++6
Depends: openni-utils
Conflicts: libopenni-sensor-primesense0:i386
$ apt-cache depends libopenni-sensor-primesense-dev
libopenni-sensor-primesense-dev
Depends: libopenni-sensor-primesense0
Conflicts: libopenni-sensor-primesense-dev:i386
Likewise, the libopenni-sensor-pointclouds packages only list libopenni-sensor as a conflict, not libopenni-sensor-primesense-dev:
$ apt-cache depends libopenni-sensor-pointclouds0
libopenni-sensor-pointclouds0
Depends: libc6
Depends: libgcc1
Depends: libjpeg8
Depends: libopenni0
Depends: libstdc++6
Depends: openni-utils
Conflicts: <libopenni-sensor>
Conflicts: <libopenni-sensor:i386>
Replaces: <libopenni-sensor>
libopenni-sensor-pointclouds0
Replaces: <libopenni-sensor:i386>
libopenni-sensor-pointclouds0:i386
Conflicts: libopenni-sensor-pointclouds0:i386
$ apt-cache depends libopenni-sensor-pointclouds-dev
libopenni-sensor-pointclouds-dev
Depends: libopenni-sensor-pointclouds0
Conflicts: <libopenni-sensor-dev>
Conflicts: <libopenni-sensor-dev:i386>
Replaces: <libopenni-sensor-dev>
libopenni-sensor-pointclouds-dev
Replaces: <libopenni-sensor-dev:i386>
libopenni-sensor-pointclouds-dev:i386
Conflicts: libopenni-sensor-pointclouds-dev:i386
Thus, the two package don't actually conflict as far as apt is concerned, which is why apt doesn't realize there is an issue until it goes to try to overwrite the existing files at runtime.
Thus, this seems to be a bug in the conflict list for both the libopenni-sensor backends backend packages on Ubuntu 14.04. Apt itself is working fine.
You can see others reporting the same issue at http://askubuntu.com/questions/502903/resolve-unmet-dependencies and at https://github.com/ros/rosdistro/issues/3986.