我知道这基本上是一个确切的问题https://stackoverflow.com/questions/48306849/,但那里的答案对我来说似乎并不正确,因为他们都说创建libz.so.1
符号链接。然而,
在我的 Debian bullseye 中,我已经有了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
这不是Debian 中的zlib1g
或libpng16-16
软件包的问题,而是 Debian 中的一个错误提供的二进制文件mitmweb
。它们包括许多在运行时解压到临时目录中的库;LD_LIBRARY_PATH
设置为临时目录,以便动态链接器将使用那里的库。这对于 提供的二进制文件运行良好mitmweb
,但LD_LIBRARY_PATH
会传递到mitmweb
尝试启动的浏览器。
该库包包含libz
版本 1.2.8,该版本太旧,无法满足libpng16-16
.结果,需要的浏览器libpng16-16
无法启动。 (二进制文件是基于旧发行版构建的这样他们最终就不需要新的库.)
本身没有简单的修复方法mitmweb
,无法从源代码重建它,但您可以轻松解决该错误:等待mitmweb
启动,然后在浏览器中打开 http://localhost:8080 (或者任何合适的 URL,如果您指定另一个主机或端口使用--web-host
或--web-port
)。
mitmweb
(有兴趣的读者可以通过分析来了解 的结构,无需运行它binwalk
。)