我正在运行 Docker 容器,但在安装软件包时遇到问题。经过几个小时的谷歌搜索后,我尝试了各种方法来解决该问题,但似乎没有任何效果。我对 Linux 的了解还不够,无法找出问题所在。
具体来说,我正在尝试使用php-common
apt-get 安装该软件包,并且不断收到E: Package 'php-common' has no installation candidate
响应。我尝试安装的许多软件包都会出现此响应,但我不知道为什么。
Docker 镜像我使用的是官方 php 镜像php7.1-apache
,基于 Debian 10 (Buster)。
运行uname -a
打印:Linux 1fa97a139193 4.9.184-linuxkit #1 SMP Tue Jul 2 22:58:16 UTC 2019 x86_64 GNU/Linux
这是我的文件的内容/etc/apt/sources.list
:
# deb http://snapshot.debian.org/archive/debian/20190910T000000Z buster main
deb http://deb.debian.org/debian buster main
# deb http://snapshot.debian.org/archive/debian-security/20190910T000000Z buster/updates main
deb http://security.debian.org/debian-security buster/updates main
# deb http://snapshot.debian.org/archive/debian/20190910T000000Z buster-updates main
deb http://deb.debian.org/debian buster-updates main
输出cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 10 (buster)"
NAME="Debian GNU/Linux"
VERSION_ID="10"
VERSION="10 (buster)"
VERSION_CODENAME=buster
ID=debian
HOME_URL="https://www.debian.org/"
SUPPORT_URL="https://www.debian.org/support"
BUG_REPORT_URL="https://bugs.debian.org/"
输出cat /etc/issue
Debian GNU/Linux 10 \n \l
答案1
我不知道该php7.1-apache
图像托管在哪里,因此无法检查;但我怀疑您的问题源于这样一个事实:大多数基于 Debian 的映像都没有存储库索引,因此apt-get install
最初无法工作。
使用此类容器时的第一步是运行apt-get update
.一旦完成,apt-get install
应该可以工作,假设您想要的包在配置的存储库中可用。
关于您的sources.list
,如果您尝试从 Debian 10 安装软件包,我强烈建议您从基于 Debian 10 的映像开始,而不是基于旧版本的映像。你可以从debian:10
...开始
答案2
这是故意的,如中所述“E:软件包‘php-XXX’没有安装候选”。
这恰当的解决此错误的方法是
FROM debian:XXX
直接使用并安装 Debian 的 PHP 软件包,或者使用docker-php-ext-install
、pecl
和/或phpize
安装必要的附加扩展和实用程序。