Ubuntu 20.04 Dockerfile获取E:无法定位程序包yum错误



我的目标是从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

问题是,我似乎无法访问";百胜";。因此,我尝试添加它,如下所示。

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 build时,我得到以下错误:E: 无法找到程序包yum-

看起来百胜在早期版本的Ubuntu(例如:Ubuntu 16(中,但它不在Ubuntu 20中(?(——或者——我遗漏了什么。如果Ubuntu20中没有百胜,如何添加它?

TIA-

Yum仅在Centos Distribution、中受支持

如果你使用的是Ubuntu(你的基本映像就是Ubuntu(,你必须在Dockerfile 中使用apt进行所有包管理操作


如果您只能获得"oracle-instantclient"包的RPM文件,作为解决方法,您可以在dockerfile中包括以下内容:

  1. 安装"Alien"软件包(在.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

Node.js和Python:中的Docker for Oracle Database Applications中讨论了在Docker中安装Instant Client的一些不同方法

例如:

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

谢谢你的回答,但我在这里找到了一个提示:将Oracle Instant客户端安装到Python cx_Oracle 的Docker容器中

对我有效的是在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

谨致问候。

最新更新