Могу ли я пересобрать пакет без перекомпиляции исходного кода?

19

Я создаю новый .deb и хочу исправить ошибки lintian в упаковке. Тем не менее, каждый раз, когда я перестраиваю, файл правил выполняет 'make clean' и, таким образом, начинает компилироваться снова.

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

CRB
источник

Ответы:

26

Это зависит от того, как вы создаете пакет. dpkg-buildpackageне вызывает cleanцель, если вы передадите ей -ncопцию. Еще одна полезная опция для тестовой сборки - -uc(не подписывайте файл изменений). debuildнаследует эти параметры от dpkg-buildpackage.

Для тестовой сборки вы можете просто сделать fakeroot debian/rules binary(настроить цель в соответствии с несколькими бинарными пакетами).

Жиль "ТАК - перестань быть злым"
источник
8

Используя ccache, вы можете собрать пакет как обычно, без фактической перекомпиляции неизмененных исходных файлов.

ccache работает, сохраняя старые результаты компиляции, и перестраивает только если исходный код действительно изменился.

debuild --prepend-path=/usr/lib/ccache --preserve-envvars=CCACHE_*
lfaraone
источник
2
Я получил, dpkg-buildpackage: unknown option or argument --preserve-envvars=CCACHE_*но я удалил эту опцию, кажется, работает нормально без нее
Дейв Батлер