open-rmf/rmf_traffic_editor

Failed to install libceres-dev on humble

koonpeng opened this issue · 11 comments

Bug report

Required information:

  • Operating system and version:
    • ubuntu 22.04
  • OpenRMF installation type:
    • source
  • OpenRMF version or commit hash
    • main
  • ROS distribution and version:
    • humble
  • ROS installation type:
    • binaries
  • Package or library, if applicable:
    • libceres-dev

Description of the bug

The ros ci tooling fail to install libceres-dev, logs can be found here https://github.com/open-rmf/rmf/runs/7175224381?check_suite_focus=true#step:5:2526.

Steps to reproduce the bug

Only happens in CI, wasn't able to reproduce locally or in docker. Happens consistently in this PR open-rmf/rmf#165.

I'm taking a look into this.
It looks like there's some conflict between the humble dependences installed by the step

      - name: deps
        uses: ros-tooling/setup-ros@v0.3
        with:
          required-ros-distributions: humble

and the package libceres-dev.

If libceres-dev is installed in a previous step, it's uninstalled by the ros-tooling/setup-ros@v0.3.

| [command]/usr/bin/sudo DEBIAN_FRONTEND=noninteractive RTI_NC_LICENSE_ACCEPTED=yes apt-get install --no-install-recommends --quiet --yes libssl-dev python3-dev build-essential clang cmake git lcov libc++-dev libc++abi-dev python3-catkin-pkg-modules python3-pip python3-vcstool wget libasio-dev libtinyxml2-dev python3-rosdep
| Reading package lists...
| Building dependency tree...
| Reading state information...
| wget is already the newest version (1.21.2-2ubuntu1).
| libssl-dev is already the newest version (3.0.2-0ubuntu1.6).
| git is already the newest version (1:2.37.2-0ppa1~ubuntu22.04.1).
| The following packages were automatically installed and are no longer required:
|   libamd2 libblas-dev libblas3 libbtf1 libcamd2 libccolamd2 libceres2
|   libcholmod3 libcolamd2 libcxsparse3 libeigen3-dev libgflags-dev libgflags2.2
|   libgfortran5 libgoogle-glog0v5 libgraphblas-dev libgraphblas6 libklu1
|   liblapack-dev liblapack3 libldl2 libmetis5 libmongoose2 librbio2 libsliplu1
|   libspqr2 libsuitesparse-dev libsuitesparseconfig5 libumfpack5
| Use 'sudo apt autoremove' to remove them.
| The following additional packages will be installed:
|   clang-14 cmake-data dh-elpa-helper docutils-common emacsen-common
|   lib32gcc-s1 lib32stdc++6 libarchive13 libc++-14-dev libc++1-14
|   libc++abi-14-dev libc++abi1-14 libc6-i386 libclang-common-14-dev
|   libclang-cpp14 libclang1-14 libgc1 libjs-jquery libjs-sphinxdoc
|   libjs-underscore libjson-perl libjsoncpp25 libllvm14 libobjc-11-dev libobjc4
|   libperlio-gzip-perl libpython3-dev libpython3.10 libpython3.10-dev librhash0
|   libtinyxml2-9 libunwind-14 libunwind-14-dev libuv1 llvm-14-linker-tools
|   python3-dateutil python3-docutils python3-roman python3-rosdep-modules
|   python3-rosdistro-modules python3-rospkg-modules python3-setuptools
|   python3-wheel python3-yaml python3.10-dev sgml-base xml-core
| Suggested packages:
|   clang-14-doc cmake-doc ninja-build cmake-format lrzip docutils-doc
|   fonts-linuxlibertine | ttf-linux-libertine texlive-lang-french
|   texlive-latex-base texlive-latex-recommended python-setuptools-doc
|   sgml-base-doc debhelper
| Recommended packages:
|   llvm-14-dev libgd-gd2-perl libboost-regex-dev libboost-dev
|   libboost-date-time-dev javascript-common libjson-xs-perl libpaper-utils
|   python3-pil python3-pygments
| The following packages will be REMOVED:
|   libceres-dev libgoogle-glog-dev libunwind-dev
| The following NEW packages will be installed:
|   build-essential clang clang-14 cmake cmake-data dh-elpa-helper
|   docutils-common emacsen-common lcov lib32gcc-s1 lib32stdc++6 libarchive13
|   libasio-dev libc++-14-dev libc++-dev libc++1-14 libc++abi-14-dev
|   libc++abi-dev libc++abi1-14 libc6-i386 libclang-common-14-dev libclang-cpp14
|   libclang1-14 libgc1 libjs-jquery libjs-sphinxdoc libjs-underscore
|   libjson-perl libjsoncpp25 libllvm14 libobjc-11-dev libobjc4
|   libperlio-gzip-perl libpython3-dev libpython3.10 libpython3.10-dev librhash0
|   libtinyxml2-9 libtinyxml2-dev libunwind-14 libunwind-14-dev libuv1
|   llvm-14-linker-tools python3-catkin-pkg-modules python3-dateutil python3-dev
|   python3-docutils python3-pip python3-roman python3-rosdep
|   python3-rosdep-modules python3-rosdistro-modules python3-rospkg-modules
|   python3-setuptools python3-vcstool python3-wheel python3-yaml python3.10-dev
|   sgml-base xml-core
| 0 upgraded, 60 newly installed, 3 to remove and 8 not upgraded.

If installed after, we get the conflict.

Hit:1 http://security.ubuntu.com/ubuntu jammy-security InRelease
Hit:2 https://ppa.launchpadcontent.net/git-core/ppa/ubuntu jammy InRelease
Hit:3 http://archive.ubuntu.com/ubuntu jammy InRelease
Hit:4 https://packages.microsoft.com/ubuntu/22.04/prod jammy InRelease
Hit:5 http://archive.ubuntu.com/ubuntu jammy-updates InRelease
Hit:6 http://archive.ubuntu.com/ubuntu jammy-backports InRelease
Hit:7 http://packages.ros.org/ros2/ubuntu jammy InRelease
Hit:8 https://packagecloud.io/github/git-lfs/ubuntu jammy InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
| 8 packages can be upgraded. Run 'apt list --upgradable' to see them.
| W: http://packages.ros.org/ros2/ubuntu/dists/jammy/InRelease: Key is stored in legacy trusted.gpg keyring (/etc/apt/trusted.gpg), see the DEPRECATION section in apt-key(8) for details.
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
| Starting pkgProblemResolver with broken count: 1
| Starting 2 pkgProblemResolver with broken count: 1
| Investigating (0) libunwind-14-dev:amd64 < 1:14.0.0-1ubuntu1 @ii K Ib >
| Broken libunwind-14-dev:amd64 Breaks on libunwind-dev:amd64 < none -> 1.3.2-2build2 @un puN >
|   Considering libunwind-dev:amd64 -1 as a solution to libunwind-14-dev:amd64 2
| Done
| 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:
|  libunwind-14-dev : Breaks: libunwind-dev but 1.3.2-2build2 is to be installed
| E: Error, pkgProblemResolver::Resolve generated breaks, this may be caused by held packages.

Reverse dependencies analysis and conflict path:
In the ros-tooling/setup-ros@v0.3 we are asking to install
libc++-dev --> libc++-14-dev --> libunwind-14-dev
but one of the direct dependences of rmf_traffic_editor is:
rmf_traffic_editor --> libceres-dev --> libgoogle-glog-dev --> libunwind-dev

Minimum example of the conflict: try to install both packages in an ubuntu 22.04:
apt update; apt install libc++-dev libceres-dev

Possible solutions:

From what I understand this should be solved as of ros-tooling/setup-ros#506 ?

Still an issue in 2024

Still an issue in 2024

I don't think this is still an issue. Could you share details of your setup and commands you ran to encounter the error?
rosdep is able to resolve libceres-dev in the defined platforms. In fact we wouldn't be able to build binaries of rmf_traffic_editor if the dependency cannot be resolved. But you can run sudo apt install ros-humble-rmf-traffic-editor to install the binary (assuming you're setup to install ROS packages).

I installed humble on my system. Now I am trying to install libceres-dev via apt-get and I get the same unmet dependencies message as O.P.

Sanity check, try running rosdep update first

or run sudo apt install -f

Please also post your terminal logs when you attempt to do sudo apt install libceres-dev

Since we are using the official debian released libceres-dev, https://packages.ubuntu.com/jammy/libceres-dev, another suspicion is that you have a pinned version of one of the dependencies of libceres-dev, which prevents the simple apt install command to update its dependencies, the error logs will provide some clues

image

I dont think I have anything pinned but ill check

Edit: Nothing is pinned on my system

image

Unfortunately, there may be something else on your system that is preventing the installation of libceres-dev, and not anything related to this issue.

You can verify with a fresh ros:humble-ros-base-jammy docker image that libceres-dev installs without issue via apt install, I'm using distrobox

distrobox create -n test --image ros:humble-ros-base-jammy
distrobox enter test

sudo apt update
sudo apt install libceres-dev

image

The last resort would be to try on a fresh new installation of ubuntu 22.04

ok thanks for your feedback