0

環境

を使用してpython3パッケージをインストールしようとすると

python3 -m pip install 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
Step 3/3 : RUN lsb_release -a
 ---> Running in 488762fb27a3
/usr/bin/lsb_release: line 122: getopt: command not found
The command '/bin/sh -c lsb_release -a' returned a non-zero code: 2

テスト

「gengetopt」、「gnu-getopt」、または「perl-Getopt-Long-Descriptive」をインストールしようとしましたが、成功しませんでした (それでも同じエラーが発生しました)。

回避策

回避策の 1 つは、メタ パッケージをインストールするlsbことです。残念ながら時間がかかります (184 個のパッケージ)。

それを修正するための「より小さな」パッケージを探しています(つまり、依存関係を減らします)。

プロトコル

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

観察した

docker build --tag=workaround .
...
Step 4/4 : RUN lsb_release -a
 ---> Running in 6d93c78f7a47
LSB Version:    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.fake-amd64:desktop-4.0.fake-noarch:graphics-2.0-amd64:graphics-2.0-noarch:graphics-3.2-amd64:graphics-3.2-noarch:graphics-4.0.fake-amd64:graphics-4.0.fake-noarch
Distributor ID: openSUSE
Description:    openSUSE Tumbleweed
Release:    20201121
Codename:   n/a
Removing intermediate container 6d93c78f7a47
 ---> c11779133426
Successfully built c11779133426
Successfully tagged os:latest
4

1 に答える 1

0

getopt次を使用して、のパッケージ所有者を取得できますzypper search -f <file>

15b83d17ed60:/ # command -v getopt
/usr/bin/getopt
15b83d17ed60:/ # command -v getopt | xargs zypper search -f 
Loading repository data...
Reading installed packages...

S | Name               | Summary                                | Type
--+--------------------+----------------------------------------+--------
  | busybox-util-linux | Busybox applets replacing util-linux   | package
i | util-linux         | A collection of basic system utilities | package

ここでは、インストールutil-linuxで十分なはずです....

于 2020-11-25T12:33:08.173 に答える