Как включить исходный файл в пакет Debian?

335
bbc

Мой пакет сложный, но я построил минимальный пример, чтобы вы могли легко понять:

. ├── test-package │   └── debian │   ├── changelog │   ├── compat │   ├── control │   ├── rules │   └── source │      └── format ├── test-package_0.1.0.orig │   └── test_file └── test-package_0.1.0.orig.tar.gz 

debian/source/formatФайл содержит 3.0 (quilt), поэтому вышестоящий тарболом является test-package_0.1.0.orig.tar.gz. Этот тарбол содержит test_file.

debian/rulesФайл содержит:

#!/usr/bin/make -f  %: dh $@ 

Если я перехожу в test-packageкаталог и запускаю dpkg-buildpackage -us -uc, я получаю следующее предупреждение, и в моем пакете не будет файла из апстрима:

dpkg-source: warning: ignoring deletion of file test_file, use --include-removal to override 

Я прочитал о, dh_installа затем добавил debian/test-package.installфайл со следующим содержанием:

test_file opt/test-package/test_file 

Но тогда я получаю ошибку:

dh_install: Cannot find (any matches for) "test_file" (tried in "." and "debian/tmp") dh_install: test-package missing files: test_file dh_install: missing files, aborting 

Где test_fileможно найти? Возможно, это неправильный метод. Что я должен попробовать вместо этого в этом случае? Могу ли я избежать модификации пакета upstream, в котором нет make-файла или чего-то подобного?

0

1 ответ на вопрос

0
bbc

Верхний тарбол test-package_0.1.0.orig.tar.gzдействительно нужен там, где он есть. Тем не менее, dpkg-buildpackageтакже ожидается, что этот исходный архив будет распакован test-packageпомимо debianкаталога. Затем он может собрать двоичный пакет и отличить оверлей Debian от вышестоящего контента.

Правильный макет:

. ├── test-package │ ├── debian │ │ ├── changelog │ │ ├── compat │ │ ├── control │ │ ├── rules │ │ ├── source │ │ │ └── format │ │ └── test-package.install │ └── test_file └── test-package_0.1.0.orig.tar.gz 

Похожие вопросы