Home > Enterprise >  Docker composer build error: ERROR: unable to select packages
Docker composer build error: ERROR: unable to select packages

Time:09-02

When I run docker composer build or docker compose build --no-cache I get below error.

First I thought it was a network problem. But I tested the container does have internet access by placing a ping command in the docker file, which successfully receives a ping response.

What is the issue, and how can I solve it?

Step 6/16 : RUN apk add --upgrade --no-cache     acl     bash     bash-doc     bash-completion     autoconf     icu-dev     libxml2-dev     mysql-dev     pcre     php7-ctype     php7-fileinfo     php7-gd     php7-intl     php7-json     php7-mbstring     php7-openssl     php7-simplexml     php7-tokenizer     php7-xml     php7-bcmath     php7-pdo     php7-pdo_mysql     freetype-dev     libjpeg-turbo-dev     libpng-dev     nodejs     patch     tidyhtml-dev     imap-dev     libzip-dev     git     python2
 ---> Running in 1ae4ac5b75b6
fetch https://dl-cdn.alpinelinux.org/alpine/v3.16/main/x86_64/APKINDEX.tar.gz
fetch https://dl-cdn.alpinelinux.org/alpine/v3.16/community/x86_64/APKINDEX.tar.gz
ERROR: unable to select packages:
  php7-bcmath (no such package):
    required by: world[php7-bcmath]
  php7-ctype (no such package):
    required by: world[php7-ctype]
  php7-fileinfo (no such package):
    required by: world[php7-fileinfo]
  php7-gd (no such package):
    required by: world[php7-gd]
  php7-intl (no such package):
    required by: world[php7-intl]
  php7-json (no such package):
    required by: world[php7-json]
  php7-mbstring (no such package):
    required by: world[php7-mbstring]
  php7-openssl (no such package):
    required by: world[php7-openssl]
  php7-pdo (no such package):
    required by: world[php7-pdo]
  php7-pdo_mysql (no such package):
    required by: world[php7-pdo_mysql]
  php7-simplexml (no such package):
    required by: world[php7-simplexml]
  php7-tokenizer (no such package):
    required by: world[php7-tokenizer]
  php7-xml (no such package):
    required by: world[php7-xml]
  python2 (no such package):
    required by: world[python2]
ERROR: Service 'application' failed to build: The command '/bin/sh -c apk add --upgrade --no-cache     acl     bash     bash-doc     bash-completion     autoconf     icu-dev     libxml2-dev     mysql-dev     pcre     php7-ctype     php7-fileinfo     php7-gd     php7-intl     php7-json     php7-mbstring     php7-openssl     php7-simplexml     php7-tokenizer     php7-xml     php7-bcmath     php7-pdo     php7-pdo_mysql     freetype-dev     libjpeg-turbo-dev     libpng-dev     nodejs     patch     tidyhtml-dev     imap-dev     libzip-dev     git     python2' returned a non-zero code: 14

EDIT:

Tried suggestion of @Mureinik to use FROM php:7.4-fpm-alpine3.15 instead of FROM php:7.4-fpm-alpine. When I tied this, it gets past the initial error. But I get a different error instead. See below.

#0 69.23 creating libtool
#0 69.26 appending configuration tag "CXX" to libtool
#0 69.32 configure: patching config.h.in
#0 69.32 configure: creating ./config.status
#0 69.36 config.status: creating config.h
#0 69.39 /bin/sh /usr/src/php/ext/iconv/libtool --mode=compile cc -I"/usr/include" -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 -I. -I/usr/src/php/ext/iconv -DPHP_ATOM_INC -I/usr/src/php/ext/iconv/include -I/usr/src/php/ext/iconv/main -I/usr/src/php/ext/iconv -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib  -fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DHAVE_CONFIG_H  -I/usr/include -fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64   -c /usr/src/php/ext/iconv/iconv.c -o iconv.lo 
#0 69.45 mkdir .libs
#0 69.45  cc -I/usr/include -DZEND_ENABLE_STATIC_TSRMLS_CACHE=1 -I. -I/usr/src/php/ext/iconv -DPHP_ATOM_INC -I/usr/src/php/ext/iconv/include -I/usr/src/php/ext/iconv/main -I/usr/src/php/ext/iconv -I/usr/local/include/php -I/usr/local/include/php/main -I/usr/local/include/php/TSRM -I/usr/local/include/php/Zend -I/usr/local/include/php/ext -I/usr/local/include/php/ext/date/lib -fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DHAVE_CONFIG_H -I/usr/include -fstack-protector-strong -fpic -fpie -O2 -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c /usr/src/php/ext/iconv/iconv.c  -fPIC -DPIC -o .libs/iconv.o
#0 69.60 /usr/src/php/ext/iconv/iconv.c: In function 'zm_startup_miconv':
#0 69.60 /usr/src/php/ext/iconv/iconv.c:284:4: error: '_libiconv_version' undeclared (first use in this function)
#0 69.60   284 |    _libiconv_version >> 8, _libiconv_version & 0xff);
#0 69.60       |    ^~~~~~~~~~~~~~~~~
#0 69.60 /usr/src/php/ext/iconv/iconv.c:284:4: note: each undeclared identifier is reported only once for each function it appears in
#0 69.60 /usr/src/php/ext/iconv/iconv.c: In function '_php_iconv_appendl':
#0 69.60 /usr/src/php/ext/iconv/iconv.c:181:15: warning: implicit declaration of function 'libiconv'; did you mean 'iconv'? [-Wimplicit-function-declaration]
#0 69.60   181 | #define iconv libiconv
#0 69.60       |               ^~~~~~~~
#0 69.60 /usr/src/php/ext/iconv/iconv.c:453:8: note: in expansion of macro 'iconv'
#0 69.60   453 |    if (iconv(cd, (char **)&in_p, &in_left, (char **) &out_p, &out_left) == (size_t)-1) {
#0 69.60       |        ^~~~~
#0 69.64 make: *** [Makefile:192: iconv.lo] Error 1
------
failed to solve: executor failed running [/bin/sh -c docker-php-ext-install intl zip pcntl pdo_mysql iconv opcache soap tidy imap bcmath &&     php -r 'ini_set("display_errors", 1); error_reporting(-1); iconv("UTF-8", "ASCII//TRANSLIT", "foobar");']: exit code: 2

CodePudding user response:

you might be missing some repositories under /etc/apk/repositories, which contains these packages. you will need to add them before you could download them.

CodePudding user response:

I looked at the php7-bcmath package, but it seems the same issue occurs in most of them. This package has builds for Alpine 3.13 through 3.15, but the latest Alpine is 3.16, which doesn't have a build for this package yet. You can wait until it's available, or lock down your Dockerfile to a specific Alpine version that has a build for this package, e.g.:

FROM alpine:3.15

EDIT:
According to additional information supplied in the comments, the dockerfile uses FROM php:7.4-fpm-alpine, which internally uses FROM alpine. Instead, you could use a version that locks down to a specific Alpine version:

FROM php:7.4-fpm-alpine3.15
  • Related