簡體   English   中英

Ubuntu 20.04 Dockerfile 得到一個 E:無法找到 package yum 錯誤

[英]Ubuntu 20.04 Dockerfile getting a E: Unable to locate package yum error

我的目標是從 Dockerfile 運行它(基本上是設置 Oracle 客戶端):

RUN  yum -y install /tmp/oracle-instantclient*.rpm && \
     rm -rf /var/cache/yum && \
     rm -f /tmp/oracle-instantclient*.rpm && \
     echo /usr/lib/oracle/12.2/client64/lib > /etc/ld.so.conf.d/oracle-instantclient12.2.conf && \
     ldconfig

問題是 - 我似乎無法訪問“yum”。 結果,我嘗試添加它,如下所示。

FROM ubuntu:20.04

ENV DEBIAN_FRONTEND=noninteractive

RUN apt-get update
RUN apt-get upgrade -y
RUN apt-get install -y python3-pip

RUN apt-get -y install curl
# Pick up some Python3 dependencies.
RUN apt-get update && apt-get install -y --no-install-recommends \
        build-essential \
        curl \
        yum \                   <------ Having a problem with "yum"
        libfreetype6-dev \
        libpng-dev \

[... snip ...]

運行 docker-compose 構建時,我收到以下錯誤: E: Unable to locate package yum

似乎 yum 出現在 Ubuntu 的早期版本中(例如:Ubuntu 16),但它不在 Ubuntu 中或缺少某些東西。 如果 yum 不在 Ubuntu 20 中,怎么添加呢?

TIA

Yum 僅在 Centos 發行版中受支持,

如果您使用的是 Ubuntu(您的基本映像是),則必須對 Dockerfile 中的所有 package 管理操作使用 apt


如果您只能獲取“oracle-instantclient”package 的 RPM 文件,作為一種解決方法,您可以在 dockerfile 中包含以下內容:

  1. 安裝“外星人”package(在 .rpm 和 .deb 文件之間轉換):
sudo apt-get install alien
  1. 獲取 RPM 文件
wget [repository address]/package_name.rpm
  1. 使用 Alien 進行文件轉換:
sudo alien package_name.rpm
  1. 使用 dpkg 安裝 .deb 文件:
sudo dpkg -i package_name.deb

Some of the various ways to install Instant Client in Docker are discussed in Docker for Oracle Database Applications in Node.js and Python :

例如:

WORKDIR /opt/oracle

RUN apt-get update && \
    apt-get install -y libaio1 unzip wget
RUN wget https://download.oracle.com/otn_software/linux/instantclient/instantclient-basiclite-linuxx64.zip && \
    unzip instantclient-basiclite-linuxx64.zip && \
    rm -f instantclient-basiclite-linuxx64.zip && \
    cd instantclient* && \
    rm -f *jdbc* *occi* *mysql* *jar uidrvci genezi adrci && \
    echo /opt/oracle/instantclient* > /etc/ld.so.conf.d/oracle-instantclient.conf && \
    ldconfig

感謝您提供任何答案,但我在這里找到了提示: Install Oracle Instant client into Docker container for Python cx_Oracle

對我有用的是在 Dockerfile 中添加以下內容:

WORKDIR    /opt/oracle
RUN        apt-get update && apt-get install -y libaio1 wget unzip \
            && wget https://download.oracle.com/otn_software/linux/instantclient/instantclient-basiclite-linuxx64.zip \
            && unzip instantclient-basiclite-linuxx64.zip \
            && rm -f instantclient-basiclite-linuxx64.zip \
            && cd /opt/oracle/instantclient* \
            && echo /opt/oracle/instantclient* > /etc/ld.so.conf.d/oracle-instantclient.conf \
            && ldconfig

# add instant client to path
ENV PATH=$PATH:/opt/oracle/instantclient_21_1

問候。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM