Образу Docker не удается установить компиляторы

#docker #dockerfile #docker-image

#docker #dockerfile #docker-image

Вопрос:

У меня есть следующий файл docker для создания образа docker, где мне нужно установить несколько компиляторов. Но почему-то я получаю ошибки при установке таких пакетов, как php, java, g и т. Д

Вот файл docker

 ############################################################
# Dockerfile to build sandbox for executing user code
# Based on Ubuntu
############################################################

FROM ubuntu:latest


# Update the repository sources list
RUN echo "deb http://archive.ubuntu.com/ubuntu trusty main universe" > /etc/apt/sources.list
RUN apt-get update
#RUN apt-get upgrade
#Install all the languages/compilers we are supporting.
RUN apt-get install -y gcc
RUN apt-get install -y g  
RUN apt-get install -y php5-cli
RUN apt-get install -y ruby
RUN apt-get install -y python
RUN apt-get install -y mono-xsp2 mono-xsp2-base

RUN apt-get install -y mono-vbnc
RUN apt-get install -y npm
RUN apt-get install -y golang-go    
RUN apt-get install -y nodejs

RUN npm install -g underscore request express jade shelljs passport http sys jquery lodash async mocha moment connect validator restify ejs ws co when helmet wrench brain mustache should backbone forever  debug amp;amp; export NODE_PATH=/usr/local/lib/node_modules/

RUN apt-get install -y clojure1.4


#prepare for Java download
RUN apt-get install -y python-software-properties
RUN apt-get install -y software-properties-common

#grab oracle java (auto accept licence)
RUN add-apt-repository -y ppa:webupd8team/java
RUN apt-get update
RUN echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | /usr/bin/debconf-set-selections
RUN apt-get install -y oracle-java8-installer


RUN apt-get install -y gobjc
RUN apt-get install -y gnustep-devel amp;amp;  sed -i 's/#define BASE_NATIVE_OBJC_EXCEPTIONS     1/#define BASE_NATIVE_OBJC_EXCEPTIONS     0/g' /usr/include/GNUstep/GNUstepBase/GSConfig.h


RUN apt-get install -y scala
RUN apt-get install -y mysql-server
RUN apt-get install -y perl

RUN apt-get install -y curl
RUN mkdir -p /opt/rust amp;amp; 
    curl https://sh.rustup.rs -sSf | HOME=/opt/rust sh -s -- --no-modify-path -y amp;amp; 
    chmod -R 777 /opt/rust

RUN apt-get install -y sudo
RUN apt-get install -y bc

RUN echo "mysql ALL = NOPASSWD: /usr/sbin/service mysql start" | cat >> /etc/sudoers
  

Я несколько раз пытался изменить этот код, но он по-прежнему заканчивается некоторыми ошибками, такими как

 The following packages have unmet dependencies:
 g   : Depends: g  -4.8 (>= 4.8.2-5~) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
The command '/bin/sh -c apt-get install -y g  ' returned a non-zero code: 100
  

В итоге я добавил следующие строки

 RUN apt-get -f install -y libc6
RUN apt-get install -y manpages-dev
RUN apt-get install -y libc-dev-bin
RUN apt-get install -y libc6-dev
RUN apt-get install -y libstdc  -4.8-dev
  

Но почему-то я застрял на

 The following packages have unmet dependencies:
 libc6-dev : Depends: libc6 (= 2.19-0ubuntu6) but 2.31-0ubuntu9.1 is to be installed
             Depends: libc-dev-bin (= 2.19-0ubuntu6) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
The command '/bin/sh -c apt-get install -y libc6-dev' returned a non-zero code: 100
  

Также при установке php возникают следующие ошибки

  php5-cli : Depends: php5-common (= 5.5.9 dfsg-1ubuntu4) but it is not going to be installed
            Depends: libedit2 (>= 2.11-20080614-4) but it is not going to be installed
            Recommends: php5-readline but it is not going to be installed
  

Я знаю, что проблема связана с некоторыми неудовлетворенными зависимостями, но каждый раз, когда я решаю одну, возникает другая. Есть ли способ установить все зависимости.

Также я получил этот файл docker из https://github.com/remoteinterview/compilebox amp; он был написан для Ubuntu 14.04, и он тоже не работал, поэтому я перешел на ubuntu: последняя версия

Я новичок в docker, поэтому я не очень разбираюсь в написании dockerfile, некоторые, пожалуйста, помогите мне обновить этот dockerfile.

Заранее спасибо

Комментарии:

1. Как исправить ошибку «удерживаемые поврежденные пакеты»: askubuntu.com/questions/223237 /…

2. Обычно лучше создавать более адаптированные образы. Обычно вы создаете образ для сборки одного приложения и устанавливаете только те компиляторы, которые необходимы приложению. Такой подход даст вам очень большое изображение, с которым будет сложно работать. (Вы можете получить лучшее сообщение об ошибке и избежать некоторых проблем с кэшированием Docker, если вы RUN apt-get update amp;amp; apt-get install ... используете каждый пакет в одной RUN команде.)