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

Как заменить самостоятельно скомпилированные пакеты (php, mysql, memcached) на версию yum в centos 6.5

У меня есть как минимум 5 серверов разработки (dev, QA, staging), на которых php и другие пакеты скомпилированы из исходников. Я хотел бы удалить их все и обновить эти серверы пакетами yum. Если я смогу сделать это с помощью марионетки или повара, это будет здорово. Так:

  1. Как мне начать поиск пакетов, которые компилируются самостоятельно, и удалить их?
  2. Позже установить обновленную версию тех же пакетов через yum на сервере?
  3. Можно ли использовать puppet / chef для имитации изменений на серверах?

Как начать поиск пакетов, которые компилируются самостоятельно

На самом деле нет хорошего способа гарантировать, что вы получите их все

  • Обратитесь к документации по конфигурации.
  • Обратитесь к документации по сборке.
  • Поищите в обычных местах (/ usr / bin, / usr / local / bin и т. Д.)

но на самом деле нет хорошего способа гарантировать, что вы получите их все

и удали их

Это нетривиально, если в пакете не предусмотрена возможность удаления самого себя. Вы можете попробовать перекомпилировать пакеты, а затем переустановить их с помощью chroot или, если DESTDIR = drective

mkdir /tmp/package
make && make install DESTDIR=/tmp/package

Затем просмотрите содержимое / tmp / package или дерева chroot, чтобы получить список файлов, который затем можно использовать для удаления файлов из основного дерева файловой системы. Однако это зависит от того, знаете ли вы, какие параметры вы использовали для настройки сборки.

Позже установить обновленную версию тех же пакетов через yum на сервере?

yum install packagename

Можно ли использовать puppet / chef для имитации изменений на серверах?

Лучшее решение на этом этапе - начать заново. Выберите решение для управления конфигурацией и используйте его для построения согласованных систем

Затем установите базовую ОС

  • Используйте свое решение для управления конфигурацией для добавления и настройки пакетов
  • Проведите свои тесты
  • Если тесты не пройдут
    • Выяснить почему
    • управление конфигурацией обновлений
  • промыть и повторить, пока тесты не пройдут

К сожалению, очистить такую ​​ситуацию не очень просто. Во всяком случае, к следующему:

  1. составьте список того, что, по вашему мнению, было установлено вручную, это будет полезно
  2. самокомпилированные пакеты обычно находятся в / usr / local, / opt и других каталогах, отличных от стандартных. Взгляните на этот каталог, чтобы увидеть, что было установлено вручную
  3. после обнаружения установки вручную установите официальные пакеты через yum / rpm. Они будут установлены в / bin, / usr / bin и другие каталоги по умолчанию, поэтому они должен быть предпочтительной программой при вызове исполняемого файла (например: / usr / bin / php предпочтительнее / usr / local / bin / php). В любом случае, проверьте переменную PATH
  4. помните, что официальные пакеты будут установлены разные (возможно, более старая) версия уязвимого ПО. Если ваши приложения зависят от конкретной версии пакета, у них могут быть проблемы (например: если вы используете недавнюю установку Joomla, имейте в виду, что для нее нужен как минимум PHP 5.3.10+, а для CentOS - версия 5.3.3)
  5. я буду не используйте сценарий / методы автоматической настройки для выполнения этого действия. Это действительно требует ручного вмешательства, по крайней мере, первых серверов.

При условии, что у вас все еще есть скомпилированные исходники (я стараюсь сохранить их сам), многие современные пакеты поддерживают удалить цель. Просто make uninstall и, надеюсь, нужные файлы будут удалены. Если у вас их нет, перекомпилируйте их и установите, а затем удалите. Просто убедитесь, что у вас такая же версия.

Если это не сработает, вы можете попробовать установить пакеты дистрибутива и использовать rpm для ручного поиска файлов, которые не принадлежат ни одному пакету. Просто убедитесь, что все предыдущие файлы перезаписаны.