rocker-org / rocker-versioned

Run current & prior versions of R using docker
https://hub.docker.com/r/rocker/r-ver
GNU General Public License v2.0
297 stars 169 forks source link

Installing libmagick++-dev fails on latest 3.6.3 r-base release #209

Closed hallfjonas closed 4 years ago

hallfjonas commented 4 years ago

Issue

I am working with a docker image based on r-base:3.6.3 in which I install the r package magick. This package depends on libmagick++-dev (deb). Installation of this package fails with the following error:

The following packages have unmet dependencies:
 libmagick++-dev : Depends: libmagick++-6.q16-dev but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

I tried unholding and using aptitude install as recommended here. Nothing worked.

Reproduce

Build the docker file

FROM r-base:3.6.3
RUN apt-get update && apt-get install -y libmagick++-dev

Information on docker r-base version

I did not have this issue with the same tag r-base:3.6.3 until its update on 4/16/2020 at 11:13 pm.

Dockerversion

Docker Toolbox for Windows: Docker version 19.03.1, build 74b1e89e8a

cboettig commented 4 years ago

Try:

FROM rocker/r-ver:3.6.3
RUN apt-get update && apt-get install -y libmagick++-dev
hallfjonas commented 4 years ago

This version does work.

I noticed that I didn't specify the required dependency libcurl4-openssl-dev for the imported package 'curl', so I've edited it above.

I guess I am just slightly confused about the way r-base is tagged. Correct me if I'm wrong, but I thought docker tags are usually used to make sure that one can rely on the state of a specific image/tag. I understand that r-base/3.6.3 is the docker image for r version 3.6.3, but there is no way I can rely on it being consistent?

What about rocker/r-ver? Is it different here? Thanks for your help.

cboettig commented 4 years ago

@hallfjonas r-base is built on debian:testing, which is a rolling release. r-base:3.6.3 provides R 3.6.3. But since you're installing from the debian:testing repos, running apt-get on that image at some later date may not produce the same behaviour it did months ago.

rocker/r-ver is built on debian stable releases, in particular, rocker/r-ver:3.6.3 is built on debian:10 (buster).

In general, if stability & versioning is more important to you, you probably want the rocker/versioned image. If the latest compilers, libraries, bugfixes, etc are more important, the debian:testing-based image might be preferable. For more details, check out our paper, https://doi.org/10.32614/RJ-2017-065

hallfjonas commented 4 years ago

Got it. Thanks for explaining!