2013-07-31 3 views
1

Я пытаюсь написать скрипт python для создания пакета debian. Я создаю структуру требуемой папки во временной папке. Чтобы изменить uid и gid/usr и подпапки на корень, я думал об использовании chroot.os.chroot Операция не разрешена

Однако на этой линии

os.chroot(tmpdir) 

я получаю:

OSError: [Errno 1] Operation not permitted: '/tmp/tmpVnTqW7/myproj' 

Я также попробовал этот мини-учебник с теми же результатами: http://www.tutorialspoint.com/python/os_chroot.htm

Почему бы это? Thanks

ответ

4

chroot() можно сделать только root.

сделать один из них:

  1. Выполнить скрипт с Судо

  2. сделать скрипт с правами суперпользователя и сделать в УИП (geteuid()) эквивалентный питона волшебной

1

Я создаю структуру требуемой папки во временной папке. Чтобы изменить uid и gid/usr и подпапки на корень, я думал об использовании chroot.

Я не уверен, что вы на правильном пути. Я не знаю много о пакетах .deb, но в пакетах .rpm вы можете определить в списке файлов, какие свойства файла назначить для каких файлов.

Поэтому вы не устанавливаете их в файловой системе, а просто сообщаете системе, что должно произойти.

Как сказано, это считается для .rpm; Я не уверен, что это то же самое в .deb.

0

Вместо chrootting в каталог вы должны использовать fakeroot для выполнения dpkg-deb: fakeroot dpkg-deb -z8 -Zgzip --build myproj

Смежные вопросы