`lsb_发布-一个“opensuse/tumbleweed”docker中的“a” 上下文
尝试使用安装python3软件包时`lsb_发布-一个“opensuse/tumbleweed”docker中的“a” 上下文,docker,opensuse,getopt,lsb,Docker,Opensuse,Getopt,Lsb,尝试使用安装python3软件包时 python3-m pip安装absl-py 如果安装了lsb release软件包,则会失败(这是我的情况,是强制性的) 在我发现的挖掘之后,pip将在内部调用lsb_release-a,这将导致此错误。。。 我可以使用下面的Dockerfile轻松地复制它 协议 创建此Dockerfile: # ref: https://hub.docker.com/r/opensuse/tumbleweed FROM opensuse/tumbleweed RUN
python3-m pip安装absl-py
如果安装了lsb release
软件包,则会失败(这是我的情况,是强制性的)
在我发现的挖掘之后,pip将在内部调用lsb_release-a
,这将导致此错误。。。
我可以使用下面的Dockerfile轻松地复制它
协议
创建此Dockerfile
:
# ref: https://hub.docker.com/r/opensuse/tumbleweed
FROM opensuse/tumbleweed
RUN zypper update -y \
&& zypper install -y lsb-release \
&& zypper clean -a
RUN lsb_release -a
观察
docker build--tag=so。
...
--->8330cfe918d5
步骤3/3:运行lsb_版本-a
--->在488762fb27a3中运行
/usr/bin/lsb_发布:第122行:找不到getopt:命令
命令'/bin/sh-c lsb_release-a'返回一个非零代码:2
测验
我试图安装“gengetopt”、“gnu getopt”或“perl getopt Long Descriptive”,但没有成功(但仍然发生了相同的错误)
变通办法
一种解决方法是安装meta包lsb
,不幸的是这需要时间(184个包)
我正在寻找一个“更小”的软件包来修复它(即拉更少的依赖项)
协议
观察
docker build--tag=变通方法。
...
步骤4/4:运行lsb_版本-a
--->在6d93c78f7a47中运行
LSB版本:core-2.0-noarch:core-3.2-noarch:core-4.0-noarch:core-2.0-x86_64:core-3.2-x86_64:core-4.0-x86_64:desktop-4.0
分发服务器ID:openSUSE
描述:openSUSE风滚草
发布日期:20201121
代号:不适用
拆卸中间容器6d93c78f7a47
--->c11779133426
成功构建c11779133426
已成功标记os:最新版本
您可以使用zypper search-f
检索getopt
的包所有者:
15b83d17ed60://#命令-v getopt
/usr/bin/getopt
15b83d17ed60:/#命令-v getopt | xargs zypper search-f
正在加载存储库数据。。。
正在读取已安装的软件包。。。
S |名称|摘要|类型
--+--------------------+----------------------------------------+--------
|busybox util linux | busybox小程序取代util linux |包
i | util linux |基本系统实用程序的集合|包
因此,在这里安装util linux
就足够了
FROM opensuse/tumbleweed
RUN zypper update -y \
&& zypper install -y lsb-release \
&& zypper clean -a
RUN zypper update -y \
&& zypper install -y lsb \
&& zypper clean -a
RUN lsb_release -a