Почему dh_usrlocal выдает ошибку сборки? - PullRequest
24 голосов
/ 18 сентября 2011

Я пытаюсь скомпилировать пакет deb для моего сервера.Когда я иду на сборку, все выглядит хорошо, пока не дойдет до dh_usrlocal Сборка останавливается и make возвращает ошибку.Проблема в том, что я пробую это в первый раз, и я действительно не знаю, где искать проблему.

Это вывод из моего терминала, я также включил команду, которую я выполнил внизувывод.

make[2]: Leaving directory `/home/ian/Desktop/scst-2.1.0/src'
make[1]: Leaving directory `/home/ian/Desktop/scst-2.1.0'
   dh_install
   dh_installdocs
   dh_installchangelogs
   dh_installexamples
   dh_installman
   dh_installcatalogs
   dh_installcron
   dh_installdebconf
   dh_installemacsen
   dh_installifupdown
   dh_installinfo
   dh_pysupport
   dh_installinit
   dh_installmenu
   dh_installmime
   dh_installmodules
   dh_installlogcheck
   dh_installlogrotate
   dh_installpam
   dh_installppp
   dh_installudev
   dh_installwm
   dh_installxfonts
   dh_bugfiles
   dh_lintian
   dh_gconf
   dh_icons
   dh_perl
   dh_usrlocal
dh_usrlocal: debian/scst/usr/local/include/scst/scst.h is not a directory
dh_usrlocal: debian/scst/usr/local/include/scst/scst_user.h is not a directory
dh_usrlocal: debian/scst/usr/local/include/scst/Module.symvers is not a directory
dh_usrlocal: debian/scst/usr/local/include/scst/scst_debug.h is not a directory
dh_usrlocal: debian/scst/usr/local/include/scst/scst_const.h is not a directory
dh_usrlocal: debian/scst/usr/local/include/scst/scst_sgv.h is not a directory
rmdir: failed to remove `debian/scst/usr/local/include/scst': Directory not empty
dh_usrlocal: rmdir debian/scst/usr/local/include/scst returned exit code 1
make: *** [binary] Error 1
dpkg-buildpackage: error: debian/rules binary gave error exit status 2
ian@vm01:~/Desktop/scst-2.1.0$ sudo dpkg-buildpackage -rfakeroot

Любая помощь будет оценена.

Ответы [ 3 ]

31 голосов
/ 21 августа 2012

вы должны пропустить запуск dh_usrlocal.чтобы сделать это, вы просто добавляете это в debian / rules: override_dh_usrlocal:

В общем случае, если у вас есть проблема с конкретной целью, вы просто переопределяете ее, добавляя override_ {target} в свой debian / rules.
Например, у вас проблема с dh_icons.вы просто добавляете это в свой debian / rules

override_dh_icons:
    {insert your processing commands or do nothing to skip it when building package}
4 голосов
/ 08 апреля 2016

Правильный пакет Debian не может генерировать вещи там, кроме пустых каталогов. Вот почему он жалуется, что не может удалить каталог.Он не ожидает, что файлы будут там. Единственное, что вы можете иметь, это каталог в / usr / local, и это то, что dh_usrlocal пытается обработать, но у вас не должно быть файлов

Пользователи только помещают файлы в / usr /местный/.

Также я думаю, что если в вашем пути к каталогу есть имя usr / local, это также вызовет ошибку, даже если это не правильный usr / local.Пример того, что может вызвать проблему также.Я думаю, что регулярное выражение в программном обеспечении для сборки ищет usr / local.

/var/tmp/usr/local/

Я знаю, что это старый пост, но он занимает первое место в Google, поэтому нужен хороший ответ, чтобы люди быстро решили эту проблему.

3 голосов
/ 13 сентября 2013

ВАЖНО : эта ошибка возникает ТОЛЬКО при попытке установить на /usr/local/

Я переместил пакет для установки с /usr/local/lib/python3/dist-packages/ на /usr/lib/python3/dist-packages, и ошибка исчезла. Кажется, что dh_usrlocal сломан или мой пакет не соответствует ожидаемым правилам.


Я начал получать сообщение об ошибке после добавления файла package.install в свой пакет debian, чтобы он копировал содержимое пакета в файловую систему. (Я устанавливал на /usr/local/ в то время)

Содержимое моего установочного файла при сбое:

usr/* usr/

Содержимое при правильной работе:

usr/ usr/

Файловая структура пакета debian:

packagename-0.1/
  debian/
  usr/
    local/
      lib/
        python3/
          packagename/

Edit: Кажется, это работает только при копировании корневых каталогов. Как только я пытаюсь указать копирование мимо usr /, оно прерывается с той же ошибкой. См. Верхнюю часть ответа, чтобы найти мое решение.

...