Yocto apache build: как включить mod_cgid по умолчанию? - PullRequest
0 голосов
/ 27 июня 2019

Мы используем Yocto для встроенной сборки Linux.

Мы собираем apache2, используя рецепт из

meta-openembedded/meta-webserver/recipes-httpd/apache2

Когда мы загружаем образ, выполнение CGI отключается.Мы видим, что в конфигурационном файле apache2 (/etc/apache2/httpd.conf) строка для загрузки mod_cgid.so закомментирована:

#LoadModule cgid_module lib/apache2/modules/mod_cgid.so

Нам нужно, чтобы вышеприведенная строка была раскомментирована как частьсборка вместо необходимости раскомментировать ее вручную, что мы и должны сделать сейчас.

Инструкции README.cmake для apache2 говорят, что вы можете установить флаг сборки для каждого модуля ("I" для сборки иоставьте отключенным «А» для построения и включения).Но, глядя в CMakelists.txt, я вижу запись для mod_cgi.c (с флагом, установленным в I), но нет записи для mod_cgid.c:

SET(MODULE_LIST 
... 
"modules/generators/mod_autoindex+A+directory listing" 
"modules/generators/mod_cgi+I+CGI scripts" 
"modules/generators/mod_info+I+server information" 
... 
)

Я попытался добавить запись для mod_cgid.c.Я также попытался изменить запись для mod_cgi.c.Ни одна из модификаций не привела к желаемому изменению httpd.conf.

Как сделать это изменение таким, чтобы его можно было добавить в файл исправления?Мне нужен файл патча, чтобы я мог добавить его в рецепт Yocto.

Есть идеи?

Спасибо, Арам

1 Ответ

1 голос
/ 28 июня 2019

Чтобы изменить файл httpd.conf, установленный на образе, вам необходимо создать файл * .bbappend.

Две возможности:

  • Используйте sed в bbappend для изменения файла httpd.conf
  • Замените исходный httpd.conf на тот, который вы предоставляете (с вашей некомментированной строкой)

Для первой возможности, вы можете посмотреть здесь .

Для второй возможности, это пример того, что делать:

FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
SRC_URI += " file://httpd.conf "

do_install_append() {
    install -d ${D}${sysconfdir}/apache2
    install -m 0644 ${WORKDIR}/httpd.conf ${D}${sysconfdir}/apache2/httpd.conf
}

Файл * .bbappend должен иметь имя apache2 _%. Bbappend или apache2_.bbappend.

Дерево файлов в вашей мета будет:

meta-my-meta
├──recipes-httpd
│  └──apache2
│     ├──apache2_%.bbappend
│     └──apache2
│        └──httpd.conf
│ 
└──recipes-...
...