Skip to content

no install recommends for all apt calls#82

Merged
mikaelarguedas merged 3 commits intomasterfrom
no-install-recommends
Apr 5, 2020
Merged

no install recommends for all apt calls#82
mikaelarguedas merged 3 commits intomasterfrom
no-install-recommends

Conversation

@mikaelarguedas
Copy link
Copy Markdown
Contributor

@mikaelarguedas mikaelarguedas commented Jan 23, 2020

https://discourse.ros.org/t/generating-dev-and-runtime-artefacts-from-ros-packages/12448 reminded me of an old branch adding the use of no-install-recommends. While not providing significant improvement it would still reduce image size by about 10%.

This is what is used elsewhere, e.g. for ROS 2 CI

Name Recommends No recommends
melodic-desktop-full-bionic 2.9GB 2.62GB
melodic-desktop-bionic 2.09GB 1.85GB
melodic-ros-base-bionic 1.26GB 1.14GB
melodic-ros-core-bionic 1.03GB 911MB
----------------------------- ------------ ------------------
eloquent-ros1-bridge 1.4GB 1.27GB
eloquent-desktop-bionic 2.6GB 2.36GB
eloquent-ros-base-bionic 851MB 720MB
eloquent-ros-core-bionic 826MB 695MB

Ideally we would be able to pass something similar to rosdep and reduce the nightly image size. If we could also tell rosdep to install only the exec and build_export depends we could reduce the image size further


One thing unexpected and maybe worth further investigation is how is eloquent-desktop so much bigger than melodic-desktop while desktop includes a lot less features in ROS 2 than ROS 1

@mikaelarguedas mikaelarguedas marked this pull request as ready for review January 24, 2020 21:07

# install requested metapackage
RUN apt-get update && apt-get install -q -y @(' '.join(packages))@
RUN apt-get update && apt-get install -q -y --no-install-recommends @(' '.join(packages))@
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Was this template always missing the && rm -rf /var/lib/apt/lists/*? Where is this template used again?

Copy link
Copy Markdown
Contributor Author

@mikaelarguedas mikaelarguedas Jan 27, 2020

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's not used anywhere in docker_images or docker_templates at the moment. But I don't know what it was used for before

@ruffsl
Copy link
Copy Markdown
Member

ruffsl commented Jan 27, 2020

Could we compare the delta of package installed? I'd only like to skim over what this would remove, just to be sure there isn't anything we were implicitly relying on, or should explicitly install instead.

@mikaelarguedas
Copy link
Copy Markdown
Contributor Author

I don't have a list for the various images
The generated Dockerfiles are at osrf/docker_images#357
We can build these images and compare the output of apt list --installed with the images currently on master.

For example for osrf/ros:melodic-desktop-full-bionic
at-spi2-core/bionic,now 2.28.0-1 amd64 
autoconf/bionic,now 2.69-11 all 
automake/bionic,now 1:1.15.1-3ubuntu2 all 
autopoint/bionic-updates,bionic-security,now 0.19.8.1-6ubuntu0.3 all 
autotools-dev/bionic,now 20180224.1 all 
avahi-daemon/bionic-updates,bionic-security,now 0.7-3.1ubuntu1.2 amd64 
bind9-host/bionic-updates,bionic-security,now 1:9.11.3+dfsg-1ubuntu1.11 amd64 
binfmt-support/bionic,now 2.1.8-2 amd64 
blt/bionic,now 2.5.3+dfsg-4 amd64 
bsdmainutils/bionic,now 11.1.2ubuntu1 amd64 
build-essential/bionic,now 12.4ubuntu1 amd64 
bzip2-doc/bionic-updates,bionic-security,now 1.0.6-8.1ubuntu0.2 all 
cpp/bionic-updates,bionic-security,now 4:7.4.0-1ubuntu2.3 amd64 
cpp-7/bionic-updates,bionic-security,now 7.4.0-1ubuntu1~18.04.1 amd64 
dbus/bionic-updates,bionic-security,now 1.12.2-1ubuntu1.1 amd64 
debhelper/bionic-updates,now 11.1.6ubuntu2 all 
dh-autoreconf/bionic,now 17 all 
dh-strip-nondeterminism/bionic,now 0.040-1.1~build1 all 
dmsetup/bionic-updates,now 2:1.02.145-4.1ubuntu3.18.04.2 amd64 
fakeroot/bionic,now 1.22-2ubuntu1 amd64 
file/bionic-updates,bionic-security,now 1:5.32-2ubuntu0.3 amd64 
fltk1.3-doc/bionic,now 1.3.4-6 all 
fluid/bionic,now 1.3.4-6 amd64 
fonts-lato/bionic,now 2.0-2 all 
g++/bionic-updates,bionic-security,now 4:7.4.0-1ubuntu2.3 amd64 
g++-7/bionic-updates,bionic-security,now 7.4.0-1ubuntu1~18.04.1 amd64 
gcc/bionic-updates,bionic-security,now 4:7.4.0-1ubuntu2.3 amd64 
gcc-7/bionic-updates,bionic-security,now 7.4.0-1ubuntu1~18.04.1 amd64 
geoclue-2.0/bionic,now 2.4.7-1ubuntu1 amd64 
geoip-database/bionic,now 20180315-1 all 
gettext/bionic-updates,bionic-security,now 0.19.8.1-6ubuntu0.3 amd64 
gettext-base/bionic-updates,bionic-security,now 0.19.8.1-6ubuntu0.3 amd64 
groff-base/bionic,now 1.22.3-10 amd64 
gstreamer1.0-plugins-base/bionic-updates,now 1.14.5-0ubuntu1~18.04.1 amd64 
i965-va-driver/bionic,now 2.1.0-0ubuntu1 amd64 
iio-sensor-proxy/bionic,now 2.4-2 amd64 
intltool-debian/bionic,now 0.35.0+20060710.4 all 
javascript-common/bionic,now 11 all 
libaacs0/bionic,now 0.9.0-1 amd64 
libalgorithm-diff-perl/bionic,now 1.19.03-1 all 
libalgorithm-diff-xs-perl/bionic,now 0.04-5 amd64 
libalgorithm-merge-perl/bionic,now 0.08-3 all 
libapparmor1/bionic-updates,bionic-security,now 2.12-4ubuntu5.1 amd64 
libarchive-cpio-perl/bionic,now 0.10-1 all 
libarchive-zip-perl/bionic-updates,bionic-security,now 1.60-1ubuntu0.1 all 
libargon2-0/bionic,now 0~20161029-1.1 amd64 
libasan4/bionic-updates,bionic-security,now 7.4.0-1ubuntu1~18.04.1 amd64 
libavahi-core7/bionic-updates,bionic-security,now 0.7-3.1ubuntu1.2 amd64 
libavahi-glib1/bionic-updates,bionic-security,now 0.7-3.1ubuntu1.2 amd64 
libbdplus0/bionic,now 0.1.2-2 amd64 
libbind9-160/bionic-updates,bionic-security,now 1:9.11.3+dfsg-1ubuntu1.11 amd64 
libcc1-0/bionic-updates,bionic-security,now 8.3.0-6ubuntu1~18.04.1 amd64 
libcdparanoia0/bionic,now 3.10.2+debian-13 amd64 
libcilkrts5/bionic-updates,bionic-security,now 7.4.0-1ubuntu1~18.04.1 amd64 
libcryptsetup12/bionic-updates,now 2:2.0.2-1ubuntu1.1 amd64 
libdaemon0/bionic,now 0.14-6 amd64 
libdevmapper1.02.1/bionic-updates,now 2:1.02.145-4.1ubuntu3.18.04.2 amd64 
libdns1100/bionic-updates,bionic-security,now 1:9.11.3+dfsg-1ubuntu1.11 amd64 
libexif-doc/bionic,now 0.6.21-4 all 
libfakeroot/bionic,now 1.22-2ubuntu1 amd64 
libfile-fcntllock-perl/bionic,now 0.22-3build2 amd64 
libfile-stripnondeterminism-perl/bionic,now 0.040-1.1~build1 all 
libfontenc1/bionic,now 1:1.1.3-1 amd64 
libgail-common/bionic,now 2.24.32-1ubuntu1 amd64 
libgail18/bionic,now 2.24.32-1ubuntu1 amd64 
libgcc-7-dev/bionic-updates,bionic-security,now 7.4.0-1ubuntu1~18.04.1 amd64 
libgdk-pixbuf2.0-bin/bionic,now 2.36.11-2 amd64 
libgeoclue-2-0/bionic,now 2.4.7-1ubuntu1 amd64 
libgeoip1/bionic,now 1.6.12-1 amd64 
libgl1-mesa-glx/bionic-updates,now 19.2.1-1ubuntu1~18.04.1 amd64 
libgphoto2-l10n/bionic,now 2.5.16-2 all 
libgtk-3-bin/bionic-updates,now 3.22.30-1ubuntu4 amd64 
libgtk2.0-bin/bionic,now 2.24.32-1ubuntu1 amd64 
libgts-bin/bionic,now 0.7.6+darcs121130-4 amd64 
libidn11/bionic-updates,now 1.33-2.1ubuntu1.2 amd64 
libip4tc0/bionic,now 1.6.1-2ubuntu2 amd64 
libisc169/bionic-updates,bionic-security,now 1:9.11.3+dfsg-1ubuntu1.11 amd64 
libisccc160/bionic-updates,bionic-security,now 1:9.11.3+dfsg-1ubuntu1.11 amd64 
libisccfg160/bionic-updates,bionic-security,now 1:9.11.3+dfsg-1ubuntu1.11 amd64 
libisl19/bionic,now 0.19-1 amd64 
libkmod2/bionic-updates,now 24-1ubuntu3.2 amd64 
liblocale-gettext-perl/bionic,now 1.07-3build2 amd64 
liblsan0/bionic-updates,bionic-security,now 8.3.0-6ubuntu1~18.04.1 amd64 
liblwres160/bionic-updates,bionic-security,now 1:9.11.3+dfsg-1ubuntu1.11 amd64 
libmagic-mgc/bionic-updates,bionic-security,now 1:5.32-2ubuntu0.3 amd64 
libmagic1/bionic-updates,bionic-security,now 1:5.32-2ubuntu0.3 amd64 
libmail-sendmail-perl/bionic,now 0.80-1 all 
libmbim-glib4/bionic-updates,now 1.18.0-1~ubuntu18.04.1 amd64 
libmbim-proxy/bionic-updates,now 1.18.0-1~ubuntu18.04.1 amd64 
libmm-glib0/bionic-updates,now 1.10.0-1~ubuntu18.04.2 amd64 
libmpc3/bionic,now 1.1.0-1 amd64 
libmpfr6/bionic,now 4.0.1-1 amd64 
libmpx2/bionic-updates,bionic-security,now 8.3.0-6ubuntu1~18.04.1 amd64 
libnl-genl-3-200/bionic,now 3.2.29-0ubuntu3 amd64 
libnss-mdns/bionic,now 0.10-8ubuntu1 amd64 
libnss-systemd/bionic-updates,now 237-3ubuntu10.33 amd64 
libopenni-sensor-pointclouds0/bionic,now 5.1.0.41.9-1 amd64 
libpam-cap/bionic,now 1:2.25-1.2 amd64 
libpam-systemd/bionic-updates,now 237-3ubuntu10.33 amd64 
libpcsclite1/bionic,now 1.8.23-1 amd64 
libpipeline1/bionic,now 1.5.0-1 amd64 
libpng-tools/bionic-updates,bionic-security,now 1.6.34-1ubuntu0.18.04.2 amd64 
libpolkit-gobject-1-0/bionic-updates,bionic-security,now 0.105-20ubuntu0.18.04.5 amd64 
libqmi-glib5/bionic-updates,now 1.22.0-1.2~ubuntu18.04.1 amd64 
libqmi-proxy/bionic-updates,now 1.22.0-1.2~ubuntu18.04.1 amd64 
libraw1394-tools/bionic,now 2.1.2-1 amd64 
libsasl2-modules/bionic,now 2.1.27~101-g0780600+dfsg-3ubuntu2 amd64 
libsigsegv2/bionic,now 2.12-1 amd64 
libstdc++-7-dev/bionic-updates,bionic-security,now 7.4.0-1ubuntu1~18.04.1 amd64 
libsys-hostname-long-perl/bionic,now 1.5-1 all 
libtimedate-perl/bionic,now 2.3000-2 all 
libtool/bionic,now 2.4.6-2 all 
libubsan0/bionic-updates,bionic-security,now 7.4.0-1ubuntu1~18.04.1 amd64 
libusb-1.0-doc/bionic,now 2:1.0.21-2 all 
libutempter0/bionic,now 1.1.6-3 amd64 
libvisual-0.4-0/bionic,now 0.4.0-11 amd64 
libwacom-bin/bionic,now 0.29-1 amd64 
libx11-doc/bionic-updates,now 2:1.6.4-3ubuntu0.2 all 
libxmuu1/bionic,now 2:1.1.2-2 amd64 
libxtst6/bionic,now 2:1.2.3-1 amd64 
libxxf86dga1/bionic,now 2:1.1.4-1 amd64 
m4/bionic,now 1.4.18-1 amd64 
man-db/bionic-updates,now 2.8.3-2ubuntu0.1 amd64 
manpages/bionic,now 4.15-1 all 
manpages-dev/bionic,now 4.15-1 all 
mesa-va-drivers/bionic-updates,now 19.2.1-1ubuntu1~18.04.1 amd64 
mesa-vdpau-drivers/bionic-updates,now 19.2.1-1ubuntu1~18.04.1 amd64 
modemmanager/bionic-updates,now 1.10.0-1~ubuntu18.04.2 amd64 
networkd-dispatcher/bionic-updates,now 1.7-0ubuntu3.3 all 
notification-daemon/bionic,now 3.20.0-3 amd64 
opencv-data/bionic-updates,bionic-security,now 3.2.0+dfsg-4ubuntu0.1 all 
openni-utils/bionic,now 1.5.4.0-14build1 amd64 
po-debconf/bionic,now 1.0.20 all 
poppler-data/bionic,now 0.4.8-2 all 
proj-bin/bionic,now 4.9.3-2 amd64 
python-bs4/bionic,now 4.6.0-1 all 
python-chardet/bionic,now 3.0.4-1 all 
python-click/bionic,now 6.7-3 all 
python-colorama/bionic,now 0.3.7-1 all 
python-html5lib/bionic,now 0.999999999-1 all 
python-olefile/bionic,now 0.45.1-1 all 
python-pam/bionic,now 0.4.2-13.2ubuntu4 amd64 
python-serial/bionic,now 3.4-2 all 
python-tk/bionic-updates,now 2.7.17-1~18.04 amd64 
python-webencodings/bionic,now 0.5-2 all 
python3-dbus/bionic,now 1.2.6-1 amd64 
python3-gi/bionic-updates,now 3.26.1-2ubuntu1 amd64 
qt5-gtk-platformtheme/bionic-updates,now 5.9.5+dfsg-0ubuntu2.4 amd64 
qttranslations5-l10n/bionic,now 5.9.5-0ubuntu1 all 
systemd/bionic-updates,now 237-3ubuntu10.33 amd64 
systemd-sysv/bionic-updates,now 237-3ubuntu10.33 amd64 
tk8.6-blt2.5/bionic,now 2.5.3+dfsg-4 amd64 
udev/bionic-updates,now 237-3ubuntu10.33 amd64 
unzip/bionic,now 6.0-21ubuntu1 amd64 
usb-modeswitch/bionic,now 2.5.2+repack0-2ubuntu1 amd64 
usb-modeswitch-data/bionic,now 20170806-2 all 
va-driver-all/bionic,now 2.1.0-3 amd64 
vdpau-driver-all/bionic,now 1.1.1-3ubuntu1 amd64 
wpasupplicant/bionic-updates,bionic-security,now 2:2.6-15ubuntu2.5 amd64 
x11-utils/bionic,now 7.7+3build1 amd64 
xbitmaps/bionic,now 1.1.1-2 all 
xdg-user-dirs/bionic,now 0.17-1ubuntu1 amd64 
xterm/bionic,now 330-1ubuntu2 amd64 
zip/bionic,now 3.0-11build1 amd64 

@mikaelarguedas
Copy link
Copy Markdown
Contributor Author

@ruffsl I remember we chatted about this offline a couple days ago. Do you remember what the next step is ?

All I remember was mentioning the fact that in ROS 1 build-essentials is not installed by default and just mentioned in the installation instructions for people who want to build packages

Do you remember anything else?

@ruffsl
Copy link
Copy Markdown
Member

ruffsl commented Feb 21, 2020

Do you remember what the next step is ?

I think we wanted to smoke test this change by building some of the existing Dockerfiles in the wild, like the Navigation2 or MoveIt2 repos, to see what else might be removed that was for granted prior.

@mikaelarguedas
Copy link
Copy Markdown
Contributor Author

I think we wanted to smoke test this change by building some of the existing Dockerfiles in the wild, like the Navigation2 or MoveIt2 repos, to see what else might be removed that was for granted prior.

oh right !

Based on previous comment: the docker image will not include build-essential anymore, so it will not include a C++ compiler, these images building code will need to now install e.g. build-essential or gcc to be able to build packages. Which bring us back to the question: in which image (if any) should the building tools be provided: osrf/docker_images#375 ?

@ruffsl
Copy link
Copy Markdown
Member

ruffsl commented Feb 21, 2020

I think it makes sense to install build essentials in the base tag, otherwise there's little differentiation both in size and in included features between the core and base tags. Perhaps we should roll these pull requests into one, so that we can jointly test the minimal install footprint needed to retain convenient compilation features in the base tag. E.g. does build essentials include CMake?

@mikaelarguedas
Copy link
Copy Markdown
Contributor Author

Yeah that would make sense.

there's little differentiation both in size and in included features between the core and base tags

That is true especially since https://github.com/ros/metapackages/pull/24/files

My only concern is how do you carry the information to users. One issue with the mapping to metapackages is that as a user I assume that ros_base provides me just ros_core + ros_base.

But to be fair documentation should be enough, people can never infer exactly what features/packages are included in a given image.

E.g. does build essentials include CMake?

no, but cmake is a dependency of many packages even in the core so it'll always be there.
Doesnt prevent us from listing it explicitly if we prefer.

Perhaps we should roll these pull requests into one, so that we can jointly test the minimal install footprint needed to retain convenient compilation features in the base tag

Fair enough I'll push a version with build-essentials that we can use for testing

@ruffsl
Copy link
Copy Markdown
Member

ruffsl commented Feb 21, 2020

My only concern is how do you carry the information to users. One issue with the mapping to metapackages is that as a user I assume that ros_base provides me just ros_core + ros_base.

The base tag is also pointed to by the unqualified distro tag, making it more default like, so I think it gets some exceptional status.

But to be fair documentation should be enough, people can never infer exactly what features/packages are included in a given image.

Other todo then to update in the readme and library doc PR when we merge.

@mikaelarguedas
Copy link
Copy Markdown
Contributor Author

The base tag is also pointed to by the unqualified distro tag, making it more default like, so I think it gets some exceptional status.

Yeah that's fair

Pushed a version installing build-essential in ros-base and using no-install-recommends everywhere at osrf/docker_images#357

The good news is that both moveit ROS 1, moveit 2 ROS 2 and navigation2 ROS 2 built successfully.

The not-as-good news is that we didnt save any space in the ros_base image
New image sizes:

Name Recommends No recommends
melodic-desktop-full-bionic 2.9GB 2.73GB
melodic-desktop-bionic 2.09GB 1.96GB
melodic-ros-base-bionic 1.26GB 1.25GB
melodic-ros-core-bionic 1.03GB 911MB
----------------------------- ------------ ------------------
eloquent-ros1-bridge 1.4GB 1.36GB
eloquent-desktop-bionic 2.6GB 2.45GB
eloquent-ros-base-bionic 851MB 828MB
eloquent-ros-core-bionic 826MB 691MB

@ruffsl
Copy link
Copy Markdown
Member

ruffsl commented Feb 21, 2020

The not-as-good news is that we didnt save any space in the ros_base image

Ooph... That curbs my enthusiasm. Perhaps its only worth it to apply all of this to just the core tag, and leave the other images alone, other than moving the existing tooling to base. Then at least the minimal tag gets the benefit without any possible changes downstream. Or does --no-recommends on installing a dependency still reduce what downstream packages install with out --no-recommends later on.

@mikaelarguedas
Copy link
Copy Markdown
Contributor Author

It does still save space on core and downstream images. it's just that the space saved in core/base was mostly due to build-essential. We still save ~150MB on the big desktop images. So I'd say it's worth keeping.

Or does --no-recommends on installing a dependency still reduce what downstream packages install with out --no-recommends later on.

This option only applies to the command beng currently ran. It just says to install only the hard dependencies and not the recommended or suggested ones (suggested ignored by default). If users
install anything themselves they will get the "Recommends" of the package they try to install except if they add the --no-install-recommends flag themselves.

An example of this is rosdep install. There is no way ATM to specify --no-install-recommends to rosdep install so any package installed by rosdep will also have its' recommends installed

@ruffsl
Copy link
Copy Markdown
Member

ruffsl commented Feb 22, 2020

I think I was asking: are recommended dependencies recursively installed for dependencies already installed, or only installs the recommended dependencies declared in the packages to be installed. I'm guessing the later is the case, as --no-install-recommends would be to easily undone otherwise.

@mikaelarguedas
Copy link
Copy Markdown
Contributor Author

are recommended dependencies recursively installed for dependencies already installed, or only installs the recommended dependencies declared in the packages to be installed. I'm guessing the later is the case

👍 the latter is the case.
One way to remove already installed recommended packages is

apt-get autoremove -o APT::Autoremove::RecommendsImportant=0

But it's not granular, it just removes all packages that were installed as "Recommended"

@mikaelarguedas
Copy link
Copy Markdown
Contributor Author

This and osrf/docker_images#357 have been updated to install the ros tools and build-essential in ros-base.

I confirmed that the following images build successfully on top:

  • navigation2
  • moveit
  • moveit2

Package diffferences between ros-base and ros-base-no-recomments

Eloquent
fakeroot/bionic,now 1.22-2ubuntu1 amd64 [installed,automatic]
libalgorithm-diff-perl/bionic,now 1.19.03-1 all [installed,automatic]
libalgorithm-diff-xs-perl/bionic,now 0.04-5 amd64 [installed,automatic]
libalgorithm-merge-perl/bionic,now 0.08-3 all [installed,automatic]
libfakeroot/bionic,now 1.22-2ubuntu1 amd64 [installed,automatic]
libfile-fcntllock-perl/bionic,now 0.22-3build2 amd64 [installed,automatic]
liblocale-gettext-perl/bionic,now 1.07-3build2 amd64 [installed,automatic]
libsasl2-modules/bionic-updates,bionic-security,now 2.1.27~101-g0780600+dfsg-3ubuntu2.1 amd64 [installed,automatic]
manpages/bionic,now 4.15-1 all [installed,automatic]
manpages-dev/bionic,now 4.15-1 all [installed,automatic]
pyflakes/bionic,now 1.6.0-1 all [installed,automatic]
pyflakes3/bionic,now 1.6.0-1 all [installed,automatic]
python-pyflakes/bionic,now 1.6.0-1 all [installed,automatic]
python3-bs4/bionic,now 4.6.0-1 all [installed,automatic]
python3-chardet/bionic,now 3.0.4-1 all [installed,automatic]
python3-html5lib/bionic,now 0.999999999-1 all [installed,automatic]
python3-webencodings/bionic,now 0.5-2 all [installed,automatic]
Melodic
at-spi2-core/bionic,now 2.28.0-1 amd64 [installed,automatic]
autotools-dev/bionic,now 20180224.1 all [installed,automatic]
binfmt-support/bionic,now 2.1.8-2 amd64 [installed,automatic]
bzip2-doc/bionic-updates,bionic-security,now 1.0.6-8.1ubuntu0.2 all [installed,automatic]
dbus/bionic-updates,bionic-security,now 1.12.2-1ubuntu1.1 amd64 [installed,automatic]
fakeroot/bionic,now 1.22-2ubuntu1 amd64 [installed,automatic]
file/bionic-updates,bionic-security,now 1:5.32-2ubuntu0.3 amd64 [installed,automatic]
libalgorithm-diff-perl/bionic,now 1.19.03-1 all [installed,automatic]
libalgorithm-diff-xs-perl/bionic,now 0.04-5 amd64 [installed,automatic]
libalgorithm-merge-perl/bionic,now 0.08-3 all [installed,automatic]
libapparmor1/bionic-updates,bionic-security,now 2.12-4ubuntu5.1 amd64 [installed,automatic]
libfakeroot/bionic,now 1.22-2ubuntu1 amd64 [installed,automatic]
libfile-fcntllock-perl/bionic,now 0.22-3build2 amd64 [installed,automatic]
libgdk-pixbuf2.0-bin/bionic,now 2.36.11-2 amd64 [installed,automatic]
libgtk-3-bin/bionic-updates,now 3.22.30-1ubuntu4 amd64 [installed,automatic]
liblocale-gettext-perl/bionic,now 1.07-3build2 amd64 [installed,automatic]
libmagic-mgc/bionic-updates,bionic-security,now 1:5.32-2ubuntu0.3 amd64 [installed,automatic]
libmagic1/bionic-updates,bionic-security,now 1:5.32-2ubuntu0.3 amd64 [installed,automatic]
libpipeline1/bionic,now 1.5.0-1 amd64 [installed,automatic]
libsasl2-modules/bionic-updates,bionic-security,now 2.1.27~101-g0780600+dfsg-3ubuntu2.1 amd64 [installed,automatic]
libtool/bionic,now 2.4.6-2 all [installed,automatic]
libxtst6/bionic,now 2:1.2.3-1 amd64 [installed,automatic]
manpages/bionic,now 4.15-1 all [installed,automatic]
manpages-dev/bionic,now 4.15-1 all [installed,automatic]
notification-daemon/bionic,now 3.20.0-3 amd64 [installed,automatic]
xdg-user-dirs/bionic,now 0.17-1ubuntu1 amd64 [installed,automatic]

Ready for review

@gavanderhoorn
Copy link
Copy Markdown

gavanderhoorn commented Mar 17, 2020

There is no way ATM to specify --no-install-recommends to rosdep install so any package installed by rosdep will also have its' recommends installed

Not sure we'd want to do it, but apt can be configured to always assume --no-install-recommends with something like this:

cat > /etc/apt/apt.conf.d/01_disable_recommends_suggests << EOF
APT::Install-Recommends "0";
APT::Install-Suggests "0";
EOF

That would remove the need to pass it via rosdep.

@mikaelarguedas
Copy link
Copy Markdown
Contributor Author

That's a good point 👍 thanks for pointing it out.
It's the pendant of

I agree that it may not be appropriate to set it in the images and let the consumers of the images decide. Currently no official image uses rosdep to install packages (except ros2:nightly).

We could highlight both approaches (configure APT and remove already installed recommended packages) in the docs.

Signed-off-by: Mikael Arguedas <mikael.arguedas@gmail.com>
Signed-off-by: Mikael Arguedas <mikael.arguedas@gmail.com>
Signed-off-by: Mikael Arguedas <mikael.arguedas@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants