[Develope]/Cloud&Docker

Docker 환경에서 library 참조 실패

하늘을닮은호수M 2020. 4. 3. 16:43
반응형

1 ffmpeg 실패

1.1. 원인

ffmpeg의 library들을 찾지 못해 recording이 실패하는 경우가 있다.

(log 중 일부)

[11:25:03.536] [utor-12] [DEBUG] [LOGKEY_202004021125001_QONXG] ffmpeg log : /usr/local/bin/ffmpeg: error while loading shared libraries: libavdevice.so.58: cannot open shared object file: No such file or directory

아래와 같이 확인하면 library path가 제대로 안 잡혀져 있는 경우가 있다.

[root@gep-base logs]# ldd /usr/local/bin/ffmpeg
	linux-vdso.so.1 =>  (0x00007ffe91d76000)
	libavdevice.so.58 => not found
	libavfilter.so.7 => not found
	libavformat.so.58 => not found
	libavcodec.so.58 => not found
	libpostproc.so.55 => not found
	libswresample.so.3 => not found
	libswscale.so.5 => not found
	libavutil.so.56 => not found
	libm.so.6 => /lib64/libm.so.6 (0x00007fa518a22000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fa518806000)
	libc.so.6 => /lib64/libc.so.6 (0x00007fa518438000)
	/lib64/ld-linux-x86-64.so.2 (0x00007fa518d24000)

1.2. 해결방법

  • /etc/ld.so.conf 수정
    아래와 같이 /etc/ld.so.conf 파일에 library 위치를 강제로 추가하였다. (LD_LIBRARY_PATH를 사용자의 .bash_profile에 추가해도 되나, 이미 그렇게 설정되어 있는 상태에서도 문제가 발생한 경우임)
include ld.so.conf.d/*.conf
/usr/local/lib

설정한 것을 적용하기 위해 ldconfig 실행

 

근본적으로 이를 해결하기 위해 Dockerfile에 위와 같은 내용을 추가하여 이미지 생성 시에 포함하였다.

 

다시 한 번 확인해보면 정상적으로 path가 잡혀져 있는 것을 확인할 수 있다. (이미 적용된 후 다른 system에서 확인을 하다보니 일부 library가 다른 것은 양해 부탁드립니다.)

 

[gigasurv@gep-base ~]$ ldd $(which ffmpeg)
	linux-vdso.so.1 =>  (0x00007ffd1c3db000)
	libavdevice.so.58 => /usr/local/lib/libavdevice.so.58 (0x00007f2fab7c1000)
	libavfilter.so.7 => /usr/local/lib/libavfilter.so.7 (0x00007f2fab2be000)
	libavformat.so.58 => /usr/local/lib/libavformat.so.58 (0x00007f2faae6d000)
	libavcodec.so.58 => /usr/local/lib/libavcodec.so.58 (0x00007f2fa9802000)
	libpostproc.so.55 => /usr/local/lib/libpostproc.so.55 (0x00007f2fa95e2000)
	libswresample.so.3 => /usr/local/lib/libswresample.so.3 (0x00007f2fa93c5000)
	libswscale.so.5 => /usr/local/lib/libswscale.so.5 (0x00007f2fa913b000)
	libavutil.so.56 => /usr/local/lib/libavutil.so.56 (0x00007f2fa8e2e000)
	libm.so.6 => /lib64/libm.so.6 (0x00007f2fa8b2c000)
	libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f2fa8910000)
	libc.so.6 => /lib64/libc.so.6 (0x00007f2fa8542000)
	libfreetype.so.6 => /lib64/libfreetype.so.6 (0x00007f2fa8283000)
	libbz2.so.1 => /lib64/libbz2.so.1 (0x00007f2fa8073000)
	libz.so.1 => /lib64/libz.so.1 (0x00007f2fa7e5d000)
	libfdk-aac.so.2 => /usr/local/lib/libfdk-aac.so.2 (0x00007f2fa7b16000)
	libmp3lame.so.0 => /usr/local/lib/libmp3lame.so.0 (0x00007f2fa7888000)
	libx264.so.157 => /usr/local/lib/libx264.so.157 (0x00007f2fa7370000)
	libx265.so.173 => /usr/local/lib/libx265.so.173 (0x00007f2fa6c78000)
	/lib64/ld-linux-x86-64.so.2 (0x00007f2fab9cf000)
	libpng15.so.15 => /lib64/libpng15.so.15 (0x00007f2fa6a4d000)
	libdl.so.2 => /lib64/libdl.so.2 (0x00007f2fa6849000)
	librt.so.1 => /lib64/librt.so.1 (0x00007f2fa6641000)
	libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f2fa633a000)
	libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f2fa6124000)

 

  • 아래 링크 참조 (시도해 봤으나 시간이 상당히 걸려서 포기)

ffmpeg: error while loading shared libraries: libavdevice.so.56: cannot

sudo updatedb -v | while read
> do
>     if (( ++i % (count/20) == 0 )); then
>         printf "%3d\r" $((100 * i / count))
>     fi
> done
 94

94 는 진행률 결과

반응형

'[Develope] > Cloud&Docker' 카테고리의 다른 글

[4] aws-cli 설치  (0) 2021.04.01
[3] Amazon EC2 XShell로 연결하기  (0) 2021.04.01
[2] Amazon EC2 인스턴스 시작하기  (0) 2021.04.01
[1] Amazon EC2 사용 설정  (0) 2021.04.01
How to Deploy Your Project with Docker  (0) 2020.04.01