2013-03-21 54 views
2

編譯軟件時,我常. ./configure & & make & & checkinstall -D make install打造的軟件。試圖覆蓋`/var/backups/infodir.bak」,這也是包X

現在我使用檢查安裝的是我得到的錯誤

時遇到問題「,試圖重寫`/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 

回答

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 

省略某些文件,這是否會破壞任何你的包,我不能說。