Berechtigung im Installationsbefehl für Yocto-Rezepte verweigert

Berechtigung im Installationsbefehl für Yocto-Rezepte verweigert

Ich versuche mich mit dem Yocto-Build-Prozess vertraut zu machen und arbeite derzeit mit Rezepten. Ich habe ein sehr einfaches Rezept

DESCRIPTION = "Hello world"

S = "${WORKDIR}"
SRC_URI="file://bye.sh"
LICENSE = "CLOSED"

LIC_FILES_CHKSUM = "file://${S}/README;md5=e584df0feead52ed7de9b60172adc0cf "

#${D} is /usr and ${bindir} is bin 
    do_install() {
         install  -d /test 
        install -m 0777 bye.sh /test
}

Mir wurde gesagt, dass das Installationsprogramm das Verzeichnis für Sie erstellen wird, wenn es es nicht findet. In diesem Fall ist das jedoch nicht der Fall! Der Fehler, den es mir anzeigt, ist

Log data follows:
| DEBUG: Executing shell function do_install
| install: cannot create regular file ‘/usr/bin/bye.sh’: Permission denied
| WARNING: /home/builder/project/runqeme_qemux86/build/tmp/work/i586-poky-linux/directory/1.0-r0/temp/run.do_install.22136:1 exit 1 from 'install -m 0777 bye.sh /usr/bin'
| ERROR: Function failed: do_install (log file is located at /home/builder/project/runqeme_qemux86/build/tmp/work/i586-poky-linux/directory/1.0-r0/temp/log.do_install.22136)

Es ist nicht so, dass dort kein Verzeichnis erstellt werden kann. Das Rezept weigert sich, die Bash-Datei irgendwo abzulegen, sofern sie sich nicht in einem bestimmten Verzeichnis befindet.

Antwort1

Schauen Sie sich die große, aber umfassendeYocto-Referenzhandbuchund daseinfaches Beispieldort. Es zeigt ein typisches Installationsskript, das Dateien in ein Unterverzeichnis von verschiebt ${D}, z. B.

install -d ${D}${bindir}

Sie müssen eine ähnliche Taktik verwenden, z. B. install -d ${D}/testusw. Diese Variable wird erklärtHier.

Abschnitt lesen5.3.13. Installierenfür das, was während der Installationsphase voraussichtlich passieren wird.

Antwort2

Sie haben keine Berechtigung, Dateien in Ihrem Zielverzeichnis zu erstellen, das wahrscheinlich root gehört. Vielleicht können Sie die DVariable irgendwo in Ihrem Home-Verzeichnis festlegen und dann aufrufen do_install.

verwandte Informationen