Почему 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
Любая помощь будет оценена.
Ответы
Ответ 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, поэтому ему нужен хороший ответ, чтобы люди быстро решили эту проблему.