【问题标题】:trying to overwrite `/var/backups/infodir.bak', which is also in package x试图覆盖 `/var/backups/infodir.bak',它也在包 x 中
【发布时间】:2013-03-28 11:32:16
【问题描述】:

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

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

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

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

我尝试删除文件 /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

【问题讨论】:

    标签: makefile debian configure checkinstall


    【解决方案1】:

    在 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
    

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

    【讨论】:

      猜你喜欢
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-07
      • 1970-01-01
      • 2010-11-14
      • 1970-01-01
      • 2020-09-07
      相关资源
      最近更新 更多