Назад | Перейти на главную страницу

Рецепт от шеф-повара - для удаления пакета, если вы не знаете точное название пакета.

Я знаю о ресурсы пакета, я борюсь, как мне найти точное имя пакета? Поскольку на разных узлах будут разные версии ОС, как написать рецепт удаления конкретного пакета для всех?

Как например NFS

Вам не нужно указывать точное имя пакета до уровня архитектуры, версии и исправления. Вам нужно только знать этот пакет название а основной менеджер пакетов позаботится обо всем остальном.

Поскольку у меня под рукой есть только CentOS 6, с которым можно поиграть:

rpm -qa | grep php           # OR similar:
yum list installed |grep php

php-5.3.3-40.el6_6.x86_64
php-common-5.3.3-40.el6_6.x86_64
php-cli-5.3.3-40.el6_6.x86_64
php-pear-1.9.4-4.el6.noarch
php-pecl-apc-3.1.9-2.el6.x86_64
php-devel-5.3.3-40.el6_6.x86_64

перечислить все установленные пакеты и отфильтровать по php. Затем отобразите информацию о пакете с помощью yum info

yum info php-pecl-apc-3.1.9-2.el6.x86_64 

Installed Packages
Name        : php-pecl-apc
Arch        : x86_64
Version     : 3.1.9
Release     : 2.el6
Size        : 318 k
Repo        : installed
From repo   : base
Summary     : APC caches and optimizes PHP intermediate code
URL         : http://pecl.php.net/package/APC
License     : PHP
Description : APC is a free, open, and robust framework for caching and optimizing PHP
            : intermediate code.

а затем использовать его в Chef имя пакета php-pecl-apc достаточно.

Имена пакетов по большей части одинаковы для разных выпусков.

Короче говоря, вам нужно потратить некоторое время на изучение соответствующего диспетчера пакетов, потому что удаление пакетов может не повлиять на другие установленные пакеты, которые требуют этого в качестве зависимости.

Типичный подход заключается в использовании оператора case для установки имени пакета в зависимости от платформы или семейства платформ. Из https://docs.chef.io/resource_package.html

package 'Install Apache' do
  case node[:platform]
  when 'redhat', 'centos'
    package 'httpd'
  when 'ubuntu', 'debian'
   package 'apache2'
 end
end