我正在使用shippable构建我的项目,其中一部分需要PHP。
构建脚本是这样的:
apt-get update
apt-get install -y software-properties-common python-software-properties language-pack-en-base
LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php
apt-get update
apt-get install -y php7.0 php7.0-bcmath
今天,在安装PHP时构建失败,并出现以下错误:
apt-get install -y php7.0 php7.0-bcmath
Reading package lists...
Building dependency tree...
Reading state information...
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:
The following packages have unmet dependencies:
php7.0 : Depends: libapache2-mod-php7.0 but it is not going to be installed or
php7.0-fpm but it is not going to be installed or
php7.0-cgi but it is not going to be installed
Depends: php7.0-common but it is not going to be installed
php7.0-bcmath : Depends: php7.0-common but it is not going to be installed
E: Unable to correct problems, you have held broken packages.
所以我启动了一个本地docker容器,以查看是否在shippable发生了什么奇怪的事情-使用以下命令:
docker run -i -t ubuntu:14.04 /bin/bash
并运行上面列出的5条构建线,我得到相同的错误。我要做的下一件事是安装
aptitude
来查看是否可以得到更好的错误,然后运行此aptitude install -y php7.0 php7.0-bcmath
-这是aptitude输出:aptitude install -y php7.0 php7.0-bcmath
The following NEW packages will be installed:
apache2{a} apache2-bin{a} apache2-data{a} libapache2-mod-php7.0{ab}
libapr1{a} libaprutil1{a} libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a}
libedit2{a} php-common{a} php7.0 php7.0-bcmath php7.0-cli{ab}
php7.0-common{ab} php7.0-json{a} php7.0-opcache{a} php7.0-readline{a}
psmisc{a} ssl-cert{a}
0 packages upgraded, 19 newly installed, 0 to remove and 7 not upgraded.
Need to get 4950 kB of archives. After unpacking 20.2 MB will be used.
The following packages have unmet dependencies:
php7.0-cli : Depends: libssl1.1 (>= 1.1.0) which is a virtual package.
php7.0-common : Depends: libssl1.1 (>= 1.1.0) which is a virtual package.
libapache2-mod-php7.0 : Depends: libssl1.1 (>= 1.1.0) which is a virtual package.
The following actions will resolve these dependencies:
Keep the following packages at their current version:
1) libapache2-mod-php7.0 [Not Installed]
2) php7.0 [Not Installed]
3) php7.0-bcmath [Not Installed]
4) php7.0-cli [Not Installed]
5) php7.0-common [Not Installed]
6) php7.0-json [Not Installed]
7) php7.0-opcache [Not Installed]
8) php7.0-readline [Not Installed]
The following NEW packages will be installed:
psmisc{a}
0 packages upgraded, 1 newly installed, 0 to remove and 7 not upgraded.
Need to get 53.2 kB of archives. After unpacking 229 kB will be used.
Get: 1 http://archive.ubuntu.com/ubuntu/ trusty/main psmisc amd64 22.20-1ubuntu2 [53.2 kB]
Fetched 53.2 kB in 0s (911 kB/s)
Selecting previously unselected package psmisc.
(Reading database ... 14894 files and directories currently installed.)
Preparing to unpack .../psmisc_22.20-1ubuntu2_amd64.deb ...
Unpacking psmisc (22.20-1ubuntu2) ...
Setting up psmisc (22.20-1ubuntu2) ...
我有一些问题:
1)如何解决此问题?我已经做了一些查找,但无法解决如何更新libssl
2)为什么突然发生这种情况,以前对于PHP7.0从来没有问题?
一些其他信息:
openssl version -a
OpenSSL 1.0.1f 6 Jan 2014
built on: Mon Jan 30 20:38:38 UTC 2017
platform: debian-amd64
options: bn(64,64) rc4(16x,int) des(idx,cisc,16,int) blowfish(idx)
compiler: cc -fPIC -DOPENSSL_PIC -DOPENSSL_THREADS -D_REENTRANT -DDSO_DLFCN -DHAVE_DLFCN_H -m64 -DL_ENDIAN -DTERMIO -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -Wl,-z,relro -Wa,--noexecstack -Wall -DMD32_REG_T=int -DOPENSSL_IA32_SSE2 -DOPENSSL_BN_ASM_MONT -DOPENSSL_BN_ASM_MONT5 -DOPENSSL_BN_ASM_GF2m -DSHA1_ASM -DSHA256_ASM -DSHA512_ASM -DMD5_ASM -DAES_ASM -DVPAES_ASM -DBSAES_ASM -DWHIRLPOOL_ASM -DGHASH_ASM
OPENSSLDIR: "/usr/lib/ssl"
uname -a
Linux b5cbe94d7da8 4.9.13-moby #1 SMP Sat Mar 25 02:48:44 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
最佳答案
PPA维护人员已“修复”此问题according to a GitHub issue。
要回答您的问题:
PPA已修复,但是下次请在适当的地方填写问题-例如issue tracker。
ppa:ondrej/php构建中的软件包取决于ppa:ondrej/apache2,该软件包最近已更新到OpenSSL 1.1.0库,并且这些软件包已由最新的PHP版本获取。由于此举,必须使用OpenSSL 1.1.0库更新ppa:ondrej/php。
一个或两个错误偶尔会发生,并在适当位置填充该错误后立即修复。
即使在同一二进制文件中混合使用更多版本的OpenSSL是绝对安全的,因为OpenSSL使用正确的SONAME,并且共享库中的所有符号均为versioned。
关于php - 由于无法解决libssl依赖关系,因此在Ubuntu 14.04上安装PHP 7现在失败了?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44947497/