ansible 中没有可用的符合 ** 要求的软件包

ansible 中没有可用的符合 ** 要求的软件包

我正在尝试使用 ansible 安装一系列软件包,但似乎不明白问题出在哪里。

- name: Add PHP 7.2 repo
  apt_repository:
         repo: ppa:ondrej/php
         state: present
  register: ppastable

- name: install php7.2-fpm and all necessary modules
  apt: name={{ item }} state=present
  with_items:
     - php7.2-fpm
     - php7.2-gd
     - php7.2-curl
     - php7.2-mysql
     - php7.2-mcrypt
     - php7.2-mbstring
     - php7.2-xml
  update_cache: true
  when: ppastable is success

但是,当我运行剧本时,出现以下错误:

failed: [172.31.110.103] (item=[u'php7.2-fpm', u'php7.2-gd', u'php7.2-curl', u'php7.2-mysql', u'php7.2-mcrypt', u'php7.2-mbstring', u'php7.2-xml']) => {"changed": false, "item": ["php7.2-fpm", "php7.2-gd", "php7.2-curl", "php7.2-mysql", "php7.2-mcrypt", "php7.2-mbstring", "php7.2-xml"], "msg": "No package matching 'php7.2-mcrypt' is available"}

在我测试的服务器上,所有软件包都可以安装。这不是问题。有什么想法吗?我在 ubuntu 16.04 上运行 ansible 2.6.3,并且尝试在运行相同操作系统的另一个系统上安装软件包。

答案1

您收到的错误的相关部分如下:

No package matching 'php7.2-mcrypt' is available

这是因为该功能已从 PHP 7.2 中删除,因此不再有相应的 Ubuntu/Debian 包。

文档状态:

This feature was DEPRECATED in PHP 7.1.0, and REMOVED in PHP 7.2.0.

该功能仍可作为外部 PECL 包使用。但与 Red Hat/Fedora 不同,后者有一个适用于 PHP 7.2 的 PECL mcrypt 包,而 Ubuntu/Debian 打包者选择不打包它。如果您有需要它的古老 PHP 代码,您仍然可以从 PECL 手动安装它。

相关内容