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

Должен ли я использовать версию пакета CentOS в (официальных) репозиториях или последние стабильные версии пакетов?

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

Итак, чтобы прояснить вопрос: на сервере под управлением CentOS 7 (или любого другого дистрибутива / версии Linux, если на то пошло) Лучше всего придерживаться версии пакета в репозитории Base / EPEL или можно получить последнюю стабильную версию сформировать сайт пакета? В данном случае я более конкретно имею в виду такие пакеты, как nginx, MariaDB и PHP 7. Например, каковы будут плюсы и минусы установки nginx 1.8.0 поверх EPEL версии 1.6.3? Есть ли различия в производительности или риски безопасности в любом случае?

Любые обсуждения и опыт приветствуются, попробуйте цитировать ресурсы и факты.

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

Однако иногда это невозможно. Чтобы сделать осознанный выбор, вам нужно было ответить на следующие вопросы:

  1. Предоставляют ли пакеты дистрибутива необходимые вам функции? Если да, то вы даже не нужно искать другие пакеты; просто используйте пакеты, предоставленные системными репозиториями.
  2. вам нужна официальная поддержка и / или вы должны соблюдать определенные правила? Если да, то вы не может использовать неофициальный репозиторий. В этом случае вы, вероятно, используете неправильный дистрибутив для своего программного проекта.
  3. если ответ на предыдущий вопрос был «нет», вам пришлось искать более свежую версию программного обеспечения. Существует хорошо известный репозиторий с нужным пакетом? Если да, воспользуйтесь им.
  4. если не существует конкретных репозиториев с хорошей репутацией, вам необходимо использовать исходное программное обеспечение. В таком случае, очень старайтесь использовать пакетное программное обеспечение (например: RPM, DEB, ecc), а не простой tar.gz (или подобные).

Ответы Мэтью Ифе и Shodanshok охватывают проблемы в целом, но я хочу решить вашу конкретную проблему, поместив проблемы в контекст, поскольку я управляю именно такими системами.

Моя текущая сборка для развертывания веб-приложений PHP / MySQL:

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

Как правило, я хочу, чтобы операционная система, в которой работает приложение, была как можно более стабильной, но с достаточно современным набором функций. Таким образом, я выберу CentOS 7 вместо CentOS 6, которая на данный момент довольно устарела, и хотя она будет работай, у него осталось не так много времени в жизненном цикле поддержки, поэтому я не буду использовать его для нового проекта.

Однако затем я столкнулся с проблемой, что версия nginx, включенная в CentOS, была слишком старый и не имел некоторых необходимых функций и исправлений ошибок. Поэтому я начал искать альтернативные пакеты и обнаружил, что nginx.org распространяет свои собственные. Я переключился на них почти сразу и обнаружил, что они идеально стабильны в течение длительного времени.

Затем есть PHP. Из истории я знаю, что версия PHP, поставляемая с CentOS, будет единственной версией, которую он когда-либо получит, и будет получать только обновления безопасности; никаких новых функций или исправлений ошибок. Таким образом, как только он перестанет поддерживать апстрим, я в конечном итоге не смогу запускать современные веб-приложения PHP, если буду использовать эти пакеты. Поэтому их тоже необходимо заменить.

Из многолетнего опыта я понял, что лучше всего отслеживать выпуски исправлений ошибок с помощью PHP, а не просто останавливать выпуск в какой-то момент и принимать только исправления безопасности, поскольку веб-приложения, которые я запускаю, также будут обновлены и потребуют этих исправлений. Итак, оценив множество различных наборов пакетов PHP, я остановился на паках remi. Реми является сотрудником Red Hat и также отвечает за пакеты PHP в RHEL / CentOS. Поэтому я знаю, что его посылки будут высокого качества, и они были такими. Они заменяют системные пакеты и отлично работают.

Наконец мы переходим к MariaDB. Вы жестяная банка решите оставить системные пакеты здесь и не пострадают. Я решил переключиться на пакеты MariaDB 10.0 (и скоро перейду на 10.1), чтобы воспользоваться преимуществами TokuDB и некоторыми другими улучшениями производительности, недоступными в версии 5.5, поставляемой с CentOS, и для которых она никогда не получит серьезных обновлений.


В целом вам нужна стабильность в вашей базовой системе, но веб-приложения меняются гораздо быстрее, чем, скажем, бизнес-программное обеспечение, и ваш сервер должен будет не отставать. Таким образом, я выбрал целевые точки, в которых обновление пакетов даст очевидные преимущества с небольшими дополнительными административными расходами (также известными как работа).

Короткий ответ: всегда используйте то, что предоставлено системными репозиториями. Быть очень осторожно какие репозитории вы тоже устанавливаете. Некоторые просто плохи.

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

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

  1. Некоторые репозитории просто в плохом состоянии. Они не обновляются исправлениями безопасности для пакетов.
  2. Люди склонны писать плохие RPM, они не помечают файлы конфигурации как файлы конфигурации, которые перезаписывают вашу конфигурацию при каждом обновлении, что может вызвать проблемы. Я видел эту проблему раньше.
  3. Они недостаточно декларируют свои зависимости должным образом. Я тоже видел это раньше, когда php пакет был помещен в систему, но не обновил pear пакет, в котором возникли проблемы.
  4. Установка нескольких репозиториев с одинаковыми именами пакетов может привести к непредвиденным проблемам с зависимостями в вашей системе.
  5. Некоторые пакеты перезаписывают или перезаписывают файлы конфигурации системы, от которых зависят или ожидают существования другие пакеты. Это приводит к проблемам с другими пакетами, которых вы могли не ожидать.

Никогда создавать пакеты из исходного кода и устанавливать их поверх имеющихся пакетов. Это нарушает целостность пакетов вашей системы, что может привести к странным проблемам ABI, таким как получение unresolved symbol или undefined reference Сообщения. Очень важно, чтобы система поддерживала надежный и точный индекс того, какое программное обеспечение было развернуто в данной системе, чтобы гарантировать, что все это работает правильно друг с другом, это причина, по которой мы используем RPM в первую очередь.

Жизнеспособный (и благословенный Redhat) способ решить эту проблему - использовать коллекции программного обеспечения.

www.softwarecollections.org

Он устанавливает программное обеспечение и его «новые» зависимости в свой собственный корень. Это может немного усложнить применение пакета в вашей среде, но действительно защищает вашу систему от странных ошибок или проблем. Он также устанавливает пакеты в их собственном пространстве имен, что позволяет устанавливать несколько версий пакета параллельно.

На веб-сайте даются инструкции по установке и активации этих пакетов, он содержит большую часть того, что люди упускают из старых версий CentOS и Redhat (в частности, EL6). Некоторые вещи я успешно использовал с этого сайта.

  • MySQL 5.6 и MySQL 5.7, MariaDB.
  • PHP 5.5 и PHP 5.6
  • Apache 2.4

Обратите внимание, что ваша позиция по умолчанию в этом вопросе должна заключаться в том, чтобы не отклоняться от того, что продвигают репозитории Redhat. Вместо этого оцените, действительно ли вам нужна обновленная версия пакета, в частности, каковы ваши конкретные требования, какие проблемы он должен исправить и какие риски это несет.

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