在 Centos 7 上安装 mongodb 失败,出现包错误
Fail install mongodb on Centos 7 with Package error
我尝试用 PHP 安装 mongodb 到 Centos 7 服务器。我遵循 https://www.php.net/manual/en/mongodb.installation.pecl.php
的安装指南
但是sudo pecl install mongodb
显示错误信息:
WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update
downloading mongodb-1.8.1.tgz ...
Starting to download mongodb-1.8.1.tgz (1,292,453 bytes)
................................................................................................................................................................................................................................................................done: 1,292,453 bytes
586 source files, building
running: phpize
Can't find PHP headers in /usr/include/php
The php-devel package is required for use of this command.
ERROR: `phpize' failed
根据错误提示,我安装php-devel package
yum install php-devel
但是我遇到了很多依赖错误:
Error: Package: libstdc++-devel-4.8.5-16.el7_4.2.x86_64 (ultra-centos-7.4-updates)
Requires: libstdc++(x86-64) = 4.8.5-16.el7_4.2
Installed: libstdc++-4.8.5-28.el7_5.1.x86_64 (installed)
libstdc++(x86-64) = 4.8.5-28.el7_5.1
Available: libstdc++-4.8.5-16.el7.x86_64 (ultra-centos-7.4-base)
libstdc++(x86-64) = 4.8.5-16.el7
Available: libstdc++-4.8.5-16.el7_4.1.x86_64 (ultra-centos-7.4-updates)
libstdc++(x86-64) = 4.8.5-16.el7_4.1
Available: libstdc++-4.8.5-16.el7_4.2.x86_64 (ultra-centos-7.4-updates)
libstdc++(x86-64) = 4.8.5-16.el7_4.2
Error: Package: libcom_err-devel-1.42.9-10.el7.x86_64 (ultra-centos-7.4-base)
Requires: libcom_err(x86-64) = 1.42.9-10.el7
Installed: libcom_err-1.42.9-12.el7_5.x86_64 (installed)
libcom_err(x86-64) = 1.42.9-12.el7_5
Available: libcom_err-1.42.9-10.el7.x86_64 (ultra-centos-7.4-base)
libcom_err(x86-64) = 1.42.9-10.el7
Error: Package: gcc-c++-4.8.5-16.el7_4.2.x86_64 (ultra-centos-7.4-updates)
Requires: libstdc++ = 4.8.5-16.el7_4.2
Installed: libstdc++-4.8.5-28.el7_5.1.x86_64 (installed)
libstdc++ = 4.8.2-16.el7_5
libstdc++ = 4.8.5-28.el7_5.1
Available: libstdc++-4.8.5-16.el7.x86_64 (ultra-centos-7.4-base)
libstdc++ = 4.8.5-16.el7
libstdc++ = 4.8.2-16.el7
Available: libstdc++-4.8.5-16.el7_4.1.x86_64 (ultra-centos-7.4-updates)
libstdc++ = 4.8.5-16.el7_4.1
libstdc++ = 4.8.2-16.el7_4
Available: libstdc++-4.8.5-16.el7_4.2.x86_64 (ultra-centos-7.4-updates)
libstdc++ = 4.8.5-16.el7_4.2
libstdc++ = 4.8.2-16.el7_4
Error: Package: glibc-devel-2.17-196.el7_4.2.x86_64 (ultra-centos-7.4-updates)
Requires: glibc = 2.17-196.el7_4.2
Installed: glibc-2.17-222.el7.x86_64 (installed)
glibc = 2.17-222.el7
Available: glibc-2.17-196.el7.x86_64 (ultra-centos-7.4-base)
glibc = 2.17-196.el7
Available: glibc-2.17-196.el7_4.2.x86_64 (ultra-centos-7.4-updates)
glibc = 2.17-196.el7_4.2
Error: Package: glibc-headers-2.17-196.el7_4.2.x86_64 (ultra-centos-7.4-updates)
Requires: glibc = 2.17-196.el7_4.2
Installed: glibc-2.17-222.el7.x86_64 (installed)
glibc = 2.17-222.el7
Available: glibc-2.17-196.el7.x86_64 (ultra-centos-7.4-base)
glibc = 2.17-196.el7
Available: glibc-2.17-196.el7_4.2.x86_64 (ultra-centos-7.4-updates)
glibc = 2.17-196.el7_4.2
Error: Package: gcc-4.8.5-16.el7_4.2.x86_64 (ultra-centos-7.4-updates)
Requires: libgomp = 4.8.5-16.el7_4.2
Installed: libgomp-4.8.5-28.el7_5.1.x86_64 (installed)
libgomp = 4.8.2-16.el7_5
libgomp = 4.8.5-28.el7_5.1
Available: libgomp-4.8.5-16.el7.x86_64 (ultra-centos-7.4-base)
libgomp = 4.8.5-16.el7
libgomp = 4.8.2-16.el7
Available: libgomp-4.8.5-16.el7_4.1.x86_64 (ultra-centos-7.4-updates)
libgomp = 4.8.5-16.el7_4.1
libgomp = 4.8.2-16.el7_4
Available: libgomp-4.8.5-16.el7_4.2.x86_64 (ultra-centos-7.4-updates)
libgomp = 4.8.5-16.el7_4.2
libgomp = 4.8.2-16.el7_4
Error: Package: 1:openssl-devel-1.0.2k-8.el7.x86_64 (ultra-centos-7.4-base)
Requires: openssl-libs(x86-64) = 1:1.0.2k-8.el7
Installed: 1:openssl-libs-1.0.2k-12.el7.x86_64 (installed)
openssl-libs(x86-64) = 1:1.0.2k-12.el7
Available: 1:openssl-libs-1.0.2k-8.el7.x86_64 (ultra-centos-7.4-base)
openssl-libs(x86-64) = 1:1.0.2k-8.el7
Error: Package: libkadm5-1.15.1-8.el7.x86_64 (ultra-centos-7.4-base)
Requires: krb5-libs(x86-64) = 1.15.1-8.el7
Installed: krb5-libs-1.15.1-19.el7.x86_64 (installed)
krb5-libs(x86-64) = 1.15.1-19.el7
Available: krb5-libs-1.15.1-8.el7.x86_64 (ultra-centos-7.4-base)
krb5-libs(x86-64) = 1.15.1-8.el7
Error: Package: krb5-devel-1.15.1-8.el7.x86_64 (ultra-centos-7.4-base)
Requires: krb5-libs(x86-64) = 1.15.1-8.el7
Installed: krb5-libs-1.15.1-19.el7.x86_64 (installed)
krb5-libs(x86-64) = 1.15.1-19.el7
Available: krb5-libs-1.15.1-8.el7.x86_64 (ultra-centos-7.4-base)
krb5-libs(x86-64) = 1.15.1-8.el7
Error: Package: libsepol-devel-2.5-6.el7.x86_64 (ultra-centos-7.4-base)
Requires: libsepol(x86-64) = 2.5-6.el7
Installed: libsepol-2.5-8.1.el7.x86_64 (installed)
libsepol(x86-64) = 2.5-8.1.el7
Available: libsepol-2.5-6.el7.x86_64 (ultra-centos-7.4-base)
libsepol(x86-64) = 2.5-6.el7
Error: Package: libselinux-devel-2.5-11.el7.x86_64 (ultra-centos-7.4-base)
Requires: libselinux(x86-64) = 2.5-11.el7
Installed: libselinux-2.5-12.el7.x86_64 (installed)
libselinux(x86-64) = 2.5-12.el7
Available: libselinux-2.5-11.el7.x86_64 (ultra-centos-7.4-base)
libselinux(x86-64) = 2.5-11.el7
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
下面是服务器的详细信息,有什么解决办法吗?
yum repolist
Loaded plugins: changelog, fastestmirror, versionlock
Loading mirror speeds from cached hostfile
* epel: download.nus.edu.sg
* remi-php73: mirrors.thzhost.com
* remi-safe: mirrors.thzhost.com
repo id repo name status
MongoDB/7/x86_64 MongoDB Repository 62
*epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 13,463
ius/x86_64 IUS for Enterprise Linux 7 - x86_64 486
mongodb-org-3.4/7 MongoDB Repository 125
nodesource/x86_64 Node.js Packages for Enterprise Linux 7 - x86_64 106
remi-php73 Remi's PHP 7.3 RPM repository for Enterprise Linux 7 - x86_64 384
remi-safe Safe Remi's RPM repository for Enterprise Linux 7 - x86_64 4,006
ultra-centos-7.4-base UltraServe CentOS-7.4 - Base 7,407
ultra-centos-7.4-extras UltraServe CentOS-7.4 - Extras 401
ultra-centos-7.4-updates UltraServe CentOS-7.4 - Updates 1,836
ultra-centos-7.x-newrelic-monitoring UltraServe CentOS-7.x - New Relic Infrastructure Monitoring Agent 10
ultra-centos-7.x-ultrarepo UltraServe CentOS-7.x - UltraServe Repo Packages 50
repolist: 28,336
rpm -q centos-release
centos-release-7-5.1804.el7.centos.2.x86_64
php --version
PHP 7.3.23 (cli) (built: Sep 29 2020 08:33:03) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.23, Copyright (c) 1998-2018 Zend Technologies
remi-php73 Remi's PHP 7.3 RPM repository for Enterprise Linux 7 - x86_64 384
看起来你正在使用我的存储库,它提供 most extensions
因此,与其尝试从源代码构建它,我建议简单地使用可用的 RPM
yum install php-pecl-mongodb
或者如果您使用软件集
yum install php73-pecl-mongodb
如 Wizard
所述
顺便说一句,安装问题似乎与 ultra-centos-7.4-base(甚至不知道这是什么)有关,因为您安装了 7.5
似乎 ultra-centos-7.4-base 与 AWS EC2 服务器一起提供。
对于面临相同依赖问题的人,您可以考虑通过以下方式更改 repos 源:
wget -O /etc/yum.repos.d/CentOS-Base.repo http://wiki.docking.org/index.php/CentOS_7_Base.repo
sed -i 's/$releasever/7/g' /etc/yum.repos.d/CentOS-Base.repo
仔细检查你的回购协议:
yum repolist
那么你应该可以 运行 yum install php-devel
我尝试用 PHP 安装 mongodb 到 Centos 7 服务器。我遵循 https://www.php.net/manual/en/mongodb.installation.pecl.php
的安装指南但是sudo pecl install mongodb
显示错误信息:
WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update
downloading mongodb-1.8.1.tgz ...
Starting to download mongodb-1.8.1.tgz (1,292,453 bytes)
................................................................................................................................................................................................................................................................done: 1,292,453 bytes
586 source files, building
running: phpize
Can't find PHP headers in /usr/include/php
The php-devel package is required for use of this command.
ERROR: `phpize' failed
根据错误提示,我安装php-devel package
yum install php-devel
但是我遇到了很多依赖错误:
Error: Package: libstdc++-devel-4.8.5-16.el7_4.2.x86_64 (ultra-centos-7.4-updates)
Requires: libstdc++(x86-64) = 4.8.5-16.el7_4.2
Installed: libstdc++-4.8.5-28.el7_5.1.x86_64 (installed)
libstdc++(x86-64) = 4.8.5-28.el7_5.1
Available: libstdc++-4.8.5-16.el7.x86_64 (ultra-centos-7.4-base)
libstdc++(x86-64) = 4.8.5-16.el7
Available: libstdc++-4.8.5-16.el7_4.1.x86_64 (ultra-centos-7.4-updates)
libstdc++(x86-64) = 4.8.5-16.el7_4.1
Available: libstdc++-4.8.5-16.el7_4.2.x86_64 (ultra-centos-7.4-updates)
libstdc++(x86-64) = 4.8.5-16.el7_4.2
Error: Package: libcom_err-devel-1.42.9-10.el7.x86_64 (ultra-centos-7.4-base)
Requires: libcom_err(x86-64) = 1.42.9-10.el7
Installed: libcom_err-1.42.9-12.el7_5.x86_64 (installed)
libcom_err(x86-64) = 1.42.9-12.el7_5
Available: libcom_err-1.42.9-10.el7.x86_64 (ultra-centos-7.4-base)
libcom_err(x86-64) = 1.42.9-10.el7
Error: Package: gcc-c++-4.8.5-16.el7_4.2.x86_64 (ultra-centos-7.4-updates)
Requires: libstdc++ = 4.8.5-16.el7_4.2
Installed: libstdc++-4.8.5-28.el7_5.1.x86_64 (installed)
libstdc++ = 4.8.2-16.el7_5
libstdc++ = 4.8.5-28.el7_5.1
Available: libstdc++-4.8.5-16.el7.x86_64 (ultra-centos-7.4-base)
libstdc++ = 4.8.5-16.el7
libstdc++ = 4.8.2-16.el7
Available: libstdc++-4.8.5-16.el7_4.1.x86_64 (ultra-centos-7.4-updates)
libstdc++ = 4.8.5-16.el7_4.1
libstdc++ = 4.8.2-16.el7_4
Available: libstdc++-4.8.5-16.el7_4.2.x86_64 (ultra-centos-7.4-updates)
libstdc++ = 4.8.5-16.el7_4.2
libstdc++ = 4.8.2-16.el7_4
Error: Package: glibc-devel-2.17-196.el7_4.2.x86_64 (ultra-centos-7.4-updates)
Requires: glibc = 2.17-196.el7_4.2
Installed: glibc-2.17-222.el7.x86_64 (installed)
glibc = 2.17-222.el7
Available: glibc-2.17-196.el7.x86_64 (ultra-centos-7.4-base)
glibc = 2.17-196.el7
Available: glibc-2.17-196.el7_4.2.x86_64 (ultra-centos-7.4-updates)
glibc = 2.17-196.el7_4.2
Error: Package: glibc-headers-2.17-196.el7_4.2.x86_64 (ultra-centos-7.4-updates)
Requires: glibc = 2.17-196.el7_4.2
Installed: glibc-2.17-222.el7.x86_64 (installed)
glibc = 2.17-222.el7
Available: glibc-2.17-196.el7.x86_64 (ultra-centos-7.4-base)
glibc = 2.17-196.el7
Available: glibc-2.17-196.el7_4.2.x86_64 (ultra-centos-7.4-updates)
glibc = 2.17-196.el7_4.2
Error: Package: gcc-4.8.5-16.el7_4.2.x86_64 (ultra-centos-7.4-updates)
Requires: libgomp = 4.8.5-16.el7_4.2
Installed: libgomp-4.8.5-28.el7_5.1.x86_64 (installed)
libgomp = 4.8.2-16.el7_5
libgomp = 4.8.5-28.el7_5.1
Available: libgomp-4.8.5-16.el7.x86_64 (ultra-centos-7.4-base)
libgomp = 4.8.5-16.el7
libgomp = 4.8.2-16.el7
Available: libgomp-4.8.5-16.el7_4.1.x86_64 (ultra-centos-7.4-updates)
libgomp = 4.8.5-16.el7_4.1
libgomp = 4.8.2-16.el7_4
Available: libgomp-4.8.5-16.el7_4.2.x86_64 (ultra-centos-7.4-updates)
libgomp = 4.8.5-16.el7_4.2
libgomp = 4.8.2-16.el7_4
Error: Package: 1:openssl-devel-1.0.2k-8.el7.x86_64 (ultra-centos-7.4-base)
Requires: openssl-libs(x86-64) = 1:1.0.2k-8.el7
Installed: 1:openssl-libs-1.0.2k-12.el7.x86_64 (installed)
openssl-libs(x86-64) = 1:1.0.2k-12.el7
Available: 1:openssl-libs-1.0.2k-8.el7.x86_64 (ultra-centos-7.4-base)
openssl-libs(x86-64) = 1:1.0.2k-8.el7
Error: Package: libkadm5-1.15.1-8.el7.x86_64 (ultra-centos-7.4-base)
Requires: krb5-libs(x86-64) = 1.15.1-8.el7
Installed: krb5-libs-1.15.1-19.el7.x86_64 (installed)
krb5-libs(x86-64) = 1.15.1-19.el7
Available: krb5-libs-1.15.1-8.el7.x86_64 (ultra-centos-7.4-base)
krb5-libs(x86-64) = 1.15.1-8.el7
Error: Package: krb5-devel-1.15.1-8.el7.x86_64 (ultra-centos-7.4-base)
Requires: krb5-libs(x86-64) = 1.15.1-8.el7
Installed: krb5-libs-1.15.1-19.el7.x86_64 (installed)
krb5-libs(x86-64) = 1.15.1-19.el7
Available: krb5-libs-1.15.1-8.el7.x86_64 (ultra-centos-7.4-base)
krb5-libs(x86-64) = 1.15.1-8.el7
Error: Package: libsepol-devel-2.5-6.el7.x86_64 (ultra-centos-7.4-base)
Requires: libsepol(x86-64) = 2.5-6.el7
Installed: libsepol-2.5-8.1.el7.x86_64 (installed)
libsepol(x86-64) = 2.5-8.1.el7
Available: libsepol-2.5-6.el7.x86_64 (ultra-centos-7.4-base)
libsepol(x86-64) = 2.5-6.el7
Error: Package: libselinux-devel-2.5-11.el7.x86_64 (ultra-centos-7.4-base)
Requires: libselinux(x86-64) = 2.5-11.el7
Installed: libselinux-2.5-12.el7.x86_64 (installed)
libselinux(x86-64) = 2.5-12.el7
Available: libselinux-2.5-11.el7.x86_64 (ultra-centos-7.4-base)
libselinux(x86-64) = 2.5-11.el7
You could try using --skip-broken to work around the problem
You could try running: rpm -Va --nofiles --nodigest
下面是服务器的详细信息,有什么解决办法吗?
yum repolist
Loaded plugins: changelog, fastestmirror, versionlock
Loading mirror speeds from cached hostfile
* epel: download.nus.edu.sg
* remi-php73: mirrors.thzhost.com
* remi-safe: mirrors.thzhost.com
repo id repo name status
MongoDB/7/x86_64 MongoDB Repository 62
*epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 13,463
ius/x86_64 IUS for Enterprise Linux 7 - x86_64 486
mongodb-org-3.4/7 MongoDB Repository 125
nodesource/x86_64 Node.js Packages for Enterprise Linux 7 - x86_64 106
remi-php73 Remi's PHP 7.3 RPM repository for Enterprise Linux 7 - x86_64 384
remi-safe Safe Remi's RPM repository for Enterprise Linux 7 - x86_64 4,006
ultra-centos-7.4-base UltraServe CentOS-7.4 - Base 7,407
ultra-centos-7.4-extras UltraServe CentOS-7.4 - Extras 401
ultra-centos-7.4-updates UltraServe CentOS-7.4 - Updates 1,836
ultra-centos-7.x-newrelic-monitoring UltraServe CentOS-7.x - New Relic Infrastructure Monitoring Agent 10
ultra-centos-7.x-ultrarepo UltraServe CentOS-7.x - UltraServe Repo Packages 50
repolist: 28,336
rpm -q centos-release
centos-release-7-5.1804.el7.centos.2.x86_64
php --version
PHP 7.3.23 (cli) (built: Sep 29 2020 08:33:03) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.23, Copyright (c) 1998-2018 Zend Technologies
remi-php73 Remi's PHP 7.3 RPM repository for Enterprise Linux 7 - x86_64 384
看起来你正在使用我的存储库,它提供 most extensions
因此,与其尝试从源代码构建它,我建议简单地使用可用的 RPM
yum install php-pecl-mongodb
或者如果您使用软件集
yum install php73-pecl-mongodb
如 Wizard
所述顺便说一句,安装问题似乎与 ultra-centos-7.4-base(甚至不知道这是什么)有关,因为您安装了 7.5
似乎 ultra-centos-7.4-base 与 AWS EC2 服务器一起提供。
对于面临相同依赖问题的人,您可以考虑通过以下方式更改 repos 源:
wget -O /etc/yum.repos.d/CentOS-Base.repo http://wiki.docking.org/index.php/CentOS_7_Base.repo
sed -i 's/$releasever/7/g' /etc/yum.repos.d/CentOS-Base.repo
仔细检查你的回购协议:
yum repolist
那么你应该可以 运行 yum install php-devel