【发布时间】:2019-11-06 21:41:58
【问题描述】:
我正在尝试在 Alpine 3.10 docker 容器中运行 GeckoDriver v0.26.0,特别是 python:3.6.6-alpine3.10。
在弄清楚一些事情之后,我碰壁了:
/ # geckodriver --version
Error relocating /usr/bin/geckodriver: __register_atfork: symbol not found
Error relocating /usr/bin/geckodriver: __res_init: symbol not found
我错过了什么?
我是怎么到这里的
首先启动 docker 容器:
docker run -it python:3.6.9-alpine3.10 /bin/sh
然后尝试安装 GeckoDriver
/ # wget https://github.com/mozilla/geckodriver/releases/download/v0.26.0/geckodriver-v0.26.0-linux64.tar.gz
/ # tar -zxf geckodriver-v0.26.0-linux64.tar.gz -C /usr/bin
/ # geckodriver --version
/bin/sh: geckodriver: not found.
真的吗?但我刚刚提取了它......嗯......好的。是否正确提取? $PATH 正确吗?
/ # ls -lah /usr/bin/geckodriver
-rwxr-xr-x 1 1000 1000 6.7M Oct 12 10:19 /usr/bin/geckodriver
/ # echo $PATH
/usr/local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
是的。好的,让我们google一下。好吧,也许我应该check the file info。默认情况下,Alpine 没有。
/ # apk add file
fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/main/x86_64/APKINDEX.tar.gz
fetch http://dl-cdn.alpinelinux.org/alpine/v3.10/community/x86_64/APKINDEX.tar.gz
(1/2) Installing libmagic (5.37-r1)
(2/2) Installing file (5.37-r1)
Executing busybox-1.30.1-r2.trigger
OK: 24 MiB in 36 packages
/ # file /usr/bin/geckodriver
/usr/bin/geckodriver: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.26, BuildID[sha1]=32c4cfc2d9346336dc7c20e99a62df9be344d609, with debug_info, not stripped
answer to that same question 表示要检查/lib64/ld-linux-x86-64.so.2:
/ # ls /lib64
ls: /lib64: No such file or directory
不见了。好的,我们如何得到它? Alpine package repo 表示它是 libc6-compat 的一部分。很酷的安装,一切都会好起来的……对吧?
/ # apk add libc6-compat
(1/1) Installing libc6-compat (1.1.22-r3)
OK: 24 MiB in 37 packages
/ # ls /lib64
ld-linux-x86-64.so.2
/ # geckodriver --version
Error loading shared library libgcc_s.so.1: No such file or directory (needed by /usr/bin/geckodriver)
Error loading shared library ld-linux-x86-64.so.2: No such file or directory (needed by /usr/bin/geckodriver)
Error relocating /usr/bin/geckodriver: __register_atfork: symbol not found
Error relocating /usr/bin/geckodriver: _Unwind_Resume: symbol not found
Error relocating /usr/bin/geckodriver: __res_init: symbol not found
Error relocating /usr/bin/geckodriver: _Unwind_GetIP: symbol not found
Error relocating /usr/bin/geckodriver: _Unwind_Backtrace: symbol not found
...至少它现在将其识别为可执行文件...好的,所以我们需要libgcc_s.so.1。 That's in libgcc。有道理。
/ # apk add libgcc
(1/1) Installing libgcc (8.3.0-r0)
OK: 24 MiB in 38 packages
/ # geckodriver --version
Error loading shared library ld-linux-x86-64.so.2: No such file or directory (needed by /usr/bin/geckodriver)
Error relocating /usr/bin/geckodriver: __register_atfork: symbol not found
Error relocating /usr/bin/geckodriver: __res_init: symbol not found
什么?我们在/lib64 中有ld-linux-x86-64.so.2,它在哪里看?我确实注意到gcompat 包为/lib/ld-linux-x86-64.so.2,也许它正在那里寻找?
# / apk add gcompat
(1/2) Installing libucontext (0.1.3-r1)
(2/2) Installing gcompat (0.4.0-r0)
OK: 24 MiB in 40 packages
# / geckodriver --version
Error relocating /usr/bin/geckodriver: __register_atfork: symbol not found
Error relocating /usr/bin/geckodriver: __res_init: symbol not found
这就是我所在的位置。谷歌搜索 __register_atfork 和 __res_init 不会返回任何有用的信息。
【问题讨论】:
标签: docker geckodriver alpine