DFKI-NI / mir_robot

ROS support for the MiR Robots. This is a community project to use the MiR Robots with ROS. It is not affiliated with Mobile Industrial Robots.
BSD 3-Clause "New" or "Revised" License
231 stars 157 forks source link

Install all dependencies in docker-file using apt #121

Closed brean closed 1 year ago

brean commented 1 year ago

I recommend installing all dependencies in docker-file using apt, this way the docker-cache could be used which reduces the rebuild time by a lot which is especially useful while having bad internet connection.

On the negative side it would add a lot of lines to the Dockerfile and would make reading it harder, also the dependencies might change in the future, so I am not presenting a pr directly. It would look something like this:

# install (nearly) all requirements for gazebo and autonomous navigation so we can use the docker-cache and re-building does not take forever
RUN apt-get update -qq \
    && apt-get install -y --no-install-recommends \
        ros-noetic-amcl \
        ros-noetic-diff-drive-controller \
        ros-noetic-gazebo-plugins \
        ros-noetic-gazebo-ros-control \
        ros-noetic-hector-gazebo-plugins \
        ros-noetic-joint-state-controller \
        ros-noetic-joint-state-publisher \
        ros-noetic-joint-state-publisher-gui \
        ros-noetic-position-controllers \
        ros-noetic-robot-state-publisher \
        ros-noetic-rviz \
        ros-noetic-urdf \
        ros-noetic-xacro \
        ros-noetic-move-base-msgs \
        python3-websocket \
        ros-noetic-rospy-message-converter \
        ros-noetic-costmap-queue \
        ros-noetic-dwb-critics \
        ros-noetic-dwb-local-planner \
        ros-noetic-nav-2d-msgs \
        ros-noetic-nav-2d-utils \
        ros-noetic-nav-core2 \
        ros-noetic-nav-grid-iterators \
        python3-matplotlib \
        ros-noetic-dwa-local-planner \
        ros-noetic-dwb-plugins \
        ros-noetic-hector-mapping \
        ros-noetic-map-server \
        ros-noetic-move-base \
        ros-noetic-nav-core-adapter \
        ros-noetic-fake-localization \
        ros-noetic-gazebo-ros \
        ros-noetic-robot-localization \
        ros-noetic-rqt-robot-steering \
        ros-noetic-costmap-converter \
        ros-noetic-libg2o \
        ros-noetic-mbf-abstract-core \
        ros-noetic-mbf-costmap-core \
        ros-noetic-mbf-msgs \
        ros-noetic-mbf-utility \
        ros-noetic-teb-local-planner \
        ros-noetic-sbpl-lattice-planner \
        ros-noetic-actionlib \
        ros-noetic-controller-interface \
        ros-noetic-controller-manager-msgs \
        ros-noetic-hardware-interface \
        ros-noetic-controller-manager \
        ros-noetic-control-msgs \
        ros-noetic-realtime-tools \
        ros-noetic-urdf \
        libyaml-cpp-dev \
        libyaml-cpp0.6 \
        ros-noetic-bond \
        ros-noetic-bondcpp \
        ros-noetic-camera-calibration-parsers \
        ros-noetic-camera-info-manager \
        ros-noetic-gazebo-ros \
        ros-noetic-image-transport \
        ros-noetic-nodelet \
        ros-noetic-polled-camera \
        ros-noetic-smclib \
        ros-noetic-control-toolbox \
        ros-noetic-joint-limits-interface \
        ros-noetic-transmission-interface \
        ros-noetic-geographic-msgs ros-noetic-uuid-msgs \
        ros-noetic-joint-state-controller \
        ros-noetic-sbpl \
        adwaita-icon-theme \
        alsa-topology-conf \
        alsa-ucm-conf \
        at-spi2-core \
        autoconf \
        automake \
        autotools-dev \
        comerr-dev \
        cpp-8 \
        dbus \
        dbus-user-session \
        dconf-gsettings-backend \
        dconf-service \
        dmsetup \
        file \
        fontconfig \
        fontconfig-config \
        fonts-dejavu-core \
        fonts-liberation \
        freeglut3 \
        freeglut3-dev \
        gazebo11 \
        gazebo11-common \
        gazebo11-plugin-base \
        gcc-8 \
        gdal-data \
        gfortran \
        gfortran-8 \
        gfortran-9 \
        gir1.2-glib-2.0 \
        glib-networking \
        glib-networking-common \
        glib-networking-services \
        graphviz \
        gsettings-desktop-schemas \
        gtk-update-icon-cache \
        hdf5-helpers \
        hicolor-icon-theme \
        humanity-icon-theme \
        i965-va-driver \
        ibverbs-providers \
        ignition-tools \
        intel-media-va-driver \
        krb5-multidev \
        libaacs0 \
        libaec-dev \
        libaec0 \
        libann0 \
        libaom0 \
        libapparmor1 \
        libargon2-1 \
        libarmadillo-dev \
        libarmadillo9 \
        libarpack2 \
        libarpack2-dev \
        libasound2 \
        libasound2-data \
        libass9 \
        libassimp-dev \
        libassimp5 \
        libasyncns0 \
        libatk-bridge2.0-0 \
        libatk1.0-0 \
        libatk1.0-data \
        libatspi2.0-0 \
        libavahi-client3 \
        libavahi-common-data \
        libavahi-common3 \
        libavc1394-0 \
        libavcodec-dev \
        libavcodec58 \
        libavdevice-dev \
        libavdevice58 \
        libavfilter-dev \
        libavfilter7 \
        libavformat-dev \
        libavformat58 \
        libavutil-dev \
        libavutil56 \
        libbdplus0 \
        libblas-dev \
        libblkid-dev \
        libbluray2 \
        libboost-all-dev \
        libboost-atomic-dev \
        libboost-container-dev \
        libboost-container1.71-dev \
        libboost-container1.71.0 \
        libboost-context-dev \
        libboost-context1.71-dev \
        libboost-context1.71.0 \
        libboost-coroutine-dev \
        libboost-coroutine1.71-dev \
        libboost-coroutine1.71.0 \
        libboost-exception-dev \
        libboost-exception1.71-dev \
        libboost-fiber-dev \
        libboost-fiber1.71-dev \
        libboost-fiber1.71.0 \
        libboost-graph-dev \
        libboost-graph-parallel-dev \
        libboost-graph-parallel1.71-dev \
        libboost-graph-parallel1.71.0 \
        libboost-graph1.71-dev \
        libboost-graph1.71.0 \
        libboost-iostreams-dev \
        libboost-iostreams1.71-dev \
        libboost-iostreams1.71.0 \
        libboost-locale-dev \
        libboost-locale1.71-dev \
        libboost-locale1.71.0 \
        libboost-log-dev \
        libboost-log1.71-dev \
        libboost-log1.71.0 \
        libboost-math-dev \
        libboost-math1.71-dev \
        libboost-math1.71.0 \
        libboost-mpi-dev \
        libboost-mpi-python-dev \
        libboost-mpi-python1.71-dev \
        libboost-mpi-python1.71.0 \
        libboost-mpi1.71-dev \
        libboost-mpi1.71.0 \
        libboost-numpy-dev \
        libboost-numpy1.71-dev \
        libboost-numpy1.71.0 \
        libboost-python-dev \
        libboost-python1.71-dev \
        libboost-python1.71.0 \
        libboost-random-dev \
        libboost-random1.71-dev \
        libboost-random1.71.0 \
        libboost-serialization-dev \
        libboost-stacktrace-dev \
        libboost-stacktrace1.71-dev \
        libboost-stacktrace1.71.0 \
        libboost-test-dev \
        libboost-test1.71-dev \
        libboost-test1.71.0 \
        libboost-timer-dev \
        libboost-timer1.71-dev \
        libboost-timer1.71.0 \
        libboost-tools-dev \
        libboost-type-erasure-dev \
        libboost-type-erasure1.71-dev \
        libboost-type-erasure1.71.0 \
        libboost-wave-dev \
        libboost-wave1.71-dev \
        libboost-wave1.71.0 \
        libboost1.71-tools-dev \
        libbs2b0 \
        libbullet-dev \
        libbullet2.88 \
        libcaca0 \
        libcaf-openmpi-3 \
        libcairo-gobject2 \
        libcairo2 \
        libcap2 \
        libcbor0.6 \
        libccd-dev \
        libccd2 \
        libcdio-cdda2 \
        libcdio-paranoia2 \
        libcdio18 \
        libcdt5 \
        libcfitsio-dev \
        libcfitsio-doc \
        libcfitsio8 \
        libcgraph6 \
        libcharls-dev \
        libcharls2 \
        libchromaprint1 \
        libcoarrays-dev \
        libcoarrays-openmpi-dev \
        libcodec2-0.9 \
        libcolord2 \
        libcryptsetup12 \
        libcups2 \
        libcurl4-openssl-dev \
        libdap-dev \
        libdap25 \
        libdapclient6v5 \
        libdapserver7v5 \
        libdart-collision-bullet-dev \
        libdart-collision-ode-dev \
        libdart-dev \
        libdart-external-ikfast-dev \
        libdart-external-odelcpsolver-dev \
        libdart-utils-dev \
        libdart-utils-urdf-dev \
        libdart6 \
        libdart6-collision-bullet \
        libdart6-collision-ode \
        libdart6-external-odelcpsolver \
        libdart6-utils \
        libdart6-utils-urdf \
        libdatrie1 \
        libdbus-1-3 \
        libdc1394-22 \
        libdconf1 \
        libdevmapper1.02.1 \
        libdouble-conversion3 \
        libdrm-amdgpu1 \
        libdrm-common \
        libdrm-intel1 \
        libdrm-nouveau2 \
        libdrm-radeon1 \
        libdrm2 \
        libegl-dev \
        libegl-mesa0 \
        libegl1 \
        libeigen3-dev \
        libelf1 \
        libepoxy0 \
        libepsilon-dev \
        libepsilon1 \
        libevdev2 \
        libevent-2.1-7 \
        libevent-core-2.1-7 \
        libevent-dev \
        libevent-extra-2.1-7 \
        libevent-openssl-2.1-7 \
        libevent-pthreads-2.1-7 \
        libfabric1 \
        libfcl-dev \
        libfcl0.5 \
        libffi-dev \
        libfftw3-double3 \
        libfido2-1 \
        libflac8 \
        libflann-dev \
        libflann1.9 \
        libflite1 \
        libfontconfig1 \
        libfreeimage-dev \
        libfreeimage3 \
        libfreetype6 \
        libfreexl-dev \
        libfreexl1 \
        libfribidi0 \
        libfyba-dev \
        libfyba0 \
        libgazebo11 \
        libgazebo11-dev \
        libgbm1 \
        libgcc-8-dev \
        libgd3 \
        libgdal-dev \
        libgdal26 \
        libgdk-pixbuf2.0-0 \
        libgdk-pixbuf2.0-bin \
        libgdk-pixbuf2.0-common \
        libgeos-3.8.0 \
        libgeos-c1v5 \
        libgeos-dev \
        libgeotiff-dev \
        libgeotiff5 \
        libgfortran-8-dev \
        libgfortran-9-dev \
        libgif-dev \
        libgif7 \
        libgirepository-1.0-1 \
        libgl-dev \
        libgl1 \
        libgl1-mesa-dri \
        libglapi-mesa \
        libglib2.0-bin \
        libglib2.0-data \
        libglib2.0-dev \
        libglib2.0-dev-bin \
        libglu1-mesa \
        libglu1-mesa-dev \
        libglvnd0 \
        libglx-dev \
        libglx-mesa0 \
        libglx0 \
        libgme0 \
        libgraphite2-3 \
        libgsm1 \
        libgssrpc4 \
        libgtk-3-0 \
        libgtk-3-bin \
        libgtk-3-common \
        libgts-0.7-5 \
        libgts-bin \
        libgts-dev \
        libgudev-1.0-0 \
        libgvc6 \
        libgvpr2 \
        libharfbuzz0b \
        libhdf4-0-alt \
        libhdf4-alt-dev \
        libhdf5-103 \
        libhdf5-cpp-103 \
        libhdf5-dev \
        libhdf5-mpi-dev \
        libhdf5-openmpi-103 \
        libhdf5-openmpi-dev \
        libhwloc-dev \
        libhwloc-plugins \
        libhwloc15 \
        libibverbs-dev \
        libibverbs1 \
        libice-dev \
        libice6 \
        libiec61883-0 \
        libigdgmm11 \
        libignition-cmake2-dev \
        libignition-common3 \
        libignition-common3-av \
        libignition-common3-av-dev \
        libignition-common3-core-dev \
        libignition-common3-dev \
        libignition-common3-events \
        libignition-common3-events-dev \
        libignition-common3-graphics \
        libignition-common3-graphics-dev \
        libignition-common3-profiler \
        libignition-common3-profiler-dev \
        libignition-fuel-tools4 \
        libignition-fuel-tools4-dev \
        libignition-math6 \
        libignition-math6-dev \
        libignition-msgs5 \
        libignition-msgs5-dev \
        libignition-tools-dev \
        libignition-transport8 \
        libignition-transport8-core-dev \
        libignition-transport8-dev \
        libignition-transport8-log \
        libignition-transport8-log-dev \
        libilmbase24 \
        libinput-bin \
        libinput10 \
        libip4tc2 \
        libjack-jackd2-0 \
        libjbig-dev \
        libjbig0 \
        libjpeg-dev \
        libjpeg-turbo8 \
        libjpeg-turbo8-dev \
        libjpeg8 \
        libjpeg8-dev \
        libjson-c-dev \
        libjson-c4 \
        libjson-glib-1.0-0 \
        libjson-glib-1.0-common \
        libjsoncpp-dev \
        libjxr0 \
        libkadm5clnt-mit11 \
        libkadm5srv-mit11 \
        libkdb5-9 \
        libkml-dev \
        libkmlbase1 \
        libkmlconvenience1 \
        libkmldom1 \
        libkmlengine1 \
        libkmlregionator1 \
        libkmlxsd1 \
        libkmod2 \
        libkrb5-dev \
        liblab-gamut1 \
        liblapack-dev \
        liblcms2-2 \
        liblilv-0-0 \
        libllvm12 \
        libltdl-dev \
        liblzma-dev \
        libmagic-mgc \
        libmagic1 \
        libminizip-dev \
        libminizip1 \
        libmount-dev \
        libmp3lame0 \
        libmpg123-0 \
        libmtdev1 \
        libmysofa1 \
        libnetcdf-dev \
        libnetcdf15 \
        libnl-3-200 \
        libnl-3-dev \
        libnl-route-3-200 \
        libnl-route-3-dev \
        libnorm-dev \
        libnorm1 \
        libnspr4 \
        libnss-systemd \
        libnss3 \
        libnuma-dev \
        libnuma1 \
        liboctomap-dev \
        liboctomap1.9 \
        libode-dev \
        libode8 \
        libogdi-dev \
        libogdi4.1 \
        libogg0 \
        libogre-1.9-dev \
        libogre-1.9.0v5 \
        libopenal-data \
        libopenal1 \
        libopenexr24 \
        libopenjp2-7 \
        libopenjp2-7-dev \
        libopenmpi-dev \
        libopenmpi3 \
        libopenmpt0 \
        libopus0 \
        libpam-systemd \
        libpango-1.0-0 \
        libpangocairo-1.0-0 \
        libpangoft2-1.0-0 \
        libpathplan4 \
        libpciaccess0 \
        libpcre2-16-0 \
        libpcre2-32-0 \
        libpcre2-dev \
        libpcre2-posix2 \
        libpgm-5.2-0 \
        libpgm-dev \
        libpixman-1-0 \
        libpmix2 \
        libpng-dev \
        libpng-tools \
        libpng16-16 \
        libpoppler-dev \
        libpoppler-private-dev \
        libpoppler97 \
        libpostproc-dev \
        libpostproc55 \
        libpq-dev \
        libpq5 \
        libproj-dev \
        libproj15 \
        libprotobuf-dev \
        libprotobuf-lite17 \
        libprotobuf17 \
        libprotoc-dev \
        libprotoc17 \
        libproxy1v5 \
        libpsm-infinipath1 \
        libpsm2-2 \
        libpthread-stubs0-dev \
        libpulse0 \
        libqhull-dev \
        libqhull-r7 \
        libqhull7 \
        libqt5concurrent5 \
        libqt5core5a \
        libqt5dbus5 \
        libqt5designer5 \
        libqt5gui5 \
        libqt5network5 \
        libqt5opengl5 \
        libqt5opengl5-dev \
        libqt5printsupport5 \
        libqt5sql5 \
        libqt5sql5-sqlite \
        libqt5svg5 \
        libqt5test5 \
        libqt5widgets5 \
        libqt5xml5 \
        libqwt-qt5-6 \
        libqwt-qt5-dev \
        libraw1394-11 \
        libraw19 \
        librdmacm1 \
        librest-0.7-0 \
        librsvg2-2 \
        librsvg2-common \
        librubberband2 \
        libsamplerate0 \
        libsdformat9 \
        libsdformat9-dev \
        libsdl2-2.0-0 \
        libselinux1-dev \
        libsensors-config \
        libsensors5 \
        libsepol1-dev \
        libserd-0-0 \
        libshine3 \
        libsigsegv2 \
        libsimbody-dev \
        libsimbody3.6 \
        libslang2 \
        libsm-dev \
        libsm6 \
        libsnappy1v5 \
        libsndfile1 \
        libsndio7.0 \
        libsodium-dev \
        libsord-0-0 \
        libsoup-gnome2.4-1 \
        libsoup2.4-1 \
        libsoxr0 \
        libspatialite-dev \
        libspatialite7 \
        libspeex1 \
        libspnav0 \
        libsratom-0-0 \
        libssh-gcrypt-4 \
        libsuperlu-dev \
        libsuperlu5 \
        libswresample-dev \
        libswresample3 \
        libswscale-dev \
        libswscale5 \
        libsz2 \
        libtar-dev \
        libtar0 \
        libtbb-dev \
        libtbb2 \
        libthai-data \
        libthai0 \
        libtheora0 \
        libtiff-dev \
        libtiff5 \
        libtiffxx5 \
        libtinyxml-dev \
        libtinyxml2.6.2v5 \
        libtool \
        libtwolame0 \
        liburdfdom-dev \
        liburdfdom-headers-dev \
        liburdfdom-model \
        liburdfdom-model-state \
        liburdfdom-sensor \
        liburdfdom-world \
        liburiparser-dev \
        liburiparser1 \
        libusb-1.0-0 \
        libusb-1.0-0-dev \
        libusb-1.0-doc \
        libva-drm2 \
        libva-x11-2 \
        libva2 \
        libvdpau1 \
        libvidstab1.1 \
        libvorbis0a \
        libvorbisenc2 \
        libvorbisfile3 \
        libvpx6 \
        libvulkan-dev \
        libvulkan1 \
        libwacom-bin \
        libwacom-common \
        libwacom2 \
        libwavpack1 \
        libwayland-client0 \
        libwayland-cursor0 \
        libwayland-egl1 \
        libwayland-server0 \
        libwebp-dev \
        libwebp6 \
        libwebpdemux2 \
        libwebpmux3 \
        libwrap0 \
        libx11-6 \
        libx11-data \
        libx11-dev \
        libx11-xcb1 \
        libx264-155 \
        libx265-179 \
        libxau-dev \
        libxau6 \
        libxaw7 \
        libxcb-dri2-0 \
        libxcb-dri3-0 \
        libxcb-glx0 \
        libxcb-icccm4 \
        libxcb-image0 \
        libxcb-keysyms1 \
        libxcb-present0 \
        libxcb-randr0 \
        libxcb-render-util0 \
        libxcb-render0 \
        libxcb-shape0 \
        libxcb-shm0 \
        libxcb-sync1 \
        libxcb-util1 \
        libxcb-xfixes0 \
        libxcb-xinerama0 \
        libxcb-xinput0 \
        libxcb-xkb1 \
        libxcb1 \
        libxcb1-dev \
        libxcomposite1 \
        libxcursor1 \
        libxdamage1 \
        libxdmcp-dev \
        libxdmcp6 \
        libxerces-c-dev \
        libxerces-c3.2 \
        libxext-dev \
        libxext6 \
        libxfixes-dev \
        libxfixes3 \
        libxi-dev \
        libxi6 \
        libxinerama1 \
        libxkbcommon-x11-0 \
        libxkbcommon0 \
        libxml2-dev \
        libxmu-dev \
        libxmu-headers \
        libxmu6 \
        libxmuu1 \
        libxnvctrl0 \
        libxpm4 \
        libxrandr2 \
        libxrender1 \
        libxshmfence1 \
        libxss1 \
        libxt-dev \
        libxt6 \
        libxtst6 \
        libxv1 \
        libxvidcore4 \
        libxxf86vm1 \
        libyaml-dev \
        libzip-dev \
        libzip5 \
        libzmq3-dev \
        libzmq5 \
        libzstd-dev \
        libzvbi-common \
        libzvbi0 \
        libzzip-0-13 \
        m4 \
        mesa-va-drivers \
        mesa-vdpau-drivers \
        mesa-vulkan-drivers \
        mpi-default-bin \
        mpi-default-dev \
        networkd-dispatcher \
        ocl-icd-libopencl1 \
        odbcinst \
        odbcinst1debian2 \
        openmpi-bin \
        openmpi-common \
        openssh-client \
        poppler-data \
        proj-bin \
        proj-data \
        protobuf-compiler \
        python3-dbus \
        python3-gi \
        qt5-gtk-platformtheme \
        qt5-qmake \
        qt5-qmake-bin \
        qtbase5-dev \
        qtbase5-dev-tools \
        qtchooser \
        qttranslations5-l10n \
        ros-noetic-dynamic-reconfigure \
        ros-noetic-gazebo-dev \
        ros-noetic-gazebo-msgs \
        ros-noetic-tf \
        sdformat9-sdf \
        shared-mime-info \
        systemd \
        systemd-sysv \
        systemd-timesyncd \
        ttf-dejavu-core \
        ubuntu-mono \
        ucf \
        unixodbc-dev \
        va-driver-all \
        vdpau-driver-all \
        x11-common \
        x11proto-core-dev \
        x11proto-dev \
        x11proto-input-dev \
        x11proto-xext-dev \
        xauth \
        xkb-data \
        xorg-sgml-doctools \
        xtrans-dev \
    && rm -rf /var/lib/apt/lists/*
mintar commented 1 year ago

That Dockerfile is a remnant of the old Travis CI, where we used it to build and run the CI tests (because Travis didn't provide an Ubuntu 20.04 installation). After the switch to GitHub actions (#115), it's not used any more.

In the CI use case, we don't want to install all these dependencies up front, because part of the things that the CI tests is that all dependencies are correctly installed via rosdep, and we want it to fail when a build dependency is not correctly listed in the package.xml files.

I've just left the Dockerfile there as a convenience for users, but I don't really want to spend any effort on maintaining it, and I'd like to keep it simple. So I tend to leave it as it is, unless you have a use case that requires changing it.