[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: reprepro и пакеты _all.deb



Konstantin Kubatkin пишет:
Добрый день

Собрал я свой пакет exim4 для i386 и amd64
Добавляю их в локальный репозитарий с помощью reprepro
Пакеты для i386 добавились нормально, а вот с amd64 выдало вот такую
ошибку:

File "pool/main/e/exim4/exim4_4.72-1+squeeze1_all.deb" is already
registered with different checksums!
md5 expected: 30ff17e86a3dc2cd32b8dac605018345, got:
4b9119f2f166d50ffce20a9fabea55df
sha1 expected: c631a5d56e5d392453081549c64918d67164bd56, got:
d360ca9a7088d1adc7a76c5485e0b217718b57d2
sha256 expected:
6c1783f3de39c8839ae3f19754589a3fc87cac378202e9fb8a0ef8c4ea56c324, got:
70d8da8cdea4b5f5b82e7bb375e9a0bb57c8b1276be436e9d9228a0b735d5987
There have been errors!

Оно как бы и понятно, файл exim4_4.72-1+squeeze1_all.deb есть как в
i386, так и в amd64
Но вот как объяснить reprepro что ругаться на _all файлы не надо?

Чтение документации на reprepro просветления не принесло

Заранее спасибо


Если у Вас пакет с Architecture: all в DEBIAN/control, то он должен попасть и в binary-i386/Packages
и в binary-amd64/Packages.

У Вас, похоже, именно так, судя по _all в названии пакета. Поэтому не надо его удваивать, надо его загрузить лишь один раз.

У меня всё значительно проще. Четыре команды и никаких reprepo

Пакеты раскладываются только один раз. Пакет с all у них общий для обеих архитектур, он и копируется только один раз.
Затем.

dpkg-scanpackages --arch i386 <path-to-debs> /dev/null > dists/unstable/main/binary-i386/Packages
dpkg-scanpackages --arch amd64 <path-to-debs> /dev/null > dists/unstable/main/binary-amd64/Packages

Обе команды отправляют в Pakages и все пакеты с all.
По идее, reprepo должен делать тоже самое. Просто он оптимизирует этот процесс не пересканируя всё дерево каждый раз.

В итоге ещё
apt-ftparchive -c=apt-ftparchive.conf release dists/unstable >dists/unstable/Release
gpg -sab -u "<user>" --yes -odists/unstable/Release.gpg dists/unstable/Release

Может поможет.

Если у Вас пакет _all общий, то и checksums у него один и тот же, и ошибки не будет никакой.

Впрочем, если Вы хотите действительно иметь разные пакеты all для разных архитектур, то и версии у них должны быть разные, следовательно и имена файлов будут разные. В reprepo за это отвечает команда (как я в мане подглядел)
--architecture <arch> includedeb codename .deb-filename
или
--architecture <arch> include codename .changes-filename


Типа:
--architecture i386 includedeb squeeze .exim4_4.72-1+squeeze1_all.deb
--architecture amd64 includedeb squeeze .exim4_4.72-1+squeeze2_all.deb


















Reply to: