Reprepro добавляет тот же пакет deb

У меня возникла проблема в моем репозитории Debian. Я удалил неправильный пакет с помощью:

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 man и не нашел решения этой ситуации.


person ki0    schedule 06.03.2013    source источник
comment
Я не могу понять, почему вы не можете написать I в верхнем регистре, имея такой высокий уровень в ОС, чувствительной к регистру.   -  person peterh    schedule 10.08.2016


Ответы (3)


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

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

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

person the paul    schedule 07.03.2013

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

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

Когда все ссылки исчезнут, вы можете includedeb создать новую.

person Cory    schedule 30.05.2013

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

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

Version: 1.2.3-something

To:

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

или похожие.

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

person peterh    schedule 10.08.2016