主要问题如下:
如何修改dh_make生成的控制文件以覆盖低版本包?
此问题的原因如下:
我使用ubuntu 14.04版本来编译gstreamer 1.6.2,但是这个版本的ubuntu带来了自己的gstreamer 1.2.4包。我使用dpkg -r或aptitude删除命令来删除这个gstreamer 1.2.4版本,因为这个包存在许多其他相关性依赖。我没办法,所以我认为只需制作gstreamer 1.6.2版本包就可以方便地安装覆盖gstreamer 1.2.4版本。通过dh_make和dpkg-buildpackage命令我制作了这个1.6.2包。
我构建了gstreamer 1.6.2安装包的命令,如下所示:
(1)dh_make -e [my_email_address] -f ../gstreamer-1.6.2.tar.gz
(2)dpkg-buildpackage
(3)dpkg -i ../gstreamer_1.6.2-1_amd64.deb
但是当我使用dpkg -i命令安装它时,终端窗口会返回如下错误:
root@ubuntu:~/gstreamer_1.6.2/gstreamer-1.6.2# dpkg -i ../gstreamer_1.6.2-1_amd64.deb
Selecting previously unselected package gstreamer.
(Reading database ... 172213 files and directories currently installed.)
Preparing to unpack ../gstreamer_1.6.2-1_amd64.deb ...
Unpacking gstreamer (1.6.2-1) ...
dpkg: error processing archive ../gstreamer_1.6.2-1_amd64.deb (--install):
trying to overwrite '/usr/bin/gst-typefind-1.0', which is also in package gstreamer1.0-tools 1.2.4-0ubuntu1
dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
Errors were encountered while processing:
../gstreamer_1.6.2-1_amd64.deb
我不明白为什么这个操作不包括低版本的gstreamer 1.2.4包?我想知道在dh_make生成控制文件之后如何修改其中的参数或属性以覆盖低版本的1.2.4包?
如果有人对我有任何想法,请非常感谢你。
答案 0 :(得分:0)
从错误消息的外观来看,问题是你的新gstreamer软件包不只是替换gstreamer而是gstreamer1.0-tools。
就dpkg和apt而言,gstreamer1.0-tools是一个完全不同的包,因此需要明确列出冲突并替换debian / control文件中的依赖项。如果任何其他软件包依赖于gstreamer1.0-tools,您可能还需要添加一个提供依赖项,以便他们可以将您的软件包视为其中一个或两个软件包的有效替代品。
我期望的最初原因是debian和/或ubuntu选择将大型gstreamer软件包拆分成多个较小的deb软件包,这些软件包可以独立安装,而你的设置将它构建成一个单一的deb软件包。 / p>
如果是这种情况,另一种选择可能是看看你是否可以将新版本的上游软件包组合到debian补丁和控制文件中,这些文件用于构建存储库中的版本,因为这样就可以了与存储库中的结构相同。