试图覆盖`/var/backups/infodir.bak',它也在包x中

时间:2013-03-21 11:20:15

标签: makefile debian configure checkinstall

编译软件时,我总是. ./configure&& make&& checkinstall -D make install构建软件。

现在我在使用checkinstall时遇到了问题,我收到了错误

  

“试图覆盖`/var/backups/infodir.bak',它也在   包libtasn1-3.2“。

我还创建了 libtasn1-3.2 ./configure&& make&& checkinstall -D make install

我尝试删除文件 /var/backups/infodir.bak ,但我仍然收到错误消息。 有谁知道如何解决这个问题?

Building Debian package...OK 
Installing Debian package... FAILED! 
Failed to install the package

Do you want to see the log file?  [y]: y (Reading database ... dpkg:
serious warning: files list file for package `squeezecenter-readynas'
missing, assuming package has no files currently installed. 30739
files and directories currently installed.) Unpacking libgcrypt-1.5.1
(from .../libgcrypt-1.5.1_1.5.1-1_sparc.deb) ... dpkg: error
processing
/c/backup/zarafa/libgcrypt-1.5.1/libgcrypt-1.5.1_1.5.1-1_sparc.deb
(--install):  trying to overwrite `/var/backups/infodir.bak', which is
also in package libtasn1-3.2 dpkg-deb: subprocess paste killed by
signal (Broken pipe) Errors were encountered while processing: 
/c/backup/zarafa/libgcrypt-1.5.1/libgcrypt-1.5.1_1.5.1-1_sparc.deb

1 个答案:

答案 0 :(得分:3)

在debian中,禁止两个软件包安装相同的文件。

因此,每当您尝试安装包含文件“/ path / to / foo”的软件包并且已安装另一个包含文件“/ path / to / foo”的软件包时,就会出现冲突,从而出现错误。

维护者工作的一部分是确保不会发生这样的事情,

  • 通过在两个软件包之间设置显式冲突(因此您甚至无法同时标记这两个软件包进行安装)

  • 或通过在一个包(或两者)中重命名文件并相应地调整软件

  • 或阻止一个(或两个)软件包安装此类文件(例如,在确实不需要安装文件的情况下)

维护debian软件包通常需要做很多工作。

现在工具checkinstall是一个“穷人”包维护工具,因为它可以非常轻松地从“make install”创建包。 因为它是一个自动化工具,它根本无法取代维护者的工作和复杂性。 (否则我们不再需要任何debian维护者;只需将源包上传到某个构建服务器并在其上运行“checkinstall”)

所以你遇到问题的原因是因为你正在安装维护严重(或者更确切地说:自动创建,因而不是所有维护)的软件包。 删除违规文件不起作用的原因是包管理不仅仅是下载档案并提取它们。除此之外,它还维护了一个数据库中已安装文件的列表,这个列表表明您已经安装了/var/backups/infodir.bak(无论该文件是否实际存在于硬盘上)...导致您看到的冲突

因此,解决您的问题的方法是,将更多时间用于维护。

无论如何,你应该调查为什么这两个“包”都需要/var/backups/infodir.bak(以及它们是否需要它)。

您可以通过

忽略checkinstall中的某些文件
 checkinstall --exclude /var/backups/infodir.bak -D make install

这是否会打破你的任何包裹,我不能说。