2015-09-11 6 views
2

У меня возникла проблема при создании пакета debian.debian упаковка: какая разница между dh build и dh binary

Что касается документа правил файла: https://www.debian.org/doc/manuals/maint-guide/dreq.en.html#rules

  • Debian/правила построения работает Dh сборки; который, в свою очередь, работает следующим образом:

    dh_testdir 
    dh_auto_configure 
    dh_auto_build 
    dh_auto_test 
    
  • fakeroot Debian/правила двоичных пробегов fakeroot дк двоичного; который, в свою очередь, работает следующим образом:

    dh_testroot 
    dh_prep 
    dh_installdirs 
    dh_auto_install 
    dh_install 
    dh_installdocs 
    ... 
    dh_builddeb 
    

Но когда я бегу dh binary --no-act команду на выходе включает в себя dh build --no-act. Это означает, что команды ./configure и make запускаются два раза во время сборки пакета debian. Это странно.

Я использовал dpkg-buildpackage -us -uc для сборки пакета debian.

UPDATE: Я видел, что это на самом деле не запускалось дважды, но почему -no-act показывает, что вывод dh build выполняется дважды?

ответ

2

Во-первых, чтобы ответить на первый вопрос, различия между debian/rulesbuild и binary правила изложены в Debian Policy §4.9. Короче говоря, цель build должна выполнять только шаги «построения» и не делать ничего, что требует привилегий root (или fakeroot), таких как chowning files to uid 0 или «установка» вещей. binary, с другой стороны, должен предпринять все необходимые шаги для создания соответствующих двоичных деб. binary должен включать все этапы build, если они еще не были выполнены.

Вот несколько фактов о dh, что вы могли бы быть пропавшие:

  1. dh отслеживает dh_* команд, которые задавят как часть последовательности сборки (например, в рамках dh build или dh binary), даже между вызовами. Вы можете видеть, какие команды он считает уже запущенными, глядя на содержимое debian/$package.debhelper.log. Если команда указана там, dh будет считать, что она уже запущена для целей последовательности команд.

  2. dh $sequence --no-act принимает во внимание также файл debian/$package.debhelper.log. Поэтому, когда вы запускаете dh binary --no-act в новом чистом каталоге, вы увидите длинный список команд, включая те, которые необходимо выполнить для цели build. Но если вы на самом деле запуститеdh build сначала и , то попробуйте dh binary --no-act, он больше не покажет шаги сборки. Он будет показывать только шаги по подготовке и созданию фактического пакета .deb.

+0

Спасибо за ваш ответ. Я думаю, что документ должен указать на это, чтобы не путать новых пользователей. – chenzhiwei