1
votes

Yocto: créer un nouveau répertoire dans etcdir

Je suis nouveau sur Yocto, Je veux créer un répertoire dans / etc et copier mes certificats de serveur dans ce répertoire. J'ai essayé de faire ci-dessous, mais cela ne crée aucun répertoire dans / etc, mais je n'obtiens aucune erreur de compilation:

    DESCRIPTION = "OC sample service"

SUMMARY = "Install and start a systemd service and copy server certificates"

LICENSE = "MIT"

SRC_URI = "file://service.tar.gz"

inherit systemd

S = "${WORKDIR}/service"

SYSTEMD_PACKAGES = "${PN}"
SYSTEMD_SERVICE_${PN} = "sample.service"
SYSTEMD_AUTO_ENABLE = "enable"
INSANE_SKIP_${PN} += "installed-vs-shipped"

do_configure() {
        :
}

do_compile() {
        :
}

do_install() {

        install -d ${D}${systemd_unitdir}/system

        install -m 0755 ${S}/sample.service ${D}${systemd_unitdir}/system

        mkdir -p ${D}${etcdir}/oc_certs

        install -m 0755 ${S}/certs/* ${D}${etcdir}/oc_certs

}

FILES_${PN} = "${systemd_unitdir}/system

"

 service.tar. gz contient les éléments suivants

Maintenant, le problème est que sample.service est correctement placé à l'emplacement mais / etc / oc_certs n'est pas en cours de création.


3 commentaires

«Ne fonctionne pas» n'explique pas ce qui ne fonctionne pas exactement. Si vous obtenez un message d'erreur, indiquez-le. Si l'extrait de code n'est pas exécuté, fournissez la recette complète sur laquelle vous travaillez, afin que nous puissions voir pourquoi il n'est pas exécuté. En règle générale, utilisez le modèle suivant lorsque vous posez des questions: a) à quoi vous attendez-vous, spécifiquement b) ce qui se passe réellement, spécifiquement


Salut @AlexanderKanavin, Merci pour le commentaire rapide, j'ai mis à jour ma question.


FILES semble toujours manquer le répertoire.


3 Réponses :


2
votes

"Ne fonctionne pas" est une description d'erreur plutôt mauvaise, mais le problème le plus probable est qu'elle n'est pas incluse dans l'image. C'est parce que les mécanismes d'empaquetage de bitbakes ne connaissent pas ce répertoire, alors ajoutez-le avec:

FILES_${PN} += "${etcdir}/oc_certs"

Si vous avez besoin d'aide supplémentaire, veuillez étendre votre question avec une description précise de l'erreur, respectivement le journal correspondant.


1 commentaires

Bonjour LetoThe2nd, Merci pour la réponse, j'ai ajouté FILES _ $ {PN} + = "$ {etcdir} / oc_certs", mais cela n'a pas aidé.



4
votes

En plus de la réponse de LetoThe2nd: la variable $ {etcdir} est généralement vide. Si vous voulez une variable pour / etc , c'est $ {sysconfdir} . Donc, vos fichiers sont probablement installés dans le répertoire racine.

Vérifiez la sortie de bitbake -e et essayez de trouver etcdir pour vérifier.

Déposez également INSANE_SKIP _ $ {PN} + = "installed-vs-generated" qui masque l'erreur que vous essayez de trouver (vous verrez ce qui est installé là où mais pas livré). p>

La réponse de BTW LetoThe2nd est également nécessaire, car vous écrasez (au lieu d'ajouter FILES _ $ {PN} , sinon ce ne serait pas nécessaire. Le $ {sysconfdir} fait déjà partie de FILES _ $ {PN} .


0 commentaires

0
votes

Il vous manque un / après $ {D}. Pour créer un répertoire, dites mydir dans votre dossier / etc, ajoutez simplement le code suivant dans le do_install () de votre recette.

do_install() {
    install -d ${D}/etc/mydir
 }


1 commentaires

Eh bien, le $ {sysconfdir} contient / etc , donc dans cette question particulière, la barre oblique n'est pas nécessaire. Mais il est vrai que $ {D} ne contient pas la barre oblique de fin.