Debianで「ZLIB_1.2.9」バージョンが見つかりません(libpng16.so.16に必要)。

Debianで「ZLIB_1.2.9」バージョンが見つかりません(libpng16.so.16に必要)。

私はこれが基本的に正しい質問であることを知っていますhttps://stackoverflow.com/questions/48306849/libz.so.1しかし、それに対する答えはすべてシンボリックリンクを生成するように言うので、私にとっては正しいようではありません。しかし、

私のDebian Bulls Idにはすでにあり、そして両方がlibz.soシンボリックlibz.so.1リンクされていますlibz.so.1.2.11

libpng16.so.16したがって、これはより低いバージョンのZLIB(v1.2.9)に固執する問題のようです。一方、私はすでにですv.1.2.11。そうですか?

すべての詳細は次のとおりです。

$ mitmweb
/usr/bin/x-www-browser: /tmp/_MEIi9PAKI/libz.so.1: version `ZLIB_1.2.9' not found
 (required by /lib/x86_64-linux-gnu/libpng16.so.16)

cd /usr/lib/x86_64-linux-gnu

$ ls -l libz.so*
lrwxrwxrwx 1 root root     36 2020-02-24 16:07 libz.so -> /lib/x86_64-linux-gnu/libz.so.1.2.11
lrwxrwxrwx 1 root root     14 2020-02-24 16:07 libz.so.1 -> libz.so.1.2.11
-rw-r--r-- 1 root root 113088 2020-02-24 16:07 libz.so.1.2.11

$ apt-cache policy libpng16-16:amd64
libpng16-16:
  Installed: 1.6.37-3
  Candidate: 1.6.37-3
  Version table:
 *** 1.6.37-3 500
        500 http://deb.debian.org/debian bullseye/main amd64 Packages
        100 /var/lib/dpkg/status

$ ldd /lib/x86_64-linux-gnu/libpng16.so.16
    linux-vdso.so.1 (0x00007fff01872000)
    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fa21425d000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fa214119000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fa213f54000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fa2142c2000)

$ realpath /usr/bin/x-www-browser
/export/opt/google/chrome/google-chrome

$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux bullseye/sid

答え1

zlib1gこれはDebianやlibpng16-16パッケージの問題ではなく、Debianのバグです。バイナリ提供mitmweb。これには、実行時に一時ディレクトリに解凍された複数のライブラリが含まれており、LD_LIBRARY_PATH動的リンカがそのライブラリを使用できるように一時ディレクトリに設定されます。これは提供されたバイナリでは正しく機能しますmitmwebが、実行しようとするブラウザLD_LIBRARY_PATHには渡されます。mitmweb

ライブラリパッケージにはlibzバージョン1.2.8が含まれており、満足できないほど古いですlibpng16-16。したがって、必要なブラウザをlibpng16-16起動できません。 (バイナリは以前のディストリビューションに基づいて構築されました。これにより、最終的には新しいライブラリが不要になります。.)

それ自体は簡単な修正はなく、mitmwebソースから再構築する方法はありませんが、エラーを簡単に解決できます。mitmweb起動を待ってから、ブラウザ(または指定した場合は適切なURL)でhttp://localhost:8080を開きます。--web-hostまたは)を使用する他のホストまたはポート--web-port

mitmweb(関心のある読者は、実行せずに分析を通じて構造について学ぶことができますbinwalk。)

関連情報