Показаны сообщения с ярлыком отладка. Показать все сообщения
Показаны сообщения с ярлыком отладка. Показать все сообщения

четверг, 9 июня 2011 г.

make: permission denied

Стал обновлять с 7.2 на 8.2... Словил ошибку на make installworld
make: permission denied
Долго ломал голову, откатил до 8.0.. Выдавало

...
cp -R ${PATH_LOCALE:-"/usr/share/locale"} /tmp/install.BEFb1OYh/locale
cd /usr/src; MAKEOBJDIRPREFIX=/usr/obj MACHINE_ARCH=amd64 MACHINE=amd64 CPUTYPE= GROFF_BIN_PATH=/usr/obj/usr/src/tmp/legacy/usr/bin GROFF_FONT_PATH=/usr/obj/usr/src/tmp/legacy/usr/share/groff_font GROFF_TMAC_PATH=/usr/obj/usr/src/tmp/legacy/usr/share/tmac PATH=/usr/obj/usr/src/tmp/legacy/usr/sbin:/usr/obj/usr/src/tmp/legacy/usr/bin:/usr/obj/usr/src/tmp/legacy/usr/games:/usr/obj/usr/src/tmp/usr/sbin:/usr/obj/usr/src/tmp/usr/bin:/usr/obj/usr/src/tmp/usr/games:/tmp/install.BEFb1OYh LD_LIBRARY_PATH=/tmp/install.BEFb1OYh PATH_LOCALE=/tmp/install.BEFb1OYh/locale make -f Makefile.inc1 __MAKE_SHELL=/tmp/install.BEFb1OYh/sh reinstall; MAKEOBJDIRPREFIX=/usr/obj MACHINE_ARCH=amd64 MACHINE=amd64 CPUTYPE= GROFF_BIN_PATH=/usr/obj/usr/src/tmp/legacy/usr/bin GROFF_FONT_PATH=/usr/obj/usr/src/tmp/legacy/usr/share/groff_font GROFF_TMAC_PATH=/usr/obj/usr/src/tmp/legacy/usr/share/tmac PATH=/usr/obj/usr/src/tmp/legacy/usr/sbin:/usr/obj/usr/src/tmp/legacy/usr/bin:/usr/obj/usr/src/tmp/legacy/usr/games:/usr/obj/usr/src/tmp/usr/sbin:/usr/obj/usr/src/tmp/usr/bin:/usr/obj/usr/src/tmp/usr/games:/tmp/install.BEFb1OYh LD_LIBRARY_PATH=/tmp/install.BEFb1OYh PATH_LOCALE=/tmp/install.BEFb1OYh/locale rm -rf /tmp/install.BEFb1OYh
make: Permission denied
*** Error code 126

Stop in /usr/src.
*** Error code 1

Шикарная ошибка, в индусском стиле.
Что смешнее -- truss ничего тоже не показал толком. Но в данном случае - /tmp/install.BEFb1OYh создался, но из-за опций /tmp вылезла данная ошибка.
Строка из fstab:

/dev/mirror/gm0s1d /tmp ufs rw,async,nosuid,noatime,noexec 2 2

Удалил nosuid, noexec -- заработало.

среда, 25 мая 2011 г.

strace

используем strace, чтобы понять, почему процесс ест проц :)

FreeBSD.
Для начала, поставим сам strace
#portinstall strace

Теперь подключим /proc
#kldload procfs
# mount -t procfs proc /proc/
(или вписываем в fstab:
proc /proc procfs rw,noauto 0 0
и делаем просто mount /proc)

Также есть штатный отладчик truss, ну и про gdb не забываем.

Оказалось, скрипт каждый раз пережевывал (stat) каталог, в котором было 700к+ файлов-сессий, но это уже не к этой заметке :)

Основы strace:
http://ipesin.linux.kiev.ua/translations/rhm/strace.html

Про strace и gdb
http://www.ibm.com/developerworks/ru/library/au-unix-strace/

Более подробное описание strace:
http://welinux.ru/post/5035/


UPD
** Port marked as IGNORE: devel/strace:
is only for i386, while you are running amd64

Так что подходит не всегда..