如何在 Docker 容器内的 Ubuntu 上安装自制软件

Vad*_*dim 8 ubuntu homebrew docker

当我尝试在 Ubuntu 18.04 上安装自制软件时

# Dockerfile
FROM ubuntu:18.04

RUN apt-get update && apt-get install build-essential curl file git -y
RUN sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"
Run Code Online (Sandbox Code Playgroud)

得到错误:

==> 通过运行将 Ruby 添加到您的 PATH: PATH=/root/.linuxbrew/Homebrew/Library/Homebrew/vendor/portable-ruby/current/bin:$PATH 不要以 root 身份运行它!

Jay*_*ran 14

有什么原因不能使用官方图片( docker pull linuxbrew/linuxbrew) 吗?它基于 Ubuntu 16.04 / Xenial。

如果您必须使用 Bionic (18.04),安装 homebrew 的正确方法是按照官方Dockerfile 中的步骤操作

但是为了让您的 Dockerfile 工作,您需要安装 ruby​​,创建一个非 root 用户并以该用户身份执行安装脚本。像这样,

FROM ubuntu:18.04

RUN apt-get update && \
    apt-get install build-essential curl file git ruby-full locales --no-install-recommends -y && \
    rm -rf /var/lib/apt/lists/*

RUN localedef -i en_US -f UTF-8 en_US.UTF-8

RUN useradd -m -s /bin/bash linuxbrew && \
    echo 'linuxbrew ALL=(ALL) NOPASSWD:ALL' >>/etc/sudoers

USER linuxbrew
RUN sh -c "$(curl -fsSL https://raw.githubusercontent.com/Linuxbrew/install/master/install.sh)"

USER root
ENV PATH="/home/linuxbrew/.linuxbrew/bin:${PATH}"
Run Code Online (Sandbox Code Playgroud)

PS:我添加--no-install-recommends了忽略可选依赖项并rm -rf /var/lib/apt/lists/*删除apt-get剩余部分从而减小图像大小。此外,locales添加到安装 UTF-8 或brew在您运行命令时会抛出警告。

  • URL 略有变化。警告:Linuxbrew 已合并到 Homebrew 中。请迁移到以下命令: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)" (3认同)

Gab*_*iel 7

新的正确方法是:

RUN apt-get update && \
    apt-get install -y -q --allow-unauthenticated \
    git \
    sudo
RUN useradd -m -s /bin/zsh linuxbrew && \
    usermod -aG sudo linuxbrew &&  \
    mkdir -p /home/linuxbrew/.linuxbrew && \
    chown -R linuxbrew: /home/linuxbrew/.linuxbrew
USER linuxbrew
RUN /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
Run Code Online (Sandbox Code Playgroud)


小智 6

加布里埃尔的回答大部分对我有用,但缺少一步。我需要将运行 Homebrew 的用户的文件夹chown/home/linuxbrew/.linuxbrew

RUN apt-get update && \
    apt-get install -y -q --allow-unauthenticated \
    git \
    sudo
RUN useradd -m -s /bin/zsh linuxbrew && \
    usermod -aG sudo linuxbrew &&  \
    mkdir -p /home/linuxbrew/.linuxbrew && \
    chown -R linuxbrew: /home/linuxbrew/.linuxbrew
USER linuxbrew
RUN /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"

USER root
RUN chown -R $CONTAINER_USER: /home/linuxbrew/.linuxbrew
Run Code Online (Sandbox Code Playgroud)

  • 您是否会考虑将加布里埃尔的答案复制/粘贴到您的答案中,以便有完整的说明列表?(很容易只看到“新的正确方法”注释,而错过“chown”命令......)谢谢。 (2认同)