2013-03-06 3 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! 

Кто-нибудь знает, как я могу это исправить? Я проверял reprepro человека, и я не нашел решения для решения этой ситуации.

+0

Я не могу понять, почему вы не можете написать «I» в верхнем регистре, имеющем такой высокий уровень в чувствительной к регистру ОС. – peterh

ответ

12

Ваша первая команда не должна работать; remove требует кодового имени дистрибутива, из которого вы хотите удалить этот пакет.

Предполагая, что это было просто ошибкой, и что вы дали «сжатие» команде удаления, как вы делали для includedeb, у вас, скорее всего, все тот же пакет в другом дистрибутиве. Reprepro пытается обеспечить соблюдение дебианского идеала «пакетов с тем же именем и с той же версией, которые имеют то же самое содержимое», независимо от того, какой дистрибутив они были сначала выпущены.

Вы можете сделать reprepro ls $package, чтобы увидеть, где он все еще может быть располагается. Как только вы его найдете, правильная вещь должна была бы до reprepro copy вернуть ее обратно с другого места.

4

Если вы поддерживаете несколько дистрибутивов в своем архиве, вам нужно будет удалить ссылку на файл из всех них, прежде чем вам будет разрешено включить файл с новым файлом.

После reprepro ls вы можете использовать reprepro remove {dist} {pkg} один раз для каждого дистрибутива, в котором указан файл.

Когда все ссылки ушли, вы можете includedeb новый.

1

Недостаточно изменить версию в имени пакета, ее также следует изменить в файле управления (DEBIAN/control в двоичном архиве и debian/control в исходном deb).

Вы изменили пакет deb, поэтому вам нужно предоставить ему другую версию. Как правило, вы должны изменить строку

Version: 1.2.3-something 

To:

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

или аналогичный.

Если версии отличаются, вы сможете включать пакеты в репо несколько раз.