![AWS AMI 上的 yum 缺少 php-mcrypt 包](https://linux22.com/image/717081/AWS%20AMI%20%E4%B8%8A%E7%9A%84%20yum%20%E7%BC%BA%E5%B0%91%20php-mcrypt%20%E5%8C%85.png)
似乎 EC2 上的 Amazon AMI 的新版本没有可用的 php-mcrypt 包。我该如何获取它?
$ sudo yum install php-mcrypt
Loaded plugins: langpacks, priorities, update-motd
amzn2-core
No package php-mcrypt available.
Error: Nothing to do
一般来说,我该如何解决类似这样的“丢失包裹”问题?
答案1
我可以php-mcrypt
按照建议进行安装在本页使用 EPEL for EL 7 进入 AWS 版本 2.0 (2017.12) Linux。
这是一个运行 Amazon Linux 2(2017.12)的 Amazon 实例,我用它来测试...
# cat /etc/system-release
Amazon Linux release 2.0 (2017.12) LTS Release Candidate
# curl http://169.254.169.254/latest/meta-data/ami-id
ami-428aa838
亚马逊的人声称 AWS 发行版是没有具体依据在任何版本的 RedHat 上,所以无法保证兼容性但是,比较 EPEL for Enterprise Linux 7 中的 PHP 包版本和亚马逊的版本,表明它们是从同一来源构建的;
例如,来自和的Version : 5.4.16
软件包的版本号完全相同amzn2-core
epel
Name : php-mcrypt
Version : 5.4.16
Release : 7.el7
From repo : epel
对比
Name : php
Version : 5.4.16
Release : 43.amzn2.0.1
From repo : amzn2-core
因此,我并不惊讶 epel 的软件包在 2017.12 AWS AMI 上安装没有问题......
# yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
...
Installing : epel-release-7-11.noarch 1/1
Verifying : epel-release-7-11.noarch 1/1
Installed:
epel-release.noarch 0:7-11
Complete!
然后安装php-mcrypt
;
# yum install -y --enablerepo=epel php-mcrypt
Running transaction test
Transaction test succeeded
Running transaction
Installing : libmcrypt-2.5.8-13.el7.x86_64 1/2
Installing : php-mcrypt-5.4.16-7.el7.x86_64 2/2
Verifying : libmcrypt-2.5.8-13.el7.x86_64 1/2
Verifying : php-mcrypt-5.4.16-7.el7.x86_64 2/2
Installed:
php-mcrypt.x86_64 0:5.4.16-7.el7
Dependency Installed:
libmcrypt.x86_64 0:2.5.8-13.el7
Complete!
然后您可以测试一下 mcrypt 扩展是否已经安装,如下所示;
# php -i "(command-line 'phpinfo()')" | grep mcrypt
/etc/php.d/mcrypt.ini,
Registered Stream Filters => zlib.*, bzip2.*, convert.iconv.*, string.rot13, string.toupper, string.tolower, string.strip_tags, convert.*, consumed, dechunk, mcrypt.*, mdecrypt.*
mcrypt
mcrypt support => enabled
mcrypt_filter support => enabled
mcrypt.algorithms_dir => no value => no value
mcrypt.modes_dir => no value => no value
我还禁用了 epel,因为我不想最终混合使用来自两个存储库的软件包而超出最低限度;
yum-config-manager --disablerepo=epel
# yum repolist all
Loaded plugins: langpacks, priorities, update-motd
repo id repo name status
amzn2-core/2017.12/x86_64 Amazon Linux 2 core enabled: 7,157
epel/x86_64 Extra Packages disabled
答案2
我对其进行了深入研究并使其发挥作用。
尝试这个。
# amazon-linux-extras install epel
# yum install php-mcrypt
答案3
找到了一个更简单的解决方案。只需运行:
yum install php-pecl-mcrypt
这适用于 PHP 7.3 和 Amazon Linux 2