Как правильно установить установленный размер для пакета deb?

Я разрабатываю пакеты debian, и у меня проблемы с правильным определением 'Installed-Size' в DEBIAN / control.
Я создал сценарий, который постоянно проверяет репозиторий svn на наличие новых ревизий, и, если обнаружены некоторые изменения, затем вычисляет размер кода ( исключая папку DEBIAN) с помощью команды du -s, а затем это значение помещается в «Установленный размер».

DEBIAN / контрольный файл выглядит следующим образом:

Package: myfirstdebpackage
Version: 1.0
Architecture: all
Maintainer: me
Installed-Size: 16664
Depends: python (>=2.7), python-appindicator, python-numpy, python-suds
Section: extras
Priority: optional
Homepage: www.example.com
Description: My first deb package

Структура папок приложения:

myfirstdebpackage/DEBIAN
myfirstdebpackage/usr/bin/myfirstdebpackage/<files>

Первая установка прошла успешно (через репозиторий apt), но после создания новой версии и попытки обновить пакет я получил ошибку «несоответствие размера» или «Несоответствие хеш-суммы».

Что случилось?


person Levi    schedule 16.08.2013    source источник


Ответы (2)


Я не думаю, что вам придется изменять это значение вручную. Вместо этого запустите debuild (часть пакета devscripts) в корневом каталоге пакета. В родительском каталоге этого корневого каталога будет создан двоичный пакет, и, конечно же, поле будет автоматически заполнено для вас.

person tshepang    schedule 17.08.2013
comment
Я удалил поле «Установленный размер» из контрольного файла, и пакет был успешно создан. Однако проблема все еще существует. Может что-то не так с моим подходящим репозиторием? Каждый раз, когда я создаю новый пакет deb, я копирую его в репозиторий ("двоичную" папку), а затем выполняю 'dpkg-scanpackages binary / dev / null | gzip -9c ›команда binary / Packages.gz '... - person Levi; 21.08.2013
comment
Не запускайте dpkg-scanpackages вручную. Скорее используйте вспомогательный инструмент, такой как реппро: serverfault.com/a/224635. - person tshepang; 21.08.2013

Я предполагаю, что вы создаете двоичный пакет с одной и той же версией, но каждый раз с разным содержимым. Не делай этого. Это запутает apt и многие другие инструменты, которые ожидают и предполагают, что каждый кортеж pkgname-version-arch обозначает уникальный и отличный пакет.

Что касается установленного размера, dpkg-gencontrol автоматически сгенерирует его для вас, но я предполагаю, что вы создаете файл DEBIAN / control вручную. Я бы не рекомендовал этого, потому что это означает больше ручной работы, которая более подвержена ошибкам.

person Guillem Jover    schedule 22.09.2016
comment
Почему голос против? Правильный способ установить установленный размер - использовать dpkg-gencontrol. Его можно было создать вручную, но это довольно необычно. для этого вам нужно будет использовать тот же алгоритм, который больше не описан в debian-policy, а упоминается в bugs.debian.org/793499. Конечно, это не имеет ничего общего с ошибкой, упомянутой позже в вопросе, которая связана с тем, что метаиндексы не синхронизированы с исходным и двоичным пакетами, но вопрос был не в этом. - person Guillem Jover; 02.04.2021