2

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

现在我在使用 checkinstall 时遇到了这个问题,我得到了错误

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

我还使用&& &&创建了libtasn1-3.2./configuremakecheckinstall -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
4

1 回答 1

3

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

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

维护者的部分工作是确保此类事情不会发生,

  • 通过设置两个包之间的显式冲突(因此您甚至不能同时标记两个包以进行安装)

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

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

维护 debian 软件包通常需要大量工作。

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

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

所以解决您的问题的方法是,在维护上投入更多时间。

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

checkinstall您可以从via中省略某些文件

 checkinstall --exclude /var/backups/infodir.bak -D make install

whether this will break any of your packages, i cannot say.

于 2013-03-21T19:13:42.283 回答