【问题标题】:Unable to correct problems, you have held broken packages无法纠正问题,您持有破损的包裹
【发布时间】:2016-04-19 16:13:34
【问题描述】:

我正在尝试在我的 docker 容器上安装 ruby​​,我正在关注 this 一个来构建容器。当我为新图像构建错误响应时

The following packages have unmet dependencies:
libgdbm-dev : Depends: libc6-dev but it is not going to be installed or
                    libc-dev
E: Unable to correct problems, you have held broken packages.
The command '/bin/sh -c set -ex     && buildDeps='      bison       libgdbm-dev         ruby    '   && apt-get update   && apt-get install -y --no-install-recommends $buildDeps    && rm -rf /var/lib/apt/lists/*  && curl -fSL -o ruby.tar.gz "http://cache.ruby-   lang.org/pub/ruby/$RUBY_MAJOR/ruby-$RUBY_VERSION.tar.gz"  && echo    "$RUBY_DOWNLOAD_SHA256 *ruby.tar.gz" | sha256sum -c -    && mkdir -p /usr/src/ruby   && tar -xzf ruby.tar.gz -C /usr/src/ruby --strip-components=1   && rm ruby.tar.gz   && cd /usr/src/ruby     && { echo '#define ENABLE_PATH_CHECK 0'; echo; cat file.c; } > file.c.new && mv file.c.new file.c   && autoconf     && ./configure --disable-install-doc    && make -j"$(nproc)"    && make install     && apt-get purge -y --auto-remove $buildDeps    && gem update --system $RUBYGEMS_VERSION    && rm -r /usr/src/ruby' returned a non-zero code: 100

我尝试通过将 apt-get 替换为 aptitude 来安装软件包,但似乎无法正常工作并产生一些相同的响应。除此之外,我必须使用

来自 tracer0tong/android-emulator

在开始安装安卓模拟器。有没有其他方法可以将 ruby​​ 与 Android 一起安装?感谢您提供所有帮助。

【问题讨论】:

    标签: ruby docker dockerfile


    【解决方案1】:

    看看官方的 docker 容器here 然后如果你有 o github 依赖项是:

    ...
    RUN set -ex \
        && buildDeps=' \
            bison \
            libgdbm-dev \
            ruby \
        ' \
        && apt-get update \
        && apt-get install -y --no-install-recommends $buildDeps \
    ...
    

    检查完整的Dockerfile

    【讨论】:

    • 我已经按照同一个文档在我的本地实施。我希望您在上面粘贴的部分会引发错误。我已经尝试过上述 Dockerfile 的确切副本。
    【解决方案2】:

    是否需要在容器中安装最新版本的 ruby​​?如果没有,可以使用 ubuntu 提供的官方包使用 apt-get。这是在 ubuntu 容器上安装 ruby​​ 1.9.3 的示例 Dockerfile。

    ubuntu@xyz:~$ cat Dockerfile 
    FROM ubuntu:latest
    RUN apt-get update && apt-get -y install ruby-full
    ubuntu@xyz:~$
    

    构建映像后,您可以从中启动容器并检查 ruby​​ 状态。

    ubuntu@xyz:~$ docker run -it 777b10ca8b7b /bin/bash
    root@6d4a3f1d2031:/# ruby --version
    ruby 1.9.3p484 (2013-11-22 revision 43786) [x86_64-linux]
    root@6d4a3f1d2031:/#
    

    更新:-

    查看tracer0tong/android-emulator的Dockerfile,使用的是ubuntu12.04。您可以使用它在容器上安装 ruby​​:-

    FROM tracer0tong/android-emulator
    RUN apt-get -y install python-software-properties && apt-add-repository -y ppa:brightbox/ruby-ng && apt-get update && apt-get -y install ruby1.8 ruby1.9.3 ruby2.2
    

    【讨论】:

    • 但是我需要使用2.0或者更高的版本,这就是这里的问题。
    • 我可以在此命令“RUN apt-get update && apt-get -y install ruby​​-full”中指定 ruby​​ 包的版本
    • apt-get install ruby2.2 试试上面的例子。您可以查看答案中的更新部分,它提到了 2.2 版的安装。试一试。
    • 好的。让我试一试。
    猜你喜欢
    • 2020-09-09
    • 1970-01-01
    • 2017-06-17
    • 1970-01-01
    • 2018-11-12
    • 1970-01-01
    • 2014-10-13
    • 2022-10-16
    • 2021-04-12
    相关资源
    最近更新 更多