从 debian 包安装 ffmpeg 0.7.1-5

从 debian 包安装 ffmpeg 0.7.1-5

我下载了这个ffmpeg 包。当我尝试使用命令安装它时

sudo dpkg -i ffmpeg_0.7.1-5_i386.deb

它写入以下错误消息:

Unpacking ffmpeg (from ffmpeg_0.7.1-5_i386.deb) ...
dpkg: error processing ffmpeg_0.7.1-5_i386.deb (--install):
trying to overwrite '/usr/share/ffmpeg/libx264-ipod640.ffpreset', which is also in package libavcodec-extra-52 4:0.5.1-1ubuntu1.2
dpkg-deb: subprocess paste killed by signal (Broken pipe)
Errors were encountered while processing: ffmpeg_0.7.1-5_i386.deb

您能帮我为 Ubuntu 10.04 安装这个特定版本 (0.7.1-5) 吗?

编辑:命令后 sudo apt-get remove libavcodec52 libavcodec-extra-52

新输出

我现在应该手动一步步安装依赖项(可能还有它们的依赖项)还是有一些技巧?

答案1

混合来自 debian 和 ubuntu 存储库的二进制包是一个非常糟糕的主意。但是,如果您绝对确定需要具体版本,可能的解决方案是下载 debian 包来源,然后在您的系统上进行设置build-essential并在本地构建包,以便它匹配正确的依赖项。

添加行

deb-src http://ftp.at.debian.org/debian/ wheezy main non-free contrib

到您的sources.lst文件,然后输入

apt-get update
apt-get build-dep ffmpeg
apt-get source ffmpeg

这将尝试下载构建包所需的所有包ffmpeg(主要是 libwhatever-dev 加上工作编译器),然后在当前目录中下载并准备 ffmpeg 的源包。我建议您在执行此步骤之前创建 和cdto 。/usr/src/ffmpeg

您现在的当前目录下将有以下文件和目录:

ffmpeg-debian-0.whatever/
ffmpeg-debian_0.whatever-something.diff.gz
ffmpeg-debian_0.whatever-something.dsc
ffmpeg-debian_0.whatever.orig.tar.gz

相当简单:这orig.tar.gz是原始源代码 tarball;这-something.diff.gz是 debian 软件包维护者应用的 diff,用于提供所有 debian 构建脚本,而 ffmpeg-debian-0.whatever/ 是解压和修补的源目录。

cd进入源目录并运行命令debuild -us -uc -b,然后在系统编译和构建包时获取汽水补充,使用当前现有的库版本来确定其依赖项。

一旦完成,dpkg -i生成的 .deb 就可以享受了。

答案2

您安装的发行版对 ffmpeg 软件套件的打包方式似乎与您从其获取 ffmpeg 软件包的发行商不同。根本原因在第三行; libavcodec-extra-52 已安装 /usr/share/ffmpeg/libx264-ipod640.ffpreset 文件,并且 dpkg 不会使用一个包中的文件覆盖另一包中的文件。

这可能与一些依赖项有关 - 在我的 Wheezy 上,ffmpeg 4:0.7.1-5 替换了 libavcodec-extra-53 (<< 4:0.6~) 并依赖于 libavcodec-extra-53 (>= 4:0.7。 1),因此可能需要升级您的 libavcodec-extra-53。

您有两个选择:

  1. 肮脏的黑客:卸载Ubuntu的libavcodec-extra-52包,也许还有ffmpeg的其他组件:apt-get删除libavcodec-extra-52
  2. 更好:使用 Ubuntu 版本的 ffmpeg: apt-get install ffmpeg

答案3

无需手动下载一些 ffmpeg .deb 包(顺便说一句,你从哪里获得它?)。

只需通过发行版的包管理器安装它,例如:

$ sudo apt-get install ffmpeg

您使用的软件包与已安装的软件包冲突,并且可能存在其他问题。像 apt-get 这样的包管理器能够检测/诊断并(帮助)解决冲突。

相关内容