"Unable to locate package" only inside a docker image - php

When I try to install APC inside my docker image with
apt-get update && apt-get install php-apcu
I get the message :
Unable to locate package php-apcu
But in my local machine the installation works perfectly. Did I miss something ?

You need to add the universe repository:
RUN apt-get update &&\
apt-get install -y software-properties-common &&\
add-apt-repository universe &&\
apt-get install -y php-apcu
If you get a "Error: 'universe' invalid" then you need to use the full source line:
sudo add-apt-repository "deb http://archive.ubuntu.com/ubuntu $(lsb_release -sc) universe"
instead of "universe" in your apt-add-repository line.

Related

Docker PHP7 CLI Debian Buster how to install package php-imagick?

I have a PHP-CLI Docker image of Debian Buster and would like to install php-imagick package but with command:
Dockerfile:
RUN apt-get install -y php-imagick
I get an error:
Package php-imagick is not available, but is referred to by another
package. This may mean that the package is missing, has been
obsoleted, or is only available from another source
E: Package 'php-imagick' has no installation candidate
running before:
RUN apt-get update -y && apt-get upgrade -y
did not help.
how come there is no package candidate for php-imagick?
how to install and enable imagick extension for this PHP Docker image?
Dockerfile to replicate issue:
FROM php:7.3-buster
RUN apt-get update -y && apt-get upgrade -y
RUN apt-get install -y php-imagick
build command
docker build --tag testimage .
Unless you have a good reason not to, using the packages from https://deb.sury.org/ is probably a good idea. The following appears to work:
FROM debian:buster-slim
USER root
# Get Debian up-to-date
RUN apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y git \
mariadb-client wget curl \
ca-certificates lsb-release apt-transport-https gnupg bsdmainutils
RUN echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | tee -a /etc/apt/sources.list.d/php.list \
&& curl https://packages.sury.org/php/apt.gpg | apt-key add - \
&& apt-get update -qq \
&& DEBIAN_FRONTEND=noninteractive apt-get install -y php7.3 php7.3-common php7.3-cli \
php7.3-mysql php7.3-curl php7.3-xml php7.3-mbstring \
php7.3-intl php7.3-redis php7.3-zip \
php7.3-imagick supervisor

PHP Docker install php7-mysql

For a while now, I'm trying to install the php7-mysql driver into different PHP docker containers from php/docker with no luck.
My Dockerfile looks like this:
# Dockerfile
FROM php:7.3-rc-apache-stretch
RUN apt-get update && apt-get upgrade -y
When I attach to the container and try to run
apt-get install php7.0-mysql
Debian stretch says that it has no installation candidate.
E: Package 'php7.0-mysql' has no installation candidate
What can I do to be able to install php7.0 modules to Debian Stretch?
Thanks in advance, this really took me some pomodores now!
It appears you are missing the repository for php7.
Adding the php7 ppa:
sudo add-apt-repository ppa:ondrej/php
Then update:
sudo apt-get update
Now do a search to confirm php7 is there:
sudo apt search php7
Now install the php7 package:
sudo apt install php7.0-mysql
Did not work with ppa:ondrej/php but this works:
sudo apt-get update
sudo apt-get install apt-transport-https lsb-release ca-certificates
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
sudo sh -c 'echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
sudo apt-get update
sudo apt-get install php7.0-mysql
You can also install php7.0 from there

install php7.0-pgsql - Unable to locate package php-pgsql

I am trying to install php7.0-pgsql, but always get
E: Unable to locate package phpXXX-pgsql
I am trying
apt-get update
apt-get install php7.0-pgsql=7.0.12-1+deb
or
apt-get install php7.0-pgsql=7.0.12-1
or
apt-get install php7.0-pgsql
or even
apt-get install php-pgsql
always with the same result. Anyone can help me please?
echo "deb http://ftp.de.debian.org/debian stretch main" >> /etc/apt/sources.list
apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install -y php7.0-pgsql

phpbrew Bash init failure

I am at the initial stages of preparing for multiphp nginx following a complete install of Ubuntu and the git page
http://phpbrew.github.io/phpbrew/
I have duplicated steps followed here for clarity and re-installed Ubuntu and followed exactly what is below in case my error correction attempts were causing issues
https://docs.google.com/spreadsheets/d/1KbfqW5PqFejlCMV9yEUHgEr5FdCh5P6Ufv-HRQH3u9g/edit?usp=sharing
but fails with /usr/bin/env: php: No such file or directory.
Please check out our wiki and install the requirements
https://github.com/phpbrew/phpbrew/wiki/Requirement
apt-get build-dep php5
apt-get install -y php5 php5-dev php-pear autoconf automake curl libcurl3-openssl-dev build-essential libxslt1-dev re2c libxml2 libxml2-dev php5-cli bison libbz2-dev libreadline-dev
apt-get install -y libfreetype6 libfreetype6-dev libpng12-0 libpng12-dev libjpeg-dev libjpeg8-dev libjpeg8 libgd-dev libgd3 libxpm4 libltdl7 libltdl-dev
apt-get install -y libssl-dev openssl
apt-get install -y gettext libgettextpo-dev libgettextpo0
apt-get install -y libicu-dev
apt-get install -y libmhash-dev libmhash2
apt-get install -y libmcrypt-dev libmcrypt4
I did not post this without much effort trying to resolve first - about a day and many visited links.
Anyway the issue lay with thinking php was installed with Ubuntu +/ updates.
Note that phpbrew has php as one of its dependencies.
I guess a fresh OS install went against me on this occasion.
sudo apt-get install php5

Dockerfile php-fpm unmet dependencies

I have a Dockerfile in which to build a container for php-fpm. I pulled in my base ubuntu image and it gets to work but then exits when trying to install php-fpm and php5-intl due to unmet dependencies.
Can anyone check over my file and spot anything obvious please :)
FROM phalcon/ubuntu
MAINTAINER bob <bob#bob.com>
RUN echo "deb http://archive.ubuntu.com/ubuntu/ vivid universe" >> /etc/apt/sources.list
# Install software requirements
RUN apt-get update && \
apt-get install -y software-properties-common && \
add-apt-repository -y ppa:ondrej/php5 && \
add-apt-repository -y ppa:nginx/stable && \
apt-get update -y --force-yes && \
apt-get upgrade -y --force-yes && \
BUILD_PACKAGES="supervisor php5-fpm git php5-mysql php5-curl php5-gd php5-intl php5-mcrypt php5-memcache php5-sqlite php5-tidy php5-xmlrpc php5-xsl php5-pgsql php5-mongo php5-dev pwgen" && \
apt-get -y --force-yes install $BUILD_PACKAGES && \
apt-get remove --purge -y software-properties-common && \
apt-get autoremove -y && \
apt-get clean && \
apt-get autoclean
# Add PHP config.
ADD php-fpm.conf /etc/php-fpm.conf
# Define mountable directories.
VOLUME ["/etc/php-fpm.d", "/var/log/php-fpm", "/srv/http"]
# Define entrypoint.
ENTRYPOINT ["php-fpm"]
# Expose ports.
EXPOSE 9000
Probably some issue regarding the use of the source image phalcon/ubuntu from what I can see.
There's actually no reason to build your own PHP-FPM image, as official ones are supplied: https://hub.docker.com/_/php/ This way you can select the exact PHP version you want to use.
Just for kicks, here is the repository from which the image is built (PHP 5.6): https://github.com/docker-library/php/tree/master/5.6/fpm

Categories