Docker CrossCompile Debian build-essential: неудовлетворенные зависимости armhf

En bash, los nombres de variables solo pueden estar formados por caracteres alfanuméricos de un solo -byte o guión bajo (y el primer carácter no puede ser un dígito ).

Entonces, www.example.com_tokenno es un nombre de variable válido, www.example.com_token="asdfasdf"no se reconoce como una asignación sino como un comando simple.

En ksh93 (el shell bashintenta emular ), www.example.com_token="asdfasdf"funcionaría solo si definiera la variable wwwcomo una variable compuesta :

$ compound www
$ www.example.com_token="asdfasdf"
$ typeset -p www
typeset -C www=(example=(com_token=asdfasdf))
$ printf '%s\n' "${www.example.com_token}"
asdfasdf

En bash, posiblemente podría usar una variable de matriz asociativa (una de esas características ksh93 copiadas porbash):

typeset -A token
token[www.example.com]=asdfasdf
printf '%s\n' "${token[www.example.com]}"

(esa sintaxis también debería funcionar en ksh93yzsh).

Si no puede modificar eso config.txtpara que sea compatible con la sintaxis de su shell, posiblemente podría editarlo sobre la marcha antes de evaluarlo. Como (con ksh93, bashozsh):

typeset -A token
. <(sed 's/^\([^=]*\)_token=/token[\1]=/' < config.txt)

Para transformar el x.y_token=a token[x.y]=o:

. <(sed -e :1 -e 's/^\([^=]*\)\.\(.*=\)/\1_\2/; t1' < config.txt)

Para reemplazar cada .a la izquierda del =con _.

Pero tenga cuidado, cualquiera de esos podría hacer reemplazos en lugares donde no se esperan como en:

foo.bar_token="multi
line.x. _token assignment (=)"

O si el expediente no contiene únicamente asignaciones.

Ahora, si ese config.txten realidad no contiene la sintaxis de shell adecuada,desea buscar otros problemas de sintaxis como líneas que contienen foo="price: $12"o foo="x `y' z"donde esos $, `son ​​operadores especiales en la sintaxis de Shell.

4
02.07.2017, 21:31
2 ответа

Эта строка вызывает проблемы:

RUN apt-get install -y build-essential:armhf

Вам не нужно build-essential:armhfдля кросс-компиляции -. Вы должны удалить это; docker buildдолжен без проблем собрать контейнер.

3
27.01.2020, 20:55

Похоже, есть некоторые зависимости, которые невозможно установить. Что именно сказать сложно.

К сожалению, вывод aptне очень полезен, когда он сталкивается с проблемой, которую не может решить. Однако вы можете уговорить его выдать больше вывода, указав -o Debug::pkgProblemResolver=yesв командной строке apt. это должно дать вам более подробную информацию о том, что он пытается сделать, и, надеюсь, позволит вам это исправить.

Если это не помогло, запустите apt с этой опцией и опубликуйте результат.

1
27.01.2020, 20:55

Теги

Похожие вопросы