Подтвердить что ты не робот

Почему dh_usrlocal выбрасывает ошибку сборки?

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

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

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
[email protected]:~/Desktop/scst-2.1.0$ sudo dpkg-buildpackage -rfakeroot

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

4b9b3361

Ответ 1

вам следует пропустить запуск 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}

Ответ 2

ВАЖНО. Эта ошибка ТОЛЬКО возникает при попытке установить на /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 package:

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

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

Ответ 3

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

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

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

/var/tmp/usr/local/

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