2013-03-06 164 views
9

我在debian repo中遇到了問題。我刪除了錯誤的包帶:Reprepro添加相同的deb包

reprepro -Vb . remove package 

這是確定的,但是當我試圖用下一個命令再次添加同一包:

reprepro -Vb . includedeb squeeze package 

我得到了一個輸出:

Already existing files can only be included again, if they are the same, but: 
md5 expected: 1035762e5e21e6ad8689660c0032f42d, got: 77ea3b094fcbfca4110afb5a9af0d2cb 
sha1 expected: e41527e49bee98a59b3a5e16fbe856bb15a836bd, got: 5c6b673e5f11f1a80201e76d0fa4ba1d5935f095 
sha256 expected: ae795de3b2d62f513b634a00c4bec74c90d2a6f750e5ec0386ee2b7775af39ec, got: 1531b2dd1869214afe58bb526fa8bda70db1bd1ef73d133bde002d42f147a041 
size expected: 327748, got: 253398 
There have been errors! 

任何人都知道我該如何解決這個問題?我一直在檢查代表人,我沒有找到解決方案來解決這種情況。

+0

我不明白爲什麼你不能在大小寫敏感的操作系統中寫出「I」大寫字母這麼高的水平。 – peterh 2016-08-10 09:09:24

回答

12

你的第一個命令不應該有效; remove需要您要從中刪除該軟件包的分發代碼。

假設這只是一種錯誤,並且您像對includedeb那樣對remove命令進行了「擠壓」,您很可能仍然使用不同分佈的相同軟件包。 Reprepro試圖強制執行debian的理念,即「同名的軟件包和完全相同的版本具有完全相同的內容」,而不管它們首先發布在哪個發行版中。

您可以執行reprepro ls $package以查看它可能仍然存在的位置位於。一旦你找到它,正確的做法是將其從reprepro copy擠回其他地方。

4

如果您在存檔中支持多個發行版,則需要從所有發行版中刪除文件引用,然後才能允許包含新文件。

reprepro ls之後您可能希望對引用該文件的每個發行版使用reprepro remove {dist} {pkg}一次。

當所有參考文獻都沒有了,您可以includedeb一個新的。

1

僅改變軟件包名稱中的版本是不夠的,它也應該在控制文件(源二進制檔案中的DEBIAN/control和源deb中的debian/control)中進行更改。

你修改了一個deb包,所以你必須給它一個不同的版本。通常情況下,你應該改變行

Version: 1.2.3-something 

要:

Version: 1.2.3-kioplays1 (...2, 3, etc) 

或相似。

如果版本不同,您將能夠在軟件包中多次包含軟件包。