2017-02-23 24 views
0

Извините, я не являюсь носителем английского языка.chown -R не работает в рецепте Yocto-Project

Я пытаюсь установить мое веб-приложение, используя файл рецепта Yocto-Project.

PR = "r0" 
PV = "1.0" 

LIC_FILES_CHKSUM = "file://COPYING;md5=d41d8cd98f00b204e9800998ecf8427e" 

SRC_URI = "\ 
    file://sources \ 
    file://COPYING \ 
" 
S = "${WORKDIR}" 

do_install() { 
    install -d ${D}${localstatedir}/www 
    cp -r ${S}/sources/* ${D}${localstatedir}/www/ 
    chown -R www-data:www-data ${D}${localstatedir}/www/ 
    chmod -R 775 ${D}${localstatedir}/www/cgi-bin 
} 

Но /var/www до сих пор принадлежит root:root и не www-data:www-data, как хотелось бы.

Вопрос

Так как же я chown каталог /var/www recusively в www-data:www-data?

EDIT

Я видел стр.9 следующей презентации: https://wiki.yoctoproject.org/wiki/images/e/e6/Custom_Users_Groups_in_Yocto1.1.pdf.

Я создал этот файл рецепта, чтобы имитировать эту страницу.

+0

Вы используете этот сценарий как корень? Является ли www-data действительным пользователем/группой? Получали ли вы сообщения об ошибках от 'chown'? Как устанавливаются переменные 'D' и' localstatedir'? Без этих подробностей никто не может сделать предположение для вас. – codeforester

+0

Нет, запуск этого скрипта в качестве пользователя по умолчанию не root.Yes, www-data является действительным пользователем/группой. – jsuzu

+2

Вы не можете 'chown' файл/каталог, не принадлежащий вам, если вы не являетесь пользователем root. – codeforester

ответ

1

Во-первых, chown и chmod должны работать в YP/ОЕ рецептов, как вам используй их.

Возможно, проблема в том, что вы пропустили / в своих аргументах пути для команд. Согласно документации [1] ${D} не имеет заднего конца /.

Поэтому следующее должно работать:

do_install() { 
    install -d ${D}/${localstatedir}/www 
    cp -r ${S}/sources/* ${D}/${localstatedir}/www/ 
    chown -R www-data:www-data ${D}/${localstatedir}/www/ 
    chmod -R 775 ${D}/${localstatedir}/www/cgi-bin 
} 

(Если нет, пожалуйста, оставьте свои Bitbake журналы)

[1] https://www.yoctoproject.org/docs/latest/mega-manual/mega-manual.html#var-D

+0

'$ {localstatedir}' начинается с косой черты. То есть '/ Var'. –

-1

Судо Чаун -R wwwdata: wwwdata/вар/WWW/сделать владение нужную папку и ее внутренние папки или файлы рекурсивно

+0

Нет, это может работать на нормальной оболочке, но этот вопрос касается рецепта YP/OE. – g0hl1n

+0

какая ошибка отображается при вводе chown – admin123