【问题标题】:How to install rpm to /usr/bin instead of /opt/app-root/bin如何将 rpm 安装到 /usr/bin 而不是 /opt/app-root/bin
【发布时间】:2021-03-09 12:01:26
【问题描述】:

我正在尝试为 Centos7 创建 rpm 包。 所以我从 Centos7 镜像创建 Dockerfile 并在里面构建 rpm。 它构建成功,但是有一个问题: 当我尝试将此 rpm 作为其他 Dockerfile 中的包使用时,它会安装到 /opt/app-root/bin,而我需要将其安装到 usr/bin

这是我用于构建 rpm 的 Dockerfile(我也将它安装在里面只是为了检查它是否有效):

FROM centos/python-27-centos7:latest

USER root

RUN yum update -y
RUN yum install rpm-build -y

WORKDIR /usr/src/app
COPY . .

RUN bash -c "pip install --upgrade pip"

RUN git clone https://github.com/klbostee/typedbytes.git
RUN bash -c "cd typedbytes && python setup.py install"

RUN bash -c "pip install -r requirements.txt"

RUN git clone https://github.com/klbostee/dumbo

RUN bash -c "cd dumbo && python setup.py \
    --command-packages=pypi2rpm.command bdist_rpm2 \
    --binary-only \
    --tmppath /tmp/ \
    --dist-dir=. \
    --no-autoreq \
    --name=python27-dumbo \
    --python=python"

RUN cd dumbo && yum install *.rpm -y
CMD ["bash"]

之后我使用docker run -ti -v ... 并从已安装的卷中复制rpm。 之后我尝试在另一个 Dockerfile 中使用这个 rpm,它安装成功,但找不到使用它的命令:no such file or directory 我想它将rpm安装到错误的路径然后找不到它。

我想我的问题是使用 USER root - 看起来这就是为什么它尝试将它安装到 /opt/root/ 但我不知道如何更改它。

如何安装到usr/bin?我需要在 Docker 中创建另一个用户吗?还是什么?

【问题讨论】:

  • 如果您的最终目标是创建一个安装了软件的 docker 映像,我会跳过创建中间 rpm。

标签: docker centos dockerfile centos7 rpm


【解决方案1】:

我开始认为我的问题是选择了错误的图像来构建应用程序。 我尝试使用另一个:

FROM centos:centos7

然后手动安装 python。这解决了问题 - 在这张图片中,我在编写 Dockerfile 时拥有 root 权限,并且我的库安装到 /usr/bin,如我所愿。 所以解决办法是:

FROM centos:centos7
MAINTAINER The CentOS Project <cloud-ops@centos.org>

RUN yum -y update; yum clean all
RUN yum -y install epel-release; yum clean all
RUN yum -y install python-pip; yum clean all
RUN yum -y install rpm-build
RUN yum -y install git, which


RUN pip install --upgrade pip
RUN pip install --upgrade setuptools

RUN mkdir app
COPY . /app
WORKDIR /app 

RUN git clone https://github.com/klbostee/typedbytes.git
RUN cd typedbytes && python setup.py install
...

等等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-04-03
    • 1970-01-01
    • 2014-03-27
    • 2014-08-08
    • 2018-01-15
    • 2022-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多