通过Dockerfile安装FFmpeg时遇deb-multimedia-keyring包找不到错误求助
问题解决:Debian Bullseye容器中安装FFmpeg时找不到deb-multimedia-keyring包
核心问题分析
- deb-multimedia-keyring不在官方源:Debian官方仓库不包含
deb-multimedia-keyring,这个包属于第三方deb-multimedia仓库,必须先添加该仓库源并导入对应密钥才能安装。 - Dockerfile语法错误:
buildDeps定义中错误使用&&分隔依赖,应该用空格。./configure命令换行时语法错误,导致--enable-*参数被当作独立命令执行,引发构建失败。
修正后的Dockerfile
FROM openjdk:8-jdk-bullseye COPY ./ffmpeg-4.1.1.tar.bz2 /tmp # 添加deb-multimedia仓库源并导入密钥 RUN apt-get update -oAcquire::AllowInsecureRepositories=true && \ apt-get install -yq --no-install-recommends ca-certificates expat libgomp1 wget gnupg && \ # 导入deb-multimedia的GPG密钥 wget -O- https://www.deb-multimedia.org/pool/main/d/deb-multimedia-keyring/deb-multimedia-keyring_2016.8.1_all.deb | dpkg -i - && \ # 添加deb-multimedia仓库源 echo "deb [trusted=yes] http://www.deb-multimedia.org bullseye main non-free" >> /etc/apt/sources.list.d/deb-multimedia.list && \ apt-get update && \ # 安装构建依赖 buildDeps="build-essential libmp3lame-dev libvorbis-dev libtheora-dev libspeex-dev yasm pkg-config libfaac-dev libopenjpeg-dev libx264-dev" && \ apt-get install -yq --no-install-recommends ${buildDeps} && \ # 编译安装FFmpeg DIR=/home/sigadmin/bin/ffmpeg && mkdir -p ${DIR} && cd ${DIR} && \ tar -jx --strip-components=1 -f /tmp/ffmpeg-4.1.1.tar.bz2 && \ ./configure --enable-gpl --enable-postproc --enable-swscale --enable-avfilter --enable-libmp3lame \ --enable-libvorbis --enable-libtheora --enable-libx264 --enable-libspeex --enable-shared --enable-pthreads --enable-libopenjpeg --enable-libfaac --enable-nonfree && \ make && make install && \ # 清理依赖和临时文件,减小镜像体积 apt-get purge -y ${buildDeps} wget gnupg && \ apt-get autoremove -y && \ apt-get clean -y && \ rm -rf /var/lib/apt/lists/* /tmp/ffmpeg-4.1.1.tar.bz2
关键修正点说明
- 添加第三方仓库:通过
wget获取deb-multimedia密钥包并安装,然后添加仓库源到系统配置中,确保能找到目标包及相关依赖。 - 修复语法错误:
- 移除
buildDeps中的&&,用空格分隔所有构建依赖。 - 将
./configure的参数换行改为用反斜杠\连接,确保所有参数属于同一个命令。
- 移除
- 镜像优化:编译完成后清理构建依赖和临时文件,避免镜像体积过大。
内容的提问来源于stack exchange,提问作者Pranav MS
相关产品推荐
相关产品推荐

