我使用dpkg buildpackage来制作ubuntu软件包,但当dpkg-I安装时,它不会';覆盖以前的低版本包,返回错误,为什么?

我使用dpkg buildpackage来制作ubuntu软件包,但当dpkg-I安装时,它不会';覆盖以前的低版本包,返回错误,为什么?,ubuntu,gstreamer,apt,dpkg,aptitude,Ubuntu,Gstreamer,Apt,Dpkg,Aptitude,主要问题如下: 如何修改dh_make Products控制文件以覆盖低版本软件包? 该问题的原因如下: (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 root@ubuntu:~/gstreamer_1.6.2/gstreamer-1.6.2# dpkg -i ../gstreamer_

主要问题如下:

如何修改dh_make Products控制文件以覆盖低版本软件包?

该问题的原因如下:

(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
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
我使用Ubuntu14.04版本编译gstreamer 1.6.2,但是这个版本的ubuntu自带了自己的gstreamer 1.2.4包。我使用dpkg-r或aptitude remove命令不删除这个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
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
但是当我使用dpkg-I命令安装它时,我的终端窗口返回一个错误,如下所示:

(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
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包的低版本?


如果有人对我有任何想法,请提前向您表示感谢。

从错误消息的外观来看,问题在于您的新gstreamer包不仅取代了gstreamer,还取代了gstreamer1.0-tools

就dpkg和apt而言,gstreamer1.0-tools是一个完全不同的包,因此需要在debian/control文件中明确列出冲突和替换依赖项。如果任何其他软件包依赖于gstreamer1.0-tools,则您可能还需要添加一个提供依赖项,以便他们可以将您的软件包视为未替换的其中一个或两个软件包的有效替换

我所期望的是,最初的原因是debian和/或ubuntu选择将大型gstreamer软件包拆分为多个较小的deb软件包,这些软件包可以独立安装,因为您的安装程序正在将其构建为一个单片deb软件包

如果是这种情况,另一个选项可能是查看是否可以将上游软件包的新版本合并到用于在存储库中构建版本的debian修补程序和控制文件中,因为这将与存储库中的版本具有相同的结构