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

.
├── 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-файла или чего-то подобного?

1 ответ1

0

Вышестоящий tarball 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .