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"}
이것을 테스트 중인 서버에서는 모든 패키지를 설치할 수 있습니다. 그건 문제가되지 않습니다. 무슨 일인지 아이디어가 있나요? 저는 우분투 16.04에서 ansible 2.6.3을 실행 중이고 동일한 OS를 실행하는 다른 시스템에도 패키지를 설치하려고 합니다.
답변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 패키지로 계속 사용할 수 있습니다. 그러나 PHP 7.2용 PECL mcrypt용 패키지가 있는 Red Hat/Fedora와 달리 Ubuntu/Debian 패키지 작성자는 이를 패키지하지 않기로 결정했습니다. 필요한 고대 PHP 코드가 있는 경우 PECL에서 수동으로 설치할 수 있습니다.